私は大量のカスタム ant ステップでこれを行いました。
まず、ビルド番号をプロパティ ファイルに抽出する必要があります。呼びましょうversion.properties
次に、バージョン コードをインクリメントする手順は次のとおりです。
<target name="increment-version-code">
<propertyfile file="version.properties">
<entry key="versionCode" type="int" default="0" operation="+" value="1" />
</propertyfile>
</target>
これにより、エントリが読み取られversionCode
、インクリメントされ、version.properties に保存されます。
ここまでは順調ですね。最後のステップはそれversionCode
をAndroidManifest.xml
ファイルに入れることですが、残念ながら今は面倒です。
私がそれを解決した方法は、antのフィルタリング機能を使用して、ビルドごとにテンプレートからマニフェストを再生成することでした。
<target name="generate-manifest">
<filter filtersfile="version.properties"/>
<copy todir="${source.dir}" overwrite="true" verbose="true" filtering="true">
<fileset dir="${source.dir}" casesensitive="false">
<include name="**/*.base"/>
</fileset>
<mapper type="glob" from="*.base" to="*" />
</copy>
</target>
あとは、 AndroidManifest.xml を AndroidManifest.xml.base に移動し、versionCode
属性を read に置き換えるだけandroid:versionCode="@versionCode@"
です。その後、ターゲットを実行しincrement-version-code
て versionCode をバンプし、ターゲットをversion.properties
実行してテンプレートを最終的なマニフェストgenerate-manifest
に変換できます。.base
これらは、ビルド ステップとして Eclipse プロジェクトに、またはエクスポートされた ant ビルドへの依存関係として簡単に追加できます。残念ながら、エクスポート機能のための簡単なフックはありません (ただし、「After Clean」用のフックはありますが、これで十分だと思います)。
もちろん、Gradle が間近に迫っているため、これらすべてをすぐに書き直す必要があります。:(