You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用gomobile bind构建Android AAR时提示"no Go package in golang.org/x/mobile/bind"错误

gomobile bind构建Android AAR时提示"no Go package in golang.org/x/mobile/bind"错误

我之前用gomobile打包Android AAR的时候也碰到过一模一样的错误,折腾了好一会儿才搞定,给你分享几个亲测有效的解决思路:

1. 重新安装并初始化gomobile(最常见的解决办法)

现在Go 1.16+推荐用模块方式安装gomobile,旧的安装方式很容易导致依赖缺失:

  • 先清理可能存在的旧版本gomobile:
    go clean -i golang.org/x/mobile/cmd/gomobile
    
  • 用模块方式安装最新版gomobile:
    go install golang.org/x/mobile/cmd/gomobile@latest
    
  • 关键一步:初始化gomobile的Android环境,这一步会自动拉取所有需要的依赖包(包括报错里的golang.org/x/mobile/bind):
    gomobile init -android
    

2. 检查Go模块代理设置(国内环境必看)

国内网络有时候拉取不到golang.org域名下的包,导致依赖缺失,你可以临时设置国内的Go代理:

  • 在终端执行以下命令(macOS/Linux通用):
    export GOPROXY=https://goproxy.cn,direct
    
  • 设置完成后,重新执行上面的gomobile安装和初始化命令,依赖就能正常拉取了。

3. 手动添加依赖到项目的go.mod

如果你的项目已经启用了Go Modules,也可以手动把golang.org/x/mobile添加到依赖中:

  • 在项目根目录(有go.mod的目录)执行:
    go get golang.org/x/mobile@latest
    
  • 执行完后检查go.mod文件,应该会看到golang.org/x/mobile的依赖项,这时候再跑你的bind命令试试。

4. 匹配gomobile和Go版本(版本兼容问题)

如果你的Go版本比较旧(比如Go 1.19及以下),最新版的gomobile可能会有兼容性问题,这时候可以指定对应版本的gomobile安装:

  • 比如针对Go 1.19,安装这个兼容版本的gomobile:
    go install golang.org/x/mobile/cmd/gomobile@v0.0.0-20230208163806-748f6b77b35e
    
    你可以根据自己的Go版本,选择对应的gomobile版本号来安装。

最后,所有步骤做完后,再重新执行你的打包命令:

gomobile bind -v -target=android -androidapi 21 -o output.aar ./mypackage

另外提醒下,执行命令的时候尽量在项目的根目录下(就是你放go.mod的那个文件夹),这样Go Modules能正确识别依赖路径~

火山引擎 最新活动