1

これは、Eclipse で jar をエクスポートする際によくある問題のようです。さて、私の文脈。

Unity アプリケーションで使用する Java プラグインを作成しようとしています。外部ライブラリのない単純なプラグインを作成したとき (classes.jar を除いて、UnityPlayerActivity を呼び出すことができます)、それはかなりうまく機能しました。「さて、いくつかのユーティリティ ライブラリを使用してみましょう」。そこで、Jackson ライブラリを使用して JSON データを解析および処理するプラグインを作成し、それを Java オブジェクトにシリアル化するか、RAW データを渡して Unity (C#) オブジェクトを構築できるようにしました。

ライブラリをファイル システムから 'libs' フォルダーに直接追加し (それらをリンクせずに .jar をコピーします)、ビルド パスに追加し、Order および Export内のすべてをチェックし、クリーンアップしてビルドし、JAR ファイルにエクスポートします (実行可能ではありませんが、単純な JAR ファイル)。次に、新しい .jar を Unity Assets/Plugins/Android フォルダーに追加し、.apk をビルドします。ゲームが開始されるとすぐに、コンストラクターが Jackson クラスを使用しているため、古典的な NoClassDefFoundError が発生します。.jar の内容を確認すると、Jackson ライブラリが実際にエクスポートされ、「libs」フォルダー内にあることがわかりますが、それでも「見つかりません」。エラーはメイン スレッドによってスローされるため、アプリケーションがクラッシュします。

API 17 で ADT を使用しているため、libs フォルダーの名前は「libs」にする必要があります (新しい Android プロジェクトを作成するときに Eclipse でさえこのフォルダーを作成します)、JRE 1.6 および Jackson ライブラリ ver. 2.2.0。ここですでに多くの質問をフォローしていますが、彼らの提案はどれも私にとってはうまくいきませんでした.

ここに何かポインタはありますか?Android API バージョンはここで何か関係がありますか? 私がしていないことはありますか?

前もって感謝します。

4

1 に答える 1

3

私は Java を初めて使用しますが、外部 JAR ファイルをいつ使用するかを知る限り、それは動的にリンクされています。言い換えれば、それは独立したままです - ライブラリにマージされません。

これは私の場合は明らかでした。私が使用した外部ライブラリは Google Analytics でした。その JAR ファイル libGoogleAnalyticsV2.jar は 126 KB です。それを libs ディレクトリに追加してライブラリを構築した後、わずか 2 KB の出力 JAR ファイルを取得しました...

私の解決策は、作成した JAR ファイルと一緒に、外部ライブラリの JAR ファイルを Assets/Plugins/Android にコピーすることでした。

于 2013-07-16T16:34:48.823 に答える