java - 无法获得 gomobile 绑定(bind)以使用 java

标签 java android go react-native gomobile

Go版本:1.7.5

GOPATH = D:/GoWork

React Native 0.41 版

下面的代码是 D:\GoWork\src\rngo\rngo\rngo.go 的绑定(bind) go 包

很简单,就是返回一个字符串

package rngo

// RNcall is used to bind with RN
func RNcall()  string {
    return "From Go platform"
}

从 > D:\GoWork\src\rngo

运行以下命令
gomobile bind -target android -o rngo.aar -v  .

下面的详细输出似乎没问题

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.go

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.h

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.c

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gen\src\Java\interfaces.go rngo/rngo

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\fakegopath\pkg\android_arm\rngo\rngo.a write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\go_rngomain.go

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\go_main.go

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\androidlib\main.go

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\rngo\Rngo.java

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\java_rngo.c

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\rngo.h

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\go\Universe.java

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\go\error.java

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\java_universe.c

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\universe.h

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq_android.go

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq_android.c

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq.h

write C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq.go

Java /C/Users/Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind command-line-arguments rngo/rngo Java

/C/Users/Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind command-line-arguments rngo/rngo Java

/C/Users/Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind command-line-arguments rngo/rngo Java

/C/Users/Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind

/# /C/Users/Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind

D:\Android\sdk\ndk-bundle\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/bin\ld: warning: skipping incompatible D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/liblog.so while searching for log

D:\Android\sdk\ndk-bundle\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/bin\ld: warning: skipping incompatible D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libdl.so while searching for dl

D:\Android\sdk\ndk-bundle\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/bin\ld: warning: skipping incompatible D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libc.so while searching for c

D:\Android\sdk\ndk-bundle\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/bin\ld: warning: skipping incompatible D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libdl.so while searching for dl

command-line-arguments

aar: AndroidManifest.xml

aar: proguard.txt

aar: classes.jar

jar: META-INF/MANIFEST.MF

jar: go/LoadJNI.class

jar: go/Seq$GoObject.class

jar: go/Seq$Proxy.class

jar: go/Seq$Ref.class

jar: go/Seq$RefMap.class

jar: go/Seq$RefTracker.class

jar: go/Seq.class jar: go/Universe$proxyerror.class jar: go/Universe.class

jar: go/error.class

jar: rngo/Rngo.class

aar: jni/armeabi-v7a/libgojni.so

aar: jni/arm64-v8a/libgojni.so

aar: jni/x86/libgojni.so

aar: jni/x86_64/libgojni.so

aar: R.txt

aar: res/

成功创建 rngo.aar,因为没有错误消息,我可以在 D:\GoWork\src\rngo\rngo.aar 看到该文件

然后我手动将 rngo.aar 文件从 android studio 导入 React Native 项目

  1. File > New > New Module > Import .aar/.jar Package > #give the path 到 rngo.aar#
  2. 文件 > 项目结构 > 应用程序 > 依赖项 > 模块依赖 > rngo.aar

在 IDE 中,在 MainActivity.java 中,我可以成功地执行 'import go.rngo.*;',但我无法获取 'go.rngo.Rngo.RNcall()''go.rngo.Rngo;' 工作

enter image description here

构建此 Android 应用会抛出错误“找不到符号”

D:\RN\gomobile\android\app\src\main\java\com\gomobile\RngoModule.java:10: error: cannot find symbol

import go.rngo;
^

symbol: class rngo
location: package go
1 error
:app:compileDebugJavaWithJavac FAILED

enter image description here

结论

我正在做一些非常错误的事情,我无法让这个简单的东西工作。我在谷歌上浪费了一整天,但无济于事。因此我需要帮助让它工作。我所需要的只是一个简单的 go 代码,它连接到 react native hasselfree。

感谢您阅读所有这些内容。我很感激。

最佳答案

感谢eliasnaur .最后,我得到了这个工作。从 go 1.7.* 开始,您无权访问 go 包。而是像这样直接访问你的包

之前:

import go.rngo.Rngo;

之后:(自 1.7.* 起)

import rngo.Rngo;

关于java - 无法获得 gomobile 绑定(bind)以使用 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42071515/

相关文章:

java - 使用 Java 8 Streams 将 List<Object> 转换为 Map<String, Integer> 使得 String 不是重复值

java - 错误页面上不显示西里尔文字

Java - 程序没有跳出循环?

Javac Ant 任务无法找到类,即使它包含在类路径中

go - 如何在保存时设置 vscode 格式的 golang 代码?

go - slice 边界超出范围错误,我没有任何 slice 变量

debugging - 在vs-code中调试go-lang时如何指定生成的调试二进制文件的路径

java - 使用 setOnClickListener 重新启动应用程序

android - 如何用 Java 为 Android 编写随机报价生成器?

Android 服务作为单独进程运行