你正在使用的Go版本是什么( go version
)?
$ go version
go version go1.17.6 linux/amd64
$ gomobile version
golang.org/x/mobile/cmd/gomobile@latest
这个问题在最新版本中是否重现?
是的
你正在使用什么操作系统和处理器架构( go env
)?
go env
输出
$ go env
go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/root/sdk/go1.17.6"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/root/sdk/go1.17.6/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.6"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/build2/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2412464046=/tmp/go-build -gno-record-gcc-switches"
你做了什么?
在一个使用了反向绑定的模块中创建了一个文件:
package gomobiletest
import (
"log"
"Java/android/content"
)
func Test(androidctx content.Context) {
apkPath := androidctx.GetPackageResourcePath()
log.Println(appPath)
}
然后运行gomobile bind
你期望看到什么?
一个成功的编译
你看到了什么?
一个成功编译,但方法被忽略。
3条答案
按热度按时间oknwwptz1#
cc @hyangah
jvlzgdj92#
在之前有一个示例(https://github.com/golang/mobile/tree/37c5126484a7fd3b7987809e9f68f1ba4e7a5341/example/reverse),但是它是用gradle插件构建的。
由于无法稳定地访问Android中的xml布局,所以将其移除了。但通常情况下,我们只是想调用一些Java方法(出于某些原因,我不得不这样做,比如在go中获取Android ID)。
Android Studio支持C语言,但不支持Golang;IDEA支持Golang,但不支持C:(
所以我不想使用CGo(jni)来完成它。
我现在没有其他选择了。
oyjwcjzk3#
我也需要这个,看到它被忽略了感到失望。