我已成功编写了一个go移动库,并在Android Java应用程序中使用它。
我也成功地从JNI调用了一个c函数。这个有JNIEnv指针。
我想将上下文/ JNIEnv从Java传递给Go。
这里似乎变得复杂了:
import "Java/java/lang/System"
t := System.CurrentTimeMillis()
回报
cannot find package "Java/java/lang/System" in any of:
/usr/local/go/src/Java/java/lang/System (from $GOROOT)
/Users/----/go/src/Java/java/lang/System (from $GOPATH)
在C中我用编译器指令解决了它:#cgo CFLAGS:-I ...
但我不确定如何为Java做这件事
简而言之,我现在卡住了,并希望得到帮助。理想情况下,如果可能的话,我只想将对象作为参数传递。但是,我决定使用任何反向绑定来从Go调用Java。
我讨厌回答我自己的问题,但我也讨厌有人经历过这个问题。随着我的进展,我会更新这个答案。
基本设置
编辑build.gradle并将GOPATH和GO添加到gobind(以粗体添加):
gobind {
pkg = ".../reverse/reverse"
GOPATH = "/Users/johndoe/go"
GO = "/usr/local/go/bin"
}
如何发展
缺少gobind
事实证明,安装过程被忽略了构建gobind。运行go install golang.org/x/mobile/cmd/gobind
我被困了
试图修改反向项目以执行除已经执行的操作之外的任何操作都会失败。即使传递对象和调用toString等内容也会失败。
更多......