25

これまでのところ、アプリケーションのプログラミングに集中しており、ビルド プロセスをよりスマートにすることにはほとんど注意を払っていませんでした。android:versionCodeしたがって、私は手動での更新やandroid:versionNameAndroidManifest.xml での更新など、ほとんど手動で (「愚かな方法」) 行ってきました。

私は今、自動的に(つまり、ビルド時またはエクスポート時に)したいと思います:

  1. gitビルドとバージョン コードを含む最新のタグ/ブランチから取得します。
  2. それらを解析して、AndroidManifest.xml のそれぞれのフィールドに割り当てることができるようにします。
  3. それに応じて AndroidManifest.xml を変更します。
  4. 手動で 1-2-3 を行ったかのように、通常のビルド プロセス (Eclipse+ADT、Ant は一切使用しない) に進みます...

「ビルド前のステップ」、 builders 、およびbuild.xmlに関するいくつかの手がかりを見つけましたが、それらをどこで見つけてどこから始めればよいかわかりません。

この件に関する詳細情報をどこで見つけることができるかについてのヒントや指針はありますか? (ステップバイステップのチュートリアルが理想的です)

更新 1:このスレッドは、次のことを示唆していることがわかりました。

  1. プロジェクトを右クリックし、Properties > Builders
  2. プロジェクトの Ant ビルド ファイルを指すビルダーを追加します。
  3. そのビルダーが Java ビルダーの前に呼び出されるように注文する

わかりましたが、プロジェクトのAntビルド ファイルはどこにありますか? どこで見つけますか?

更新 2:どうやら、プロジェクト全体を Ant ファイルにエクスポートできるようです。しかし、それが私が望んでいることかどうかはわかりません。ビルド前のステップには常にAnt ビルド ファイルを含める必要がありますか?

更新 3: Ant ファイルをビルドするのは、ビルド前のステップのみ、正しいアプローチですか?

4

4 に答える 4

3

ビルド前のステップを設定することで正しい軌道に乗っていますが、ant ビルド ファイルは自分でゼロから作成するものです。Eclipse には、自動化されたコンパイル、パッケージ化などを処理するために外部で使用するいくつかの ant スクリプトがありますが、必要なこれらの追加の手順を実行するだけの別のスクリプトを作成する必要があります。

そのため、これを行うには、Ant スクリプトについて少し学ぶ必要があります。見つけたこれらのリンクのいくつかは、単純な ant ファイルを作成する方法の基本的なアイデアを提供します。それに加えて、おそらく使用する必要がある ant タスクのいくつかは次のとおりです。

Exec - バージョン情報を取得する git コマンドを実行するために必要になります。コマンドの出力を ant がアクセスできるプロパティに格納するために使用できる resultProperty という引数があります。(または、コマンド出力をファイルに出力し、ant がそれにアクセスできるようにすることもできます。)

ReplaceRegExp - AndroidManifest.xml に配置したトークン (おそらく @VERSIONCODE@ および @VERSIONNAME@ ) を、値が最終的に移動する場所に置き、exec によって返された値に置き換えるために必要になります。

おそらく、最初に exec タスクを実行して AndroidManifest.xml ファイルを元の状態 (トークンが配置された状態) に復元し、手動でクリーンアップしなくても繰り返し実行できるようにすることもできます。これらの exec タスク内で実行する必要がある git コマンドに関する詳細情報を提供したいと思いますが、残念ながら、私の経験はすべて Subversion に関するものであるため、そこのギャップを埋める必要があります。

于 2012-10-03T15:56:08.623 に答える
2

maven-androidでのビルドを検討する必要があります。プロジェクトが正常にビルドされたら、version-updateプラグインを使用してバージョン番号を自動的にインクリメントします。

maven-android を使用してビルド スクリプトを作成するのは簡単とは言えませんが、努力する価値があるので、この方法を検討する必要があります。

また、このチュートリアルが役に立つかもしれません (私はここで説明した手法の変形を自分のビルドに使用しています)

編集(2014):

Android Studio への移行と Gradle の使用を検討してください。参照: Android Gradle で versionCode を自動インクリメントする方法

于 2012-09-24T05:52:55.897 に答える
1

私がこれを達成する方法:ビルド>シェルの実行(dbから情報を受け取るためにいくつかのphpコードが必要でした)と、phpで文字列の置換が行われます:

#!/usr/bin/php
<?php
    $filename = $WORKSPACE."/src/com/me/myapp/MyActivity.java";
    $file = @file_get_contents($filename);
    if($file) {
        $repl = preg_replace("OriginalString", "NewString", $file);
        file_put_contents($filename, $repl);
        echo "\n\nReplaced some stuff in $filename";
    }
?>
于 2012-09-17T11:33:18.517 に答える