Android プロジェクトのアプリバージョンを自動で更新する
Android のアプリバージョンは build.gradle
内で定義されています。
android { ... defaultConfig { versionCode 1 versionName 1.0.0 ... } }
この記事では、build.gradle
内のバージョンを CI などを使って自動で更新出来るようにします。
参考記事では、grale script を使った方法でやってますが、CI で実行する場合 gradle の環境構築などが走ってしまい無駄なので、 shell script を使って更新してみることにします。
参考記事: https://medium.com/@IlyaEremin/npm-version-for-gradle-android-9137a7dc273c
まずは、アプリのバージョンを定義する properties ファイルを作成します。
今回は、appversions.properties
としました。
VERSION_NAME=1.0.0 VERSION_CODE=1
先程の build.gradle
内のバージョンを appversions.properties
から参照する形に書き換えます。
android { ... defaultConfig { def versionPropsFile = file('appversions.properties') def versionProps = new Properties() versionProps.load(new FileInputStream(versionPropsFile)) versionCode versionProps['VERSION_CODE'].toInteger() versionName versionProps['VERSION_NAME'] ... } }
これで、ビルド時に appversions.properties
の中身を使うようになります。
あとは、shell script で properties を書き換えるようにします。
#!/bin/bash function get_version_code() { command="grep -o 'VERSION_CODE=[^,]*' appversions.properties | sed -e 's/^VERSION_CODE=//'" eval $command } VERSION_NAME=$1 VERSION_CODE=$((`get_version_code`+1)) echo -e "VERSION_NAME=$1\nVERSION_CODE=$VERSION_CODE" > appversions.properties
あとは、CI 上で ./bump.sh [version-name]
と実行すれば、version code が自動でインクリメントされ、version name が指定した文字列に置換されます。
例えば、github actions などでバージョンを上げるタイミングを上手くフックして上記を実行すれば、バージョンを更新する PR を自動で作成する事もできます。
これは、次回の記事で書いてみたいと思います。