go x/mobile:反向绑定不再起作用?

xmq68pz9  于 5个月前  发布在  Go
关注(0)|答案(3)|浏览(47)

你正在使用的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

你期望看到什么?

一个成功的编译

你看到了什么?

一个成功编译,但方法被忽略。

jvlzgdj9

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)来完成它。
我现在没有其他选择了。

oyjwcjzk

oyjwcjzk3#

我也需要这个,看到它被忽略了感到失望。

相关问题