Android和协议缓冲区

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

在线search,我find了一个Android特定实现的参考 。 不幸的是,似乎没有任何文档,标准.proto文件生成的代码与它不兼容。 有没有人用过它? 如何从.proto文件为此实现生成代码? 有没有其他轻量级的select?

Solutions Collecting From Web of "Android和协议缓冲区"

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

当他们提到自己时:

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

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

当然还有Proguard,新的Android 2.0 minify工具,[其他通用答案]等

我知道这不是对你的问题的直接回答,但额外的30kb对我来说听起来并不好。 即使在EDGE上,也只需要额外的1到2秒的时间下载。 而且android的内存很紧,但是并不那么紧–30 kb只是可用应用程序内存空间百分之一的十分之一。

有没有其他轻量级的select?

我将这意味着“使用协议缓冲区”,而不是“与Android应用程序一起使用协议缓冲区”。 我很抱歉,如果你已经承诺协议缓冲区。

这个网站是关于“比较序列化性能和JVM上的序列化库的其他方面”。 你会发现在那里列出的许多替代品。

虽然目前没有提及不同实现的内存占用情况,但我确信这是wiki上的人们感兴趣的度量标准。

在您的项目上使用ProGuard [1]。 它会减less包含在APK文件中的jar子的大小。

[1] http://developer.android.com/guide/developing/tools/proguard.html