web-dev-qa-db-ja.com

antを使用して外部ライブラリでAndroidアプリを構築する方法は?

IDEを使用して正常にビルドする既存のプロジェクトがあります。 " Android update "コマンドを使用して、このプロジェクトのantビルドファイルを生成したいと思います。

ビルドファイルは正常に生成されますが、libsディレクトリにあるいくつかのjarファイルでビルドされていないため、ビルドは失敗します。

Libsディレクトリにあるいくつかの外部jarファイルを使用してビルドするようにantに指示する適切な方法を見つけたいと思います。どうすればよいですか?それはbuild.propertiesのプロパティですか?どういうわけかbuild.xmlを変更する必要がありますか?それともまったく別の解決策がありますか?

18
emmby

しかし、libsディレクトリにあるいくつかのjarfileを使用してビルドしていないため、ビルドは失敗します。

そして、あなたのエラーメッセージは...何ですか?エラーメッセージを誤って解釈している可能性があります。

Libsディレクトリにあるいくつかの外部jarファイルを使用してビルドするようにantに指示する適切な方法を見つけたいと思います。どうすればよいですか?

Antがビルドパスにすべてを追加するので、それらをlibs/に入れるだけです。例については、 このプロジェクトこのプロジェクト 、および このプロジェクト を参照してください。

32
CommonsWare

FacebookAPIをantで動作させるためにしばらく時間を費やしました。私にとっての秘訣は、これをdefault.propertiesファイルに追加することでした。

Android.library.reference.1=../Facebook

../FacebookにはAndroidManifest.xmlなどが含まれています。実際のキーは相対パスです。 Antはプロジェクトディレクトリをルートとして扱っているように見えるため、絶対パスは使用しないでください。

これは、ソースコードからインクルードしている他のライブラリプロジェクトにも当てはまります。

14
akitaben

私は同様の問題を扱っていました。標準のAntbuild.xml(Android SDKによって生成された)を使用して、JenkinsでAndroidプロジェクトをビルドしています。また、いくつかの共有ドメインクラスを持つ別のJavaプロジェクトへの参照もあります。 Eclipseでは問題はありません。ドメインプロジェクトはプロジェクトリファレンスです。ただし、Jenkinsでは、このdomain.jarはMavenによってビルドされており、Androidプロジェクトからはアクセスできませんでした。

Build.xmlの最後にこれを追加することで、ようやく解決しました。

<target name="-pre-build">
  <copy todir="${jar.libs.dir}">
    <fileset 
      dir="../path-to-another-project/target" 
      includes="*.jar" />
  </copy>
</target>

これにより、すべてのjarが別のプロジェクトのターゲットディレクトリからAndroidプロジェクトの「libs」ディレクトリにコピーされます。 -pre-build Antターゲットは、Androidコンパイルが開始される前に自動的に呼び出されます。

8
petrsyn

ただし、ビルドスクリプトをさらに変更する予定がある場合は、カスタムにする必要があるよりも、Markに同意します。 Android/platform/Android-PLATFORMVERSION/templates/Android_rules.xmlからbuild.xmlにタスクを移動し、変更するものをすべて変更します。外部ライブラリの場所を含みます。

1
Alex Volovoy
0
User2364902