首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java模块中从gradle.properties读取值?

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

Stack Overflow用户
提问于 2016-02-18 01:09:43
回答 2查看 6.1K关注 0票数 3

我在Android有一个项目,里面有几个模块。

  • 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'一起使用),因此对于这种特殊情况,这是行不通的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-18 01:32:24

您关于不能使用BuildConfig的声明并不完全准确,因为只要您知道BuildConfig的完全限定包,就可以使用Java查找BuildConfig的公共静态成员。

假设生成的BuildConfig的完整包名是com.company.app.BuildConfig。您可以使用以下方法获取其Class对象:

代码语言:javascript
运行
复制
Class<?> klass = Class.forName("com.company.app.BuildConfig");

然后,您可以使用这个Class对象来根据名称来选择它的字段:

代码语言:javascript
运行
复制
Field field = klass.getDeclaredField("BUILD_TYPE");

然后你就可以得到它的价值:

代码语言:javascript
运行
复制
String value = field.get(null);
票数 1
EN

Stack Overflow用户

发布于 2016-02-18 15:25:34

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

代码语言:javascript
运行
复制
// ...
// ...

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}\"")

        // ...
        // ...
    }

    // ...
    // ...
}

// ...
// ...

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35470941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档