2009-11-12 22 views
7

Estoy escribiendo una aplicación de Android que almacenaría datos y se comunicaría con un servidor utilizando búferes de protocolo. Sin embargo, el stock implementation de los búferes de protocolo compilados con el indicador LITE (tanto en la biblioteca JAR como en los archivos .java generados) tiene una sobrecarga de ~ 30 KB, donde el programa en sí mismo es solo ~ 30 KB. En otras palabras, los búferes de protocolo duplicaron el tamaño del programa.Android y Protocolo Buffers

Buscando en línea, encontré un reference a un Android specific implementation. Desafortunadamente, parece que no hay documentación para él, y el código generado a partir del archivo .proto estándar es incompatible con él. ¿Alguien lo ha usado? ¿Cómo puedo generar código desde un archivo .proto para esta implementación? ¿Hay alguna otra alternativa ligera?

Respuesta

1

Sólo para revivir este hilo arcaico para que nadie lo vea, la respuesta es el uso de la biblioteca de alambre de Square (https://github.com/square/wire)

A medida que se mencionan a sí mismos:

Wire los mensajes declaran campos públicos finales en lugar de los métodos usuales getter. Esto reduce el código generado y el código ejecutado. Menos código es particularmente beneficioso para los programas de Android.

También construyen internamente utilizando el tiempo de ejecución de Lite, creo.

Y, por supuesto Proguard, el nuevo Android 2.0 minify herramientas, [otras respuestas genéricas], etc, etc

6

Sé que no es una respuesta directa a su pregunta, pero un extra de 30kb no me parece tan malo. Incluso en EDGE, la descarga solo tardará de 1 a 2 segundos. Y la memoria es ajustada en Android, pero no tan ajustada: 30 kb es solo 1/10 del uno por ciento del espacio disponible en la memoria de la aplicación.

+0

Bueno, creo que el problema era que prácticamente duplica el tamaño de la aplicación. Solo algo que era poco atractivo. – kwogger

2

¿Hay alguna otra alternativa ligera?

Me refiero a "usar búferes de protocolo", en lugar de "para usar búferes de protocolo con una aplicación de Android". Me disculpo si ya está comprometido con los búferes de protocolo.

This sitio trata sobre "comparar el rendimiento de serialización y otros aspectos de las bibliotecas de serialización en la JVM". Encontrará muchas alternativas allí enumeradas.

Si bien no se hace mención de la huella de la memoria de las diferentes implementaciones en este momento estoy seguro de que es una métrica, que la gente en el wiki estarían interesados ​​en.

+0

Gracias, no es lo que estaba buscando, pero información útil, no obstante. – kwogger

Cuestiones relacionadas