これがAntを使用するソリューションです。Antのセットアップを取得するのは少し面倒だったことを認めなければなりませんが、それはEclipseの広く使用されている強力な補助であるように思われるので、他の点で私にとって価値があることがわかると思います。
Antは、Eclipseを使用せずにAndroid SDKアプリを構築するための推奨ソリューションです(ここで説明します)が、ADTの一部ではないため、Eclipseを使用したばかりの場合はおそらくAntを使用できません。
したがって、最初のステップは、ここからAntをダウンロードしてインストールすることです。
次に、パスにAntを追加し、パスがJDK(JREではなく)も指していることを確認します。Windowsでは、JAVA_HOMEを作成し、それをJDKのルートにポイントする必要があることがわかりました。
自動インクリメントステップに必要なのはAntだけです(Eclipseを置き換えてビルド全体で使用することは意図されていません)が、Antが機能していることを確認するために、その方向にいくつかのステップを実行すると便利です。したがって、プロジェクトのルートに移動して、次のように入力します
> android update project --path .
これにより、プロジェクトのbuild.xmlが作成されます。私がそれをした後、私はすることができました
> ant release
そしてAntが私のプロジェクトを構築しました。あなたがその方向に進み続けたいのなら、私はこの記事が役に立つと思いました。
次に、プロジェクトの新しいbuild.xmlを編集し、次のタスクを追加しました(別のタスク/ターゲットの途中ではなく、どこにでも移動できます)
<target name="update.buildnum">
<buildnumber/>
<!-- this task creates (and increments) Ant property 'build.number' which I use below -->
<echo>Current build number:${build.number}</echo>
<echoxml file="res/values/buildnum.xml">
<resources>
<string name="buildnum">${build.number}</string>
</resources>
</echoxml>
</target>
上記で使用したタスクは、プロジェクトのルートにある「build.number」というファイル(作成するファイル)のビルド番号を自動インクリメントします。上記のタスクの残りの部分では、現在のビルド番号をリソース文字列に入れて、アプリケーションが次のコードで取得できるようにします。
String build = context.getString( com.your.app.R.string. buildnum );
int appBuild = ( int ) Integer.parseInt( build );
AndroidManifest.xmlのアプリケーションコードにビルド番号を書き込むソリューションを好む人もいます。 これを行うためのタスクを含む回答がありますが、サードパーティのAntタスク(xmltask)が必要であり、ビルドごとにサードパーティのタスクでマニフェスト(現在はかなり巨大です)を変更することを少し躊躇しています。そのタスクを使用することにした場合、ビルド番号を取得するための対応するAndroidコードは次のようになります。
String packageName = ctx.getPackageName();
PackageInfo pInfo = ctx.getPackageManager().getPackageInfo( packageName, 0);
int appVer = pInfo.versionCode;
最後に、ビルドを行うたびにEclipseにこのAntタスクを実行させる必要があります。
プロジェクトのプロパティに移動し、ビルダーを見つけて、ボタンをクリックして新しいビルダーを追加します。ここにはたくさんのオプションがありますが、指定する必要があるのはほんのわずかです。
- Name:フィールドを設定して、ビルダーに名前を付けます。
- ビルドファイルを選択します。「ワークスペースの参照」オプションを使用して選択した後、フィールドに「$ {workspace_loc:/appname/build.xml}」と入力しました。
- [ターゲット]タブのリストからターゲットを選択します。私の場合、「help」タスク(上記で生成されたbuild.mxlのデフォルトタスク)を削除してから、「build.number」タスクを追加する必要がありました。手動ビルドのターゲットのみを設定することをお勧めします。
新しいビルダーを最初のビルドステップに移動しました。
このソリューションの問題の1つは、プロジェクトが変更されていなくても、Eclipseにアプリケーションをデプロイ(実行)させるたびに、新しい手動ビルドと見なされることです。したがって、アプリケーションを複数のデバイスにデプロイする場合、各デバイスには独自のビルド番号を持つ異なるビルドがあります。この問題を少し改善する1つのことは、将来のADTでは1回の操作で複数の展開が可能になるとGoogleが言っていることです。
これ(上記)は、Win732ビットでAnt1.8.4、Eclipse Indigo SR2(3.7.2)、ADT 20プレビュー2、およびSDKTools20でテストされました。