duanliang8464 2017-02-06 15:34
浏览 153
已采纳

无法获得Gomobile绑定以使用Java

Go version: 1.7.5

GOPATH = D:/GoWork

React Native version 0.41

Code below is the binding go package at D:\GoWork\srcngongongo.go

Very simple, just returning a string

package rngo

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

Running the below command from > D:\GoWork\srcngo

gomobile bind -target android -o rngo.aar -v  .

Verbose Output below seems to be fine

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_armngongo.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\javango\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_bindngo.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 dk-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 dk-bundle\platforms\android-21\arch-x86_64/usr/lib/liblog.so while searching for log

D:\Android\sdk dk-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 dk-bundle\platforms\android-21\arch-x86_64/usr/lib/libdl.so while searching for dl

D:\Android\sdk dk-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 dk-bundle\platforms\android-21\arch-x86_64/usr/lib/libc.so while searching for c

D:\Android\sdk dk-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 dk-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/

Successfully created rngo.aar since there is no error message and I can see that file at D:\GoWork\srcngongo.aar

I then manually import rngo.aar file into React Native project from android studio

  1. File > New > New Module > Import .aar/.jar Package > #give the path to rngo.aar#
  2. File > Project Structure > app > Dependencies > Module dependency > rngo.aar

Inside IDE, in MainActivity.java I can successfully do 'import go.rngo.*;', but I cannot get 'go.rngo.Rngo.RNcall()' or 'go.rngo.Rngo;' to work

enter image description here

Building this android app throws error 'cannot find symbol'

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

Conclusion

I am doing something horribly wrong, that I cannot get this simple thing to work. I wasted whole day on google but with no avail. Hence I need help getting this to work. All I need is a simple go code with that connects to react native hasselfree.

Thanks for reading all this. I appreciate it.

  • 写回答

1条回答 默认 最新

  • dongshiran7000 2017-02-08 04:52
    关注

    Thanks to eliasnaur. Finally, I got this working. As of go 1.7.* you dont have access to go package. Instead access your package directly like this

    Before:

    import go.rngo.Rngo;
    

    After:(Since 1.7.*)

    import rngo.Rngo;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试