Domanda

Sto scrivendo un'applicazione Android che sarebbero entrambi memorizzare i dati e comunicare con un server utilizzando i buffer di protocollo. Tuttavia, il magazzino implementazione di buffer di protocollo compilati con la bandiera LITE (sia nella libreria JAR ed i file generati .java) ha un sovraccarico di ~ 30 KB, in cui il programma stesso è solo ~ 30 KB. In altre parole, i buffer di protocollo raddoppiato le dimensioni del programma.

Ricerca on-line, ho trovato una di riferimento per un Android specifica implementazione . Purtroppo, sembra che ci sia alcuna documentazione per esso, e il codice generato dal file Proto di serie è incompatibile con esso. Qualcuno ha usato? Come faccio a generare il codice da un file di Proto per questa implementazione? Ci sono altre alternative leggeri?

È stato utile?

Soluzione

Proprio per rilanciare questa discussione arcaica per chiunque vederlo, la risposta è quella di utilizzare libreria Wire di Square ( https: // github.com/square/wire )

Come loro stessi menzionano:

  

Messaggi Wire dichiarano campi finali pubblici al posto dei soliti metodi getter. Questo riduce sia il codice generato e il codice eseguito. Meno codice è particolarmente vantaggioso per i programmi di Android.

Inoltre costruire internamente utilizzando il runtime Lite credo.

E, naturalmente Proguard, il nuovo Android 2.0 strumenti minify, [altre risposte generiche], ecc ecc.

Altri suggerimenti

Lo so che non è una risposta diretta alla sua domanda, ma un 30kb in più non suona poi così male a me. Anche su Edge che vorrà solo un extra di 1 o 2 secondi per scaricare. E la memoria è stretto su Android, ma non così stretti - 30 kb è solo di circa 1/10 ° di uno per cento dello spazio di memoria applicazione disponibile

.
  

Ci sono altre alternative leggeri?

Sto prendendo questo per significare "usando i buffer di protocollo", piuttosto che "per l'utilizzo di buffer di protocollo con un'applicazione Android". Mi scuso se si è già impegnata a buffer di protocollo.

Questo sito è di circa "a confronto le prestazioni di serializzazione e altri aspetti della librerie di serializzazione sulla JVM". Troverete molte alternative ivi elencati.

Mentre non v'è alcuna menzione del l'occupazione di memoria delle diverse implementazioni in questo momento io sono sicuro che è una metrica che le persone sulla wiki sarebbe interessato a.

Usa ProGuard [1] sul progetto. Esso contribuirà a ridurre le dimensioni dei vasi incluso nel file APK.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top