1

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
4

1 に答える 1

0

解決した

ライブラリjarファイルを正しくビルドしなかったことを除いて、最初からすべて問題ありませんでした(マニフェスト)...

于 2012-12-14T12:33:41.663 に答える