android - Gradle 脚本自动版本并在 Android 中包含提交哈希

标签 android git android-studio gradle versioning

我需要编写一个 gradle 脚本来在每次提交时自动版本化我的应用程序。我还需要在应用程序中包含提交哈希作为测试人员的引用。

我很困惑自动版本控制通常是如何工作的。有人可以解释一下自动版本控制过程吗?

最佳答案

我遇到了类似的问题,但不想修改 versionName 以包含 git hash。我们希望将其保留为类似于 1.2.2 的版本,但仍然可以在 UI 中显示 git 哈希值。

我修改了the other answer here中的代码使用buildConfigField任务生成一个可以在Java代码中引用的BuildConfig.GitHash值。

将其添加到模块的 build.gradle 文件的 android 部分上方:

def getGitHash = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

然后将以下行添加到 build.gradle 的 android 部分的 defaultConfig 部分,即在 versionName 下面:

buildConfigField "String", "GitHash", "\"${getGitHash()}\""

这会在自动生成的 BuildConfig.java 文件中生成以下行:

// Fields from default config.
public static final String GitHash = "e61af97";

现在您可以使用 BuildConfig.GitHash 在 Java 代码中获取 git 哈希值。

关于android - Gradle 脚本自动版本并在 Android 中包含提交哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745215/

相关文章:

android - Android和使用依赖项。可以吗就像在代码中使用别人的构建实现。

android - 找不到 com.android.tools.build :gradle:4. 6

android - 如何在 Android 设备上运行 .swf 文件

android - PendingIntent 不适用于 Android O

regex - 获取 Windows 上 Git Hook 的 %AppData% 路径(或其他环境变量)(10)

安卓工作室 2.0 : Why does Instant Run not work when modifying xml layout resources?

android - 如何在 native react 中不使用外部包的情况下添加/获取日历事件

git - 将 SVN checkout 转换为使用 git (git-svn)

Git pull - 设备错误上没有剩余空间,剩余可用空间

android - 如何在评级栏中给每颗星留出空间