7

データを保存し、プロトコル バッファを使用してサーバーと通信する Android アプリケーションを作成しています。ただし、LITE フラグを使用してコンパイルされたプロトコル バッファのストック実装(JAR ライブラリと生成された .java ファイルの両方) には、最大 30 KB のオーバーヘッドがあり、プログラム自体は最大 30 KB しかありません。つまり、プロトコル バッファはプログラム サイズを 2 倍にします。

オンラインで検索すると、 Android 固有の実装への参照が見つかりました。残念ながら、それに関するドキュメントはないようで、標準の .proto ファイルから生成されたコードはそれと互換性がありません。誰かがそれを使用しましたか?この実装の .proto ファイルからコードを生成するにはどうすればよいですか? 他に軽量の代替品はありますか?

4

4 に答える 4

6

あなたの質問に対する直接的な回答ではないことは承知していますが、余分な 30kb はそれほど悪くはありません。EDGE でもダウンロードに 1 ~ 2 秒しかかかりません。また、Android のメモリはきついですが、それほどきついというわけではありません。30 kb は、使用可能なアプリケーション メモリ領域の 1% の約 1/10 にすぎません。

于 2009-11-26T07:55:03.017 に答える
2

他に軽量の代替品はありますか?

これは、「Android アプリケーションでプロトコル バッファを使用するため」ではなく、「プロトコル バッファを使用するため」という意味で使用しています。すでにプロトコル バッファに取り組んでいる場合は、申し訳ありません。

このサイトは、「シリアライゼーション パフォーマンスと JVM 上のシリアライゼーション ライブラリのその他の側面の比較」に関するものです。そこには多くの選択肢がリストされています。

現時点では、さまざまな実装のメモリ フットプリントについては言及されていませんが、wiki の人々が関心を持っている指標であると確信しています。

于 2009-12-04T10:50:03.333 に答える
1

この古風なスレッドを誰が見ても復活させるには、Square の Wire ライブラリ ( https://github.com/square/wire )を使用するのが答えです。

彼らが言及しているように:

Wire メッセージは、通常の getter メソッドの代わりに public final フィールドを宣言します。これにより、生成されるコードと実行されるコードの両方が削減されます。コードが少ないことは、Android プログラムにとって特に有益です。

また、私が信じている Lite ランタイムを使用して内部的にビルドします。

そしてもちろん、Proguard、新しい Android 2.0 縮小ツール、[その他の一般的な回答] など。

于 2016-04-12T22:44:21.113 に答える
0

プロジェクトで ProGuard[1] を使用します。APKファイルに含まれるjarのサイズを縮小します。

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

于 2011-11-10T11:36:40.870 に答える