如何从java模块中的gradle.properties读取值?

Jor*_*dez 3 java android gradle android-gradle-plugin gradle-plugin

我在 Android Studio 中有一个包含几个模块的项目。

  • 模块app。和apply plugin: 'com.android.application'
  • 模块androidLibrary。和apply plugin: 'com.android.library'
  • 模块javaLibrary。和apply plugin: 'java'

我想在项目gradle.properties文件中声明一些变量并能够从javaLibrary模块中读取它们。

我已根据本文档通过以下方式声明了属性......

  • mysuperhost=superhost
  • systemProp.mysuperhost=superhost
  • ORG_GRADLE_PROJECT_mysuperhost=superhost
  • org.gradle.project.mysuperhost=superhost

...并尝试以这种方式阅读它们,但没有成功:

  • System.getenv("mysuperhost");
  • System.getProperty("mysuperhost");

我知道如何从BuildConfig类中读取属性,但这是应用程序模块中生成的类(带有apply plugin: 'com.android.application'),因此这不适用于这种特殊情况。

小智 7

如果gradle.properties文件中有一些值,例如 mysuperhost=superhost ,则在build.gradle文件 中写入以下行(从gradle.properties文件中获取属性并将其添加到BuildConfig.java类中):

// ...
// ...

android {
    // Just for example
    compileSdkVersion 23
    // Just for example
    buildToolsVersion "23.0.2"

    // ...
    // ...

    defaultConfig {
        // Just for example
        minSdkVersion 14
        // Just for example
        targetSdkVersion 23

        // This is the main idea
        buildConfigField('String', 'MY_SUPER_HOST', "\"${mysuperhost}\"")

        // ...
        // ...
    }

    // ...
    // ...
}

// ...
// ...
Run Code Online (Sandbox Code Playgroud)

之后构建您的项目,您可以通过BuildConfig.MY_SUPER_HOST使用您的值