使用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版本,选择对应的gomobile版本号来安装。go install golang.org/x/mobile/cmd/gomobile@v0.0.0-20230208163806-748f6b77b35e
最后,所有步骤做完后,再重新执行你的打包命令:
gomobile bind -v -target=android -androidapi 21 -o output.aar ./mypackage
另外提醒下,执行命令的时候尽量在项目的根目录下(就是你放go.mod的那个文件夹),这样Go Modules能正确识别依赖路径~




