このソリューションは Linux で開発されました。熟練した Windows と Mac の開発者であれば、プラットフォームに適応させることができると確信していますが、私はそのような開発者ではありません。Linux は私のスキルセットが生きる場所です。
Git には、git describe --dirty
コマンドに優れた機能があります。コミット ログをスキャンしてタグを見つけ、そこからバージョン文字列を作成します。これが最後のコミットがタグ付けされ、すべてのファイルがチェックインされた「本番ビルド」である場合、それがバージョン文字列です。これが開発ビルドの場合、最後のタグに追加のコミット数と省略されたハッシュ コードが追加されます。--dirty
フラグはケーキの飾りにすぎdirty
ません。まだコミットされていない変更済みファイルがある場合、フラグはその単語を追加します。android:versionName
これは、マニフェスト ファイルの属性に最適です。
android:versionCode
番号が必要です。これはリリース用にクロックする必要がありますが、開発ビルド用ではありません。すべてのリリースにはバージョン文字列のタグがあるため、単純にカウントします。私は常に自分のバージョンに 、、およびが単なる数字の形式v<major>.<minor>[.<patch>]
でタグを付けます。したがって、ここで本当に必要なのは、小文字の「v」で始まり、その後に数字が続くタグをカウントすることだけです。<major>
<minor>
<patch>
テンプレート マニフェスト ファイルを追跡した後、最善の方法は、プロジェクト ベースの AndroidManifest.xml ファイルを単純に使用し、ストリーム エディターを使用して編集しsed
、結果を bin/AndroidManifest.xml に保存することであることがわかりました。
そこで、以下のスクリプトを開発し、プロジェクトと同じレベルのスクリプト フォルダーに配置して (すべてのプロジェクトが同じスクリプトを共有できるように)、Eclipse でカスタム ビルダーを構成しました。
私が呼んだスクリプトがありますversion.sh
:
#/bin/bash
echo "Auto Version: `pwd`"
CODE=`git tag | grep -c ^v[0-9]`
NAME=`git describe --dirty | sed -e 's/^v//'`
COMMITS=`echo ${NAME} | sed -e 's/[0-9\.]*//'`
if [ "x${COMMITS}x" = "xx" ] ; then
VERSION="${NAME}"
else
BRANCH=" (`git branch | grep "^\*" | sed -e 's/^..//'`)"
VERSION="${NAME}${BRANCH}"
fi
echo " Code: ${CODE}"
echo " Ver: ${VERSION}"
cat AndroidManifest.xml | \
sed -e "s/android:versionCode=\"[0-9][0-9]*\"/android:versionCode=\"${CODE}\"/" \
-e "s/android:versionName=\".*\"/android:versionName=\"${VERSION}\"/" \
> bin/AndroidManifest.xml
exit 0
ここでビルダーを構成するには、次の手順を実行します。
1)。プロジェクト ベースを右クリックし、[プロパティ]、[ビルダー] の順に選択します。
2)。「新規」ボタンを押して、「プログラム」オプションを選択します。
3)。バージョンに「<project> Auto Version」のような名前を付けます。この文字列は、すべてのプロジェクトで一意である必要があります。
4)。「メイン」タブを次のように構成します。
4a)。[場所] セクションで [ファイル システムの参照] を使用し、スクリプト ファイルに移動して選択します。
4b)。「作業ディレクトリ」セクションで、「ワークスペースの参照」を使用してプロジェクトを選択します。
5)。[更新] タブで [完了時にリソースを更新] をオフのままにします。
6)。「環境」タブで変数を設定しないでください。
7)。[ビルド オプション] タブで次の操作を行います。
7a)。「手動ビルド中」にチェックが入っていることを確認し、
7b)。その「自動ビルド中」もチェックされています。
7c)。私は今、他のすべてを未選択のままにしています。コンソールも割り当てません。そこに目を向けたワシは、スクリプトが何らかの情報を出力していることに気付いたかもしれませんが、今は問題なく機能しているので、気にせずに静かに実行したいだけです.
8)。ビルド設定に問題がなければ、ビルダーを「Android Pre-Compile」と「Java Builder」の間に配置します。
アプリが適切にバージョン管理されていることを認識して安全なアプリの開発に戻り、アプリの情報を確認してください。そのバージョン番号はクールではありませんか。:-)
スティーブ