gpt4 book ai didi

android - 在持续集成中增加 Android 内部版本号

转载 作者:IT王子 更新时间:2023-10-29 00:41:33 29 4
gpt4 key购买 nike

我正在使用 Android Studio、Gradle、git。

每次推送到 master 分支时,我都想构建一个新的应用程序版本,并将其上传到 Google Play 商店的 Alpha channel 。为此,我需要为每个构建增加应用程序的版本代码。

为此我似乎有几种选择:

  1. 在 Jenkins 构建期间增加数量并将更改的文件推送回存储库。
    • 我不喜欢让我的构建服务器执行推送/提交的想法。
  2. 使用 git hook 增加数量。
    • 我更不喜欢使用 git 修改文件的想法。如果我在度假,谁(在团队的其他成员中)会找到这个并知道如何处理它?<​​/li>
  3. 在另一台服务器上有一个文件(构建服务器可以直接访问),其中保存了当前版本。 Gradle 将访问它,增加它并再次保存它。
    • 这看起来很“脆弱”,但至少我可以轻松完成仅在服务器上执行的“increaseVersion”任务。如果它坏了(如果我们移动服务器或其他东西),修复起来相当容易。

目前,我最喜欢3。

有人有明确的方法吗?

最佳答案

我没有使用以上任何一个——像你一样,我不想为每个构建更改 repo,也不想更改任何文件。

Jenkins 对每个构建都有一个不断增加的值,通过 BUILD_NUMBER 环境变量公开。

在 Gradle 中,我在构建时以编程方式生成 versionCode 值,使用 BUILD_NUMBER 值来确保 versionCode 始终高于以前的构建。

我的 build.gradle fragment :

// Used to set the package version name and version code
ext.versionMajor = 1
ext.versionMinor = 2

android {
defaultConfig {
versionName computeVersionName()
versionCode computeVersionCode()
}
}

// Will return "1.2" in this example
def computeVersionName() {
// Basic <major>.<minor> version name
return String.format('%d.%d', versionMajor, versionMinor)
}

// Will return 120042 for Jenkins build #42
def computeVersionCode() {
// Major + minor + Jenkins build number (where available)
return (versionMajor * 100000)
+ (versionMinor * 10000)
+ Integer.valueOf(System.env.BUILD_NUMBER ?: 0)
}

所以我只需要在制作发布版本时更新顶部的两个值。对于所有其他构建类型,我可以让 Gradle/Jenkins 自动设置 versionCode 然后 upload to Google Play .

这也意味着,对于 Play 商店中列出的任何 alpha 版本,或通过检查 APK,我可以立即看到它来自哪个 Jenkins 构建,以及从那里的 git 提交。

关于android - 在持续集成中增加 Android 内部版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30171571/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com