3

最後の git コミットのハッシュを AndroidManifest (具体的には versionCode タグ) に挿入したいと思います。

Android Studioでgradleを使用しています。

4

2 に答える 2

7

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);
于 2016-12-29T13:23:48.250 に答える
4

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()
}

次に、versionNameindefaultConfigを useに変更しますgetVersionName()

于 2013-11-21T09:45:45.397 に答える