Protobuf是Google开发的一种新的结构化数据存储格式,一般用于结构化数据的串行化,即我们常说的数据序列化。这种序列化的协议非常轻便高效,而且是跨平台的,目前已支持多种主流语言,并且比传统的XML, JSON等方式更具优势。详情可以参考:Google protocol buffer。不过,最近在使用Protobuf时候报了如下的一个错误。
Execution failed for task ':columbus:generateDebugProto'.
> Could not resolve all files for configuration ':columbus:protobufToolsLocator_protoc'.
> Could not find protoc-3.0.0-osx-aarch_64.exe (com.google.protobuf:protoc:3.0.0).
Searched in the following locations:
https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.0.0/protoc-3.0.0-osx-aarch_64.exePossible solution:
- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
【关于MAC M1处理器运行Android protoc报错的解决方案】解决的方法是更换protoc的地址,如果我们直接打开
https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.0.0/protoc-3.0.0-osx-aarch_64.exe
,会发现网页时打不开,所以我就去掉后面的版本号,打开下面的链接:https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/
得到protoc的版本如下:
文章图片
所以,我们只需要找到下面的代码,在
com.google.protobuf:protoc:3.0.0
中添加osx-x86_64即可。protoc {
artifact = 'com.google.protobuf:protoc:3.0.0'
}
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}//变更后
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0:osx-x86_64'
}
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0:osx-x86_64'
}
}
推荐阅读
- 我理解的Android|Material Design组件 - 使用BottomSheet展现扩展内容(一)
- Flutter|Flutter使用小技巧三(持续更新)
- 程序员|Flutter 10天高仿大厂App及小技巧积累总结,被阿里面试官征服了
- Flutter|【Flutter】Android原生WebView(非Flutter WebView)与FlutterWeb交互
- 程序员|Flutter(实战技巧,最新阿里Android高级面试题及答案)
- Android开发|Flutter 小技巧之 MediaQuery 和 build 优化你不知道的秘密
- java|第十六课(Android打包发布)
- Android getActionBar() 返回null
- Android开发的日常记录|【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名