8

[エクスポート] をクリックしたときに、Android アプリのマニフェスト ファイルの versionCode と versionName を自動インクリメントしたい (アプリの新しいバージョンをエクスポートするため)

ここで2番目の回答(Androidアプリの自動インクリメントバージョンコード)が非常に便利であることがわかりました(コメントには、Androidバージョンコードを自動インクリメントするための.exeプログラムが含まれています)が、ビルドで実行されました。ファイルをクリックしたときに実行したい- >エクスポート、画像を参照してください

ここに画像の説明を入力

4

2 に答える 2

8

[ファイル] -> [エクスポート] ボタンを変更して、そのボタンの通常の機能に加えて、バージョン コードをインクリメントするビルダーを実行することを検討してください (前述の投稿に示されているように)。org.eclipse.ui.menus 拡張ポイントは、良い出発点のようです。(免責事項:私はこれを試していません。)

ただし、ここで次の xkcd を念頭に置いておくとよい場合があります。

XKCD: 時間の価値はありますか?

于 2013-05-12T16:44:24.593 に答える
4

私は大量のカスタム 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 に保存されます。

ここまでは順調ですね。最後のステップはそれversionCodeAndroidManifest.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 が間近に迫っているため、これらすべてをすぐに書き直す必要があります。:(

于 2013-05-18T23:15:31.297 に答える