Android和协议缓冲区

kwo*_*ger 7 serialization android protocol-buffers

我正在编写一个Android应用程序,它既可以存储数据,也可以使用协议缓冲区与服务器通信.但是,使用LITE标志(在JAR库和生成的.java文件中)编译的协议缓冲区的库存实现具有~30 KB的开销,其中程序本身仅为~30 KB.换句话说,协议缓冲区使程序大小加倍.

网上搜索,我发现了一个参考Android的具体实施.不幸的是,它似乎没有文档,并且从标准.proto文件生成的代码与它不兼容.有人用过吗?如何从.proto文件生成此实现的代码?还有其他轻量级替代品吗?

emm*_*mby 6

我知道这不是你问题的直接答案,但额外的30kb对我来说听起来并不坏.即使在EDGE上,下载也只需要1到2秒.Android上的内存很紧,但并不紧张 - 30 kb只占可用应用程序内存空间百分之一的1/10.


SJo*_*shi 1

为了让任何人都能看到这个古老的线程,答案是使用 Square 的 Wire 库(https://github.com/square/wire

正如他们自己提到的:

有线消息声明公共最终字段而不是通常的 getter 方法。这减少了生成的代码和执行的代码。更少的代码对于 Android 程序特别有利。

我相信他们也在内部使用 Lite 运行时进行构建。

当然还有 Proguard、新的 Android 2.0 缩小工具、[其他通用答案]等等。