在构建时从 Gradle 设置静态变量

Mik*_*tov 3 java git android gradle android-studio

我有一个 Android 项目,在 git 下管理。Git 有 2 个分支(更多……但重要的是这两个),分支 a 和分支 b。是否可以设置 gradle 来确定项目是从哪个分支构建的,并public static String根据分支在项目的类之一中设置值?

谢谢。

Sta*_*lav 6

是的,您的gradle.properties两个分支中可能都有一个文件(您可以在此处阅读有关属性的信息),其中包含一些属性,例如buildBranchName. 但是分配给此属性的值在每个分支中都会有所不同。例如,在brach1 中,您在与build.gradle 脚本相同的目录中有一个gradle.properties 文件,并且它有一个

buildBranchName=branch1
Run Code Online (Sandbox Code Playgroud)

里面的财产。同时,branch2 中的 gradle.properties 文件包含:

buildBranchName=branch2
Run Code Online (Sandbox Code Playgroud)

然后,由于您有一个 android 项目,您可以使用BuildConfig类生成选项将此变量传递给您的应用程序源。您可以在此处阅读“增强您的 BuildConfig”部分。您只需要为您的构建类型为这个自动生成的类添加一些属性,就像:

android {
    ...
    buildTypes {
        debug {
            buildConfigField "String", "BUILD_BRANCH", buildBranchName
        }
        ...
    }    
}
Run Code Online (Sandbox Code Playgroud)

然后,在构建过程中,BuildConfig将生成最终的类,它会有一个BUILD_BRANCH字段,您可以将其用作此类的简单静态字段。

此外,如果有些人有一个非 android 项目,则有一个plugin,它允许对所有 java 项目执行相同的操作。