我正在使用最新的gomobile、Go和Android构建。
当我从终端运行gradle任务时,它们按照预期工作,并构建正确的二进制文件,但是在Android中,我收到一个错误:
bin/gomobile: toolchain out of date, run `gomobile init`当然,我已经运行了很多次,但没有改变。我的假设是,Android正在使用一些我无法识别的配置。
我理解这是一个有点边缘的案例问题,但如果有人能指出正确的方向,这将是有帮助的。
./gradlew :绑定在终端中工作良好,在Android中失败。
发布于 2017-02-26 04:25:05
我已经弄清楚了这件事的真相,以防其他人有这个问题;
我已经安装了许多Go版本(出于各种原因),所以我的强制gobin失败了。为了发现这一点,我将调试日志添加到env.go文件中。通常,在尝试调试时,文件上的日志记录并不是最清楚的。
发布于 2017-02-26 01:42:36
这似乎是一个移动错误消息,在cmd/gomobile/env.go#L69-L83中可以看到。
// Find gomobilepath.
gopath := goEnv("GOPATH")
for _, p := range filepath.SplitList(gopath) {
gomobilepath = filepath.Join(p, "pkg", "gomobile")
if _, err := os.Stat(gomobilepath); buildN || err == nil {
break
}
}
verpath := filepath.Join(gomobilepath, "version")
installedVersion, err := ioutil.ReadFile(verpath)
if !bytes.Equal(installedVersion, version) {
return nil, errors.New("toolchain out of date, run `gomobile init`")
}因此,在本地会话和Android会话之间反复检查GOPATH的值。
例如,请参阅这个旧的(2015年)线程以查看这些注释是否仍然适用。
https://stackoverflow.com/questions/42463743
复制相似问题