HttpClientを介してデータを送信したいのですが、プロトコルバッファを使用しようとしています。記述子が作成され、関連する.javaファイルを取得するためにコンパイルされた.protoファイルも作成されました。私はAndroidクラス内でこのクラスを問題なく呼び出しており、チュートリアルやReadmeのように言うことができます。Eclipseは何についても泣き言を言いません。
ここで、ダウンロードしたライブラリ(protobuf-2.5.0rc1およびprotoc-2.5.0rc1-win32)からすべてのコンパイル済みファイルを.jar(フォルダー全体のjavac、次にtar cvf)に追加しました。
この.jarは現在:libs + AndroidDependencies+ReferencedLibrairiesにあります。
元のファイルは/libsフォルダーにあります。ビルドパスでは、protobuf.jarライブラリがエクスポートされるように設定されています。
アプリケーションの起動は正常に機能しますが、proto Builderを使用しようとすると、DDMSから得られるものは次のようになります。
12-13 13:55:54.750: E/AndroidRuntime(12647): Caused by: java.lang.NoClassDefFoundError: xxx.xxxx.xxxx.yyy.ProtoObject$Objectmsg
12-13 13:55:54.750: E/AndroidRuntime(12647): at xxx.xxxx.xxxx.xxx.myActivity$Task.doInBackground(myActivity.java:x)
12-13 13:55:54.750: E/AndroidRuntime(12647): at xxx.xxxx.xxxx.xxx.myActivity$Task.doInBackground(myActivity.java:x)
これが私のプロトファイルです
package xxx.xxxx.xxxx.yyy;
option java_outer_classname="ProtoObject";
message Objectmsg {
required int32 aaa = 1;
required string bbb = 2;
required string ccc = 3;
required string ddd = 4;
required string eee = 5;
repeated string fff = 6;
repeated string ggg = 7;
repeated string hhh = 8;
}
Androidアプリ内のコード
import xxx.xxxx.xxxx.yyy.ProtoObject;
...
Objectmsg omsg = ProtoObject.Objectmsg.newBuilder()
.setAaa(an Integer)
.setBbb(a String)
.setCcc(a String)
.setDdd(a String)
.addAllEee(an arraylist)
.addAllFff(an arraylist)
.addAllGgg(an arraylist)
.build();
ライブラリのリンクをどこで台無しにできたのか、本当にわかりません。何が欠けているのか考えている人がいたら、それはすごいでしょう!
前もって感謝します。
編集 ::
dexedLibsフォルダー(/ bin内)を見ると、protobufが1 kBの場合、サポートライブラリは実際のサイズになります。
android-support-v4-4a44d81301e680a21725a9812ec65b60 132kB
protobuf-d8a49056234d83f3a745e8697859be32 1kB