protobuff是Google开源的一个二进制协议,被广泛应用与各大项目中。类似的还有腾讯MIG的JCE,原理上都是通过序号设置成员变量位置,然后实现序列化。但是在集成protobuff到Android中时,由于通过protobuf脚本生成的JAVA文件,含有大量的方法,稍微多生成几个类,就会造成方法方法数超64k。通过在gradle中设置:
android {
.......
defaultConfig {
.......
multiDexEnabled true
}
.......
可以解决通过生成多个dex文件解决编译问题。但是会造成包变大 and 各种莫名其妙的低版本兼容问题,因此要求是严格控制方法数在64K以内。
所以,在Android集成protobuff时候,不能使用google官方的集成方法,改为使用“Square wire”项目。
项目主页:
https://github.com/square/wire
集成方法:
1、gradle中加入项目组件。