2012-02-22 5 views
5

私はこの全体の "Ant"ビルドシステムのことを扱おうとしています。私は、build.xmlを作成しました。これは、Androidがネイティブにコマンド:android update project -p .を使用して私に与えたものです。Antを使ってAndroidプロジェクトをコンパイルしてjarする方法は?

これは私にテンプレートbuild.xmlファイルを与えてくれましたが、いくつかのオプションが必要です。具体的には、JARおよび/またはになりたいと思います。私のプロジェクトです。好ましくはバージョン番号付きである。

ボーナス質問:JARビルドからファイルを除外するにはどうしたらいいですか?たとえば、機能をテストするために使用したアクティビティが1つありますが、最終的なJARにそのアクティビティを含めることは望ましくありません。

Androidが提供した私のbuild.xmlファイルは、かなり長い(ほとんどのコメント)のでGisted hereです。

EDIT:私もIntelliJを使用していますので、Eclipse仕様はありません。

+2

AndroidアプリケーションがJARファイルではないと考えて、「JARとプロジェクトをコンパイルする」とはどういう意味ですか? – CommonsWare

+0

@CommonsWare、私は本当に2つの "ターゲット"を意味します。 1。私のコードをコンパイルし、クラスとdexファイルとその正しいディレクトリにあるものをコンパイルします。 2. Androidの「ライブラリ」を適切に配布できるように、必要なクラスファイルをJARします。 – hwrdprkns

+0

さらに、私は明確にする必要があります。私のプロジェクトが「図書館」プロジェクトの資格を持っているかどうかはわかりません。しかし、私はちょうど私が別のアプリケーションでそれを使用できるようにJARedしたいAndroid SDKを使用するコードがあります。活動ではなく、他のコード。 – hwrdprkns

答えて

14

具体的には、自分のプロジェクトをJARおよび/またはコンパイルできるようにしたいと思います。好ましくはバージョン番号付きである。

Androidでは、バージョン番号はJARではなくアプリ向けです。 JARファイルをコンパイルし、パッケージ化するant jarを実行し、その後

<target name="jar" depends="debug"> 
    <jar 
     destfile="bin/whatever-you-want-to-call-the.jar" 
     basedir="bin/classes" 
    /> 
</target> 

jarターゲットは下の方build.xmlファイルにこれを追加するだけで追加すること、言われていること

このパターンは、再利用可能なAndroidコンポーネントのほとんどがmy GitHub areacwac-参照)に表示されます。

ボーナス質問:JARビルドからファイルを除外するにはどうすればよいですか。たとえば、機能をテストするために使用したアクティビティが1つありますが、最終的なJARにそのアクティビティを含めることは望ましくありません。

jar Ant task documentationに記載されているとおり、excludesまたはexcludesfileを使用してください。

+0

パーフェクト。さて、 'excludes =" **/ExcludedFile.class "'はあなたが気に入らないファイルを除外します。 'depends =" debug "は、事前コンパイルを必要とする魔法です。 – hwrdprkns

+0

@hwrdprkns「プレコンパイルが必要な魔法」の意味をもう少し説明できますか?あなたは "depends = 'debug'"を指定すると、jarをビルドする前にantをコンパイルするように指示していますか?編集:実際には、より多くを読んだ後、これは、あなたが "ant jar"と呼んだとき、最初に "ant debug"を行う必要があることを認識していますか?そして私は、jarの署名に気にしないので、リリースの代わりにデバッグを使うと仮定します。 –

1

AndroidとAndroid以外のプロジェクトを再利用するには、Android Mavenプラグインをご覧ください。依存関係管理やMavenの他の強力な機能を利用し、あなたがしたいことにもっと適しています。

webpage and documentationをチェックしてください。多分約Android development in Maven : The Complete Referenceという章を書いてみました。もう少し理解してもらい、Mavenを見てみたいと書いています。

Androidプラグインは通常のjar成果物の再利用をサポートしています。コード内にAndroidの依存関係がある場合は、apklibプロジェクトを使用できます。 Roboguice、robolectric、actionbarsherlockなどのプロジェクトの多くは、この機能をうまく利用しています。

+0

これは私が知るべき素晴らしいツールのように見えるので、質問は求めませんでしたが+1です。 – hwrdprkns

+0

問題はありません。あなたがantビルドをカスタマイズし始めると、xml地獄やたくさんのアップグレードの苦労からあなたを救おうとしています。 –