我们开发了一些模块并使用相同的连接器类。我们在静态数据中使用Mow。调用服务器在应用程序和开发/生产之间是不同的。在运行时从gradle获取数据
我有一些问题:
是有可能在运行时得到数据的gradle?
当gradle构建模块(通过构建类型使用)和gradle.properties时,是否可以在我的类的变量中生成/设置数据?
我们开发了一些模块并使用相同的连接器类。我们在静态数据中使用Mow。调用服务器在应用程序和开发/生产之间是不同的。在运行时从gradle获取数据
我有一些问题:
是有可能在运行时得到数据的gradle?
当gradle构建模块(通过构建类型使用)和gradle.properties时,是否可以在我的类的变量中生成/设置数据?
我认为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的构建变量您应用程序将具有名称“您的应用程序2”
要更改构建变体,您必须使用任务或您可以在下面的视图中设置它:
你也可以用你在你的应用程序代码的build.gradle
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\""
}
}
buildConfigField
可以通过例如访问这些变量BuildConfig.CHROMECAST
或BuildConfig.API_URL
对于资源,您可以为您的调试版本创建特定资源src/debug/res
例如,一个特殊的应用程序图标或覆盖应用程序名称
如果他只想要在开发/调试和发布之间进行区分的东西,那么构建产品风味是过度的。 – Dodge 2015-02-24 08:26:27
据我所知,你也可以在productFlavors中配置'buildConfigField'。对我来说,productFlavors提供了更多的可能性。这就是我提出这个建议的原因。 :) – 2015-02-24 08:42:53
当然可以。但产品风味的目标是提供不同版本的应用,例如免费vs付费或playstore vs亚马逊,而不是发展vs发布。而我的建议(buildTypes中的'buildConfigField'在这个特定情况下更有意义) – Dodge 2015-02-24 13:47:05