私は数日間問題に苦しんでおり、これを修正する方法がわかりません。私は、Android SDK によって提供される Android ツールを使用してコンパイルされている Android Library プロジェクトを使用しています。プロジェクト内では、Android プロジェクトの標準構造に従います (jar ファイルはプロジェクトの libs ディレクトリ内にあります。
Ant を使用してプロジェクトをコンパイルすると、次のことがわかります。
<target name="compile-payment-lib" depends="prepare,init-profile">
<delete file="../payment-lib/project.properties"/>
<exec executable="${android.tool}" dir="../payment-lib" failonerror="true">
<arg value="update"/>
<arg value="lib-project"/>
<arg value="-p"/>
<arg value="${basedir}/../payment-lib"/>
<arg value="-t"/>
<arg value="${android.target.version}"/>
</exec>
<echo file="../payment-lib/project.properties" message="android.library=true" append="true"/>
<ant dir="../payment-lib" target="release"/>
</target>
jar ファイルが含まれていないため、これらのクラスを収集して使用しようとすると、実行時に参照が失われます。Androidツールrev20の最新バージョンを使用してコンパイルしています。
これらの参照を解決しようとしたいくつかのこと:
- Jar ファイルを unjar し、ファイルを bin ディレクトリに投げてから、それらのファイルをマスター jar ファイルに追加します。
- jarをclasses.dexにコンパイルしようとしました(ビルド時にこのファイルを利用する方法がわかりません)
- ライブラリのjarファイルを含めるようにプロジェクトのクラスパスを変更しようとしました
私が間違っている可能性があることを誰かが知っている場合は、私に知らせてください。
私が言及すべきことの1つは、これは特定のプロジェクトであり、実際のアプリケーションプロジェクトである別のプロジェクトで使用されるということです. 特にこのプロジェクトは、jar 依存関係を持つライブラリ プロジェクトです。
もう 1 つのことは、これは Android のネイティブ拡張機能を備えた Adobe Air アプリケーションです。タスクを完了するために、次のような ant タスクを使用して、すべての参照を含むマスター jar ファイルを含む ANE を作成しました。
<target name="master-jar" depends="prepare">
<delete dir="target/uber-jar" />
<mkdir dir="target/uber-jar"/>
<antcall target="expand-3rdparty-jars" />
<jar destfile="${basedir}/target/master.jar">
<fileset dir="../game/gamelobby/bin/classes" includes="**/*"/>
<fileset dir="../payment-lib/bin/classes" includes="**/*" excludes="**/R*.class" />
<fileset dir="../crosscell_ad_lib/bin/classes" includes="**/*" excludes="**/R*.class" />
<fileset dir="src" includes="config/**/*"/>
<fileset dir="${basedir}/target/uber-jar" includes="**/*"/>
</jar>
</target>