2009-11-12 12 views
7

Piszę aplikację na Androida, która będzie przechowywać dane i komunikować się z serwerem za pomocą buforów protokołów. Jednak bufory protokołów stock implementation skompilowane z flagą LITE (zarówno w bibliotece JAR, jak i wygenerowanych plikach .java) mają obciążenie około 30 KB, gdzie sam program ma tylko około 30 KB. Innymi słowy, bufory protokołów podwajały rozmiar programu.Bufory z Androidem i protokołami

Przeszukując online, znalazłem reference na Android specific implementation. Niestety wydaje się, że nie ma w nim dokumentacji, a kod wygenerowany ze standardowego pliku .proto jest z nim niezgodny. Czy ktoś go użył? Jak wygenerować kod z pliku .proto dla tej implementacji? Czy są jakieś inne lekkie alternatywy?

Odpowiedz

1

Wystarczy ożywić ten archaiczny wątku dla ktoś widząc go, odpowiedź jest użycie drutu bibliotekę Square usytuowany jest (https://github.com/square/wire)

Jak wspominają sami:

drutu komunikaty deklarują publiczne pola końcowe zamiast zwykłych metod gettera. Ogranicza to zarówno generowany kod, jak i wykonywany kod. Mniej kodu jest szczególnie korzystne dla programów na Androida.

Są one również wewnętrznie zbudowane przy użyciu środowiska wykonawczego Lite.

I PROGUARD Oczywiście, nowych narzędzi Android 2.0 Minify [inne odpowiedzi generyczne] itd itp

6

Wiem, że to nie jest bezpośrednia odpowiedź na twoje pytanie, ale dodatkowe 30kb nie brzmi tak źle dla mnie. Nawet na EDGE, pobieranie będzie trwało od 1 do 2 sekund. I pamięć jest napięta na Androidzie, ale nie jest TAK mocno - 30 kb to tylko około 1/10 procent dostępnego miejsca w pamięci aplikacji.

+0

Cóż, myślę, że sprawa była praktycznie podwaja wielkość aplikacji. Po prostu coś, co było trochę nieprzyjemne. – kwogger

2

Czy są inne lekkie rozwiązania alternatywne?

Rozumiem, że chodzi o "używanie buforów protokołów", a nie "o używanie buforów protokołu z aplikacją na Androida". Przepraszam, jeśli jesteś już zobowiązany do buforowania protokołów.

This witryna dotyczy "porównywania wydajności serializacji i innych aspektów bibliotek serializacji w JVM". Znajdziesz tam wiele wymienionych tutaj alternatyw.

Choć nie ma wzmianki o zużyciu pamięci różnych wdrożeń w tej chwili jestem pewien, że jest to metryka, które ludzie na wiki byłby zainteresowany.

+0

Dzięki, nie to, czego szukałem, ale mimo to użyteczne informacje. – kwogger