如何在Android Studio运行gradle构建之前设置环境变量

pkln4tw6  于 2023-10-19  发布在  Android
关注(0)|答案(4)|浏览(169)

我的Gradle构建会查看一个名为BUILD_NUMBER的环境变量,以确定要分配给我的Android应用程序的版本,如下所示:

def buildNumber = System.getenv("BUILD_NUMBER") ?: "local"

因此,只要设置了该环境变量,就会在defaultConfig中使用构建号,如下所示:

versionName "1.4.0."+buildNumber

通常,Jenkins会调用这个Gradle构建并提供BUILD_NUMBER环境变量。
如果我从命令提示符运行Gradle构建,我知道我可以设置BUILD_NUMBER = x。
但是,如果我使用Android Studio进行构建,如何通过Android Studio本身设置BUILD_NUMBER环境变量?

0kjbasz6

0kjbasz61#

一种选择是使用可以被环境变量覆盖的gradle属性。你可以在这里读到。
如果环境变量名类似于ORG_GRADLE_PROJECT_prop=somevalue,则Gradle将在项目对象上设置prop属性,值为somevalue。
这意味着你可以
1.在你的.properties文件中设置BUILD_NUMBER=42(项目或全局),就像你通常做的那样,
1.在你的CI中,你可以将环境变量命名为ORG_GRADLE_PROJECT_BUILD_NUMBER,或者在你的CI构建中设置BUILD_NUMBER

  • 注意:* 在您的项目根目录下使用gradle.properties,不要修改local.properties
egmofgnx

egmofgnx2#

我最终在我的build.gradle中使用了以下内容:

def buildNumber = System.getenv("BUILD_NUMBER")
if (buildNumber == null) {
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    buildNumber = properties.getProperty('buildNumber')?:"NoBuildNumberFound"
}

因为local.properties文件不应该提交到您的源代码存储库中,所以每个开发人员都管理自己的副本。
因此,如果他们想在本地Android Studio上设置buildNumber,只需将以下内容添加到他们的local.properties:

buildNumber=7

因此,在本地开发人员的机器上,构建编号将被设置为他们放入local.properties文件中的任何内容,但在我们的Jenkins服务器上,它将使用环境变量BUILD_NUMBER
Jenkins服务器设置BUILD_NUMBER环境变量

zqdjd7g9

zqdjd7g93#

这些只是环境变量。
如果在Windows下,请转到操作系统控制面板,并在右上角的搜索框中键入“环境”。然后点击“为您的帐户编辑环境变量”,高度用户友好,不需要管理员权限。编辑后重新启动Android Studio。
如果是在Linux下,请在您的主文件夹中编辑.bashrc(vi ~/.bashrc或使用其他编辑器)。可以在这里设置环境变量。source ~/.bashrc(或注销/登录),并在编辑后重新启动Android Studio。

mftmpeh8

mftmpeh84#

我在React Native上是这样做的:

namespace "myapp.io"
 defaultConfig {
    applicationId "myapp.io"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 39
    versionName "0.3.8"
    resValue "string", "build_config_package", "myapp.io"
    manifestPlaceholders = [APPSFLYER_HOST: project.env.get("APPSFLYER_HOST"), APPSFLYER_PREFIX: project.env.get("APPSFLYER_PREFIX")]
}

然后在我的AndroidManifest中:

<data android:scheme="https"
            android:host="${APPSFLYER_HOST}"
            android:pathPrefix="${APPSFLYER_PREFIX}" />

相关问题