2009-11-12 252 views
7

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

在线搜索,我发现一个referenceAndroid specific implementation。不幸的是,似乎没有关于它的文档,并且从标准.proto文件生成的代码与它不兼容。有没有人用过它?如何从这个实现的.proto文件生成代码?还有其他轻量级替代品吗?

回答

1

只是为了重振任何人看到它这个古老的线程,答案是当他们提到自己使用方的电线库(https://github.com/square/wire

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

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

当然Proguard的,全新的Android 2.0缩小工具,[其他通用的答案],等等等等

6

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

+0

嘛而且,我猜问题是,几乎一倍的应用程序的大小。只是有点不吸引人的东西。 – kwogger 2009-11-26 23:20:52

2

有没有其他的轻量级替代品?

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

This网站是关于“比较序列化性能和JVM上的序列化库的其他方面”。你会发现那里列出的许多选择。

虽然没有此刻的不同实现的内存占用的提及,我相信它是人们对维基会感兴趣的度量。

+0

谢谢,不是我在找什么,但是有用的信息。 – kwogger 2009-12-04 21:36:00