Android и протокольные буферы - PullRequest
7 голосов
/ 12 ноября 2009

Я пишу приложение для Android, которое будет хранить данные и взаимодействовать с сервером с использованием протокольных буферов. Однако реализация stock * буферов протокола , скомпилированных с флагом LITE (как в библиотеке JAR, так и в сгенерированных файлах .java), имеет накладные расходы ~ 30 КБ, а сама программа - всего ~ 30 КБ. Другими словами, буферы протокола удваивают размер программы.

При поиске в Интернете я нашел ссылку на специфичную для Android реализацию . К сожалению, похоже, что документации для него нет, и код, сгенерированный из стандартного файла .proto, несовместим с ним. Кто-нибудь использовал это? Как мне сгенерировать код из файла .proto для этой реализации? Есть ли другие легкие альтернативы?

Ответы [ 4 ]

6 голосов
/ 26 ноября 2009

Я знаю, что это не прямой ответ на ваш вопрос, но дополнительные 30 КБ не звучат так уж плохо для меня. Даже на EDGE это займет всего 1-2 секунды для загрузки. Кроме того, на андроиде не хватает памяти, но не ЭТО - 30 КБ - это всего лишь 1/10 от одного процента доступного пространства памяти приложения.

2 голосов
/ 04 декабря 2009

Есть ли другие легкие альтернативы?

Я понимаю, что это означает "использование буферов протокола", а не "использование буферов протокола с приложением Android". Я прошу прощения, если вы уже зарезервированы для буферов протокола.

Этот сайт посвящен «сравнению производительности сериализации и других аспектов библиотек сериализации в JVM». Вы найдете много альтернатив, перечисленных там.

Хотя в настоящий момент нет упоминания об объеме памяти различных реализаций, я уверен, что это метрика, которая будет интересна людям в вики.

1 голос
/ 13 апреля 2016

Просто чтобы возродить эту архаичную нить для всех, кто ее видит, нужно использовать библиотеку Square's Wire (https://github.com/square/wire)

Как они себя называют:

В проводных сообщениях объявляются открытые конечные поля вместо обычных методов получения. Это сокращает как сгенерированный код, так и исполняемый код. Меньше кода особенно полезно для программ Android.

Они также внутренне строят с использованием среды исполнения Lite, я считаю.

И, конечно, Proguard, новые инструменты Android 2.0 для минимизации, [другие общие ответы] и т. Д. И т. Д.

0 голосов
/ 10 ноября 2011

Используйте ProGuard [1] в вашем проекте. Это уменьшит размер банок, включенных в файл APK.

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

...