在运行时从gradle获取数据

时间:2015-02-24 07:40:54

标签: android gradle

我们开发了一些模块并使用相同的连接器类。我们在静态数据中使用Mow。对服务器的调用在应用程序和开发/生产之间是不同的。

我有一些问题:

  1. 是否可以在运行时从gradle获取数据?

  2. 当gradle构建模块(在构建类型中使用)和gradle.properties时,是否可以在我的类的变量中生成/设置数据?

2 个答案:

答案 0 :(得分:5)

您还可以在build.gradle中使用buildConfigField

buildTypes {
    release {
        // ...

        buildConfigField "boolean", "CHROMECAST", "false"
        buildConfigField "boolean", "NOTIFICATION_COVER", "false"
        buildConfigField "String", "API_URL", "\"https://your/production/url/\""
    }
    debug {
        // ...

        buildConfigField "boolean", "CHROMECAST", "false"
        buildConfigField "boolean", "NOTIFICATION_COVER", "true"
        buildConfigField "String", "API_URL", "\"https://your/development/url\""
    }
}

在您的应用代码中,您可以通过以下方式访问这些变量: BuildConfig.CHROMECASTBuildConfig.API_URL

对于资源,您可以在src/debug/res中为调试版本创建特定资源,例如一个特殊的应用程序图标或覆盖应用程序名称。

答案 1 :(得分:0)

我认为productFlavors正是您想要的:

要使用它们,您必须在模块中添加 build.gradle 以下代码:

android{
    ...
    productFlavors {
        test1 {
            applicationId "your.package.application.test1"
        }
        test2 {

        }
    }
    ...
}

之后您必须在src文件夹中创建与构建变体同名的文件夹:例如,对于test1,您必须创建 test1文件夹

在下一步中,您必须将res文件夹添加到 test1 文件夹,例如添加values/strings.xml

要测试你可以添加:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Your app 2</string>
</resources>

现在,当您选择test1 build variant时,您的应用程序将具有名称&#34;您的应用2&#34;

要更改构建变体,您必须使用任务,或者您可以在下面的视图中设置它:

enter image description here

相关问题