去版本:1.7.5
GOPATH = D:/GoWork
反应原生版本 0.41
下面的代码是D:\GoWork\src\rngo\rngo\rngo.go的绑定 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 .
下面的详细输出似乎很好
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.go
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.h
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.c
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gen\src\Java\interfaces.go rngo/rngo
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\fakegopath\pkg\android_arm\rngo\rngo.a 写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675 \gomobile_bind\go_rngomain.go
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\go_main.go
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\androidlib\main.go
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\rngo\Rngo.java
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\java_rngo.c
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\rngo.h
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\go\Universe.java
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\go\error.java
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\java_universe.c
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\universe.h
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq_android.go
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq_android.c
写 C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq.h
写 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 命令行参数 rngo/rngo Java
/C /Users/Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind 命令行参数 rngo/rngo Java
/C /Users/Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind 命令行参数 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: 警告:在搜索日志时跳过不兼容的 D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/liblog.so
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: 警告:在搜索 dl 时跳过不兼容的 D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libdl.so
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: 警告:在搜索 c 时跳过不兼容的 D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libc.so
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: 警告:在搜索 dl 时跳过不兼容的 D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libdl.so
命令行参数
aar:AndroidManifest.xml
aar: proguard.txt
aar:classes.jar
罐子:META-INF/MANIFEST.MF
罐子:去/LoadJNI.class
罐子:去/Seq$GoObject.class
罐子:去/Seq$Proxy.class
罐子:去/Seq$Ref.class
罐子:去/Seq$RefMap.class
罐子:去/Seq$RefTracker.class
jar: go/Seq.class jar: go/Universe$proxyerror.class jar: go/Universe.class
罐子:去/error.class
罐子: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:水库/
成功创建rngo.aar,因为没有错误消息,我可以在D:\GoWork\src\rngo\rngo.aar看到该文件
然后我从 android studio 手动将 rngo.aar 文件导入到 React Native 项目中
- 文件 > 新建 > 新建模块 > 导入 .aar/.jar 包 > #给出 rngo.aar 的路径#
- 文件 > 项目结构 > 应用程序 > 依赖项 > 模块依赖项 > rngo.aar
在 IDE 中,在 MainActivity.java 中我可以成功执行“import go.rngo.*;” ,但我无法获得“go.rngo.Rngo.RNcall()”或“go.rngo.Rngo;” 去工作
构建这个 android 应用程序会引发错误“找不到符号”
D:\RN\gomobile\android\app\src\main\java\com\gomobile\RngoModule.java:10:错误:找不到符号
导入 go.rngo;
^符号:rngo 类
位置:包 go
1 错误
:app:compileDebugJavaWithJavac FAILED
结论
我正在做一些非常错误的事情,我无法让这个简单的事情发挥作用。我在谷歌上浪费了一整天,但无济于事。因此,我需要帮助才能使其正常工作。我所需要的只是一个简单的 go 代码,它连接到响应本地 hasselfree。
感谢您阅读这一切。我很感激。