Flutter在苹果芯片Mac构建时报错找不到protoc-3.9.2-osx如何解决
错误原因
- 你使用的3.9.2版本protobuf发布时间早于苹果Arm架构Mac的发布时间,官方未提供对应
osx-aarch_64架构的protoc二进制包,Windows系统对应x86架构有匹配的包,因此可以正常构建。 - Android端Gradle的protobuf插件会自动匹配当前设备架构拉取对应protoc包,资源不存在就抛出构建失败错误。iOS端构建时同样依赖本地protoc工具链,旧版本不适配Arm架构也会触发报错。
可行解决方法
- 方案一(优先推荐):升级protobuf版本到3.18.0及以上,该版本开始官方已适配苹果Arm架构Mac的protoc包。分别修改项目和原生依赖包内的protobuf版本声明即可:Android端修改build.gradle中
com.google.protobuf:protoc的版本号,iOS端修改Podfile内Protobuf的依赖版本。 - 方案二(兼容旧版本需求):如果业务场景不能升级protobuf版本,可通过Rosetta转译运行Android Studio:右键Finder中的Android Studio图标,选择「显示简介」,勾选「使用Rosetta打开」,重启后重新构建即可。此时Gradle会识别设备为x86_64架构,拉取对应版本的osx-x86_64架构protoc包,可通过Rosetta正常运行。
- 方案三(手动指定工具):提前在本地安装适配Arm架构的对应版本protoc,可通过Homebrew编译安装或手动下载适配包,之后在Android项目build.gradle的protobuf配置块中添加
protoc { path = '本地protoc的绝对路径' },iOS端在Pod配置中指定本地protoc路径即可。
内容的提问来源于stack exchange,提问作者Dev Loots
相关产品推荐
相关产品推荐

