最後の git コミットのハッシュを AndroidManifest (具体的には versionCode タグ) に挿入したいと思います。
Android Studioでgradleを使用しています。
最後の git コミットのハッシュを AndroidManifest (具体的には versionCode タグ) に挿入したいと思います。
Android Studioでgradleを使用しています。
OQ に回答するには、アプリの build.gradle の android セクションに次を追加します。
def getGitHash = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
versionCode は数値であるため、defaultConfig versionName を次のように変更します。
versionName getGitHash()
より良い実装
私が自分のプロジェクトで実際に行っていることは、値を BuildConfig 変数に挿入し、その方法でアクセスすることです。
Android セクションでこれらのメソッドを使用します。
def getGitHash = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', 'HEAD'
standardOutput = stdout
}
return "\"" + stdout.toString().trim() + "\""
}
def getGitBranch = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD'
standardOutput = stdout
}
return "\"" + stdout.toString().trim() + "\""
}
これを BuildConfig セクションに追加します。
productFlavors {
dev {
...
buildConfigField "String", "GIT_HASH", getGitHash()
buildConfigField "String", "GIT_BRANCH", getGitBranch()
...
}
}
次に、Application.java などのソース コードで
Log.v(LOG_TAG, "git branch=" + BuildConfig.GIT_BRANCH);
Log.v(LOG_TAG, "git commit=" + BuildConfig.GIT_HASH);
Ryan Harter によるこの投稿から、コミットにタグを付け、build.gradle スクリプトに以下を追加します。
/*
* Gets the version name from the latest Git tag
*/
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags'
standardOutput = stdout
}
return stdout.toString().trim()
}
次に、versionName
indefaultConfig
を useに変更しますgetVersionName()
。