【问题标题】:Cannot get gomobile binding to work with java无法让 gomobile 绑定与 java 一起使用
【发布时间】:2017-06-23 14:45:34
【问题描述】:

Go 版本:1.7.5

GOPATH = D:/GoWork

React Native 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 command-line-arguments 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: 警告:跳过不兼容 D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libdl.so 在搜索 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: 警告:跳过不兼容 D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libc.so 在搜索 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: 警告:跳过不兼容 D:\Android\sdk\ndk-bundle\platforms\android-21\arch-x86_64/usr/lib/libdl.so 在搜索 dl 时

命令行参数

aar: AndroidManifest.xml

aar: proguard.txt

aar: 类.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 看到该文件

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

  1. 文件 > 新建 > 新模块 > 导入 .aar/.jar 包 > #给出路径 到 rngo.aar#
  2. 文件 > 项目结构 > 应用程序 > 依赖项 > 模块依赖 > rngo.aar

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

构建这个安卓应用会抛出错误'找不到符号'

D:\RN\gomobile\android\app\src\main\java\com\gomobile\RngoModule.java:10: 错误:找不到符号

导入 go.rngo;
^

符号:rngo 类
位置:包去
1 个错误
:app:compileDebugJavaWithJavac 失败

结论

我做错了什么,我无法让这个简单的事情发挥作用。我在谷歌上浪费了一整天,但无济于事。因此,我需要帮助才能使其正常工作。我所需要的只是一个简单的 go 代码,它可以连接到响应本机 hasselfree。

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

【问题讨论】:

    标签: java android go react-native gomobile


    【解决方案1】:

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

    之前:

    import go.rngo.Rngo;
    

    之后:(从 1.7.* 开始)

    import rngo.Rngo;
    

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 2019-10-31
      • 2014-10-31
      • 2018-01-02
      • 2016-11-14
      • 2015-02-01
      相关资源
      最近更新 更多