18

Android Studio和使用Gradle中,我如何设置 DEBUG/RELEASE 变量。例如,当我在 DEBUG 中运行我的应用程序时,我希望我的服务器是:

服务器=“ http://www.mytestserver.com ”;

当我在 RELEASE 中运行我的应用程序时,我希望我的服务器 URL 为:

服务器=“ http://www.myproductionserver.com ”;

我怎样才能做到这一点?

问候

4

2 回答 2

27

从这个链接开始:http ://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Types

除其他外,这部分意味着 Android Studio 项目中的模块可以使用 source-code/resources/etc 的单独“调试”和“发布”目录。

因此,例如,在由 Android Studio 创建的项目中(不是从 Eclipse 导入的),您可以在“build.gradle”中使用这些文件而无需任何额外配置:

  • <Module>/src/main/res/values/strings.xml(默认由IDE创建)
  • <Module>/src/debug/res/values/strings.xml(由您手动创建)
  • <Module>/src/release/res/values/strings.xml(由您手动创建)

调试目录的strings.xml文件中,你可以定义一个新的字符串资源如:

<string name="server_uri">http://www.mytestserver.com</string>

并且在发布目录的strings.xml文件中,你可以定义相同的字符串资源,但是使用不同的值:

<string name="server_uri">http://www.myproductionserver.com</string>

这些资源会在 Gradle 构建期间自动添加到目录中的其他字符串值中,具体取决于使用的构建类型 - 您无需进行任何显式配置。

于 2013-07-08T20:23:47.887 回答
4

Gradle 只能在app/build.gradle中添加字符串

您可以在此处存储:Server Urls、Google Map Api Key 等。

android {
//...
        buildTypes {
        release {
            resValue "string", "server_uri", "http ...1"
            resValue "string", "google_maps_key", "your key"
            shrinkResources true
            debuggable false
        }
        releaseStaging {
            resValue "string", "server_uri", "http ...2"
            resValue "string", "google_maps_key", "your key2"

            shrinkResources true
            debuggable false
        }
        debug {
            resValue "string", "server_uri", "http ...3"
            resValue "string", "google_maps_key", "your key 3"
            shrinkResources true
            debuggable true
        }
    }

利用:

在代码中作为简单的字符串:

getString(R.string.server_uri);

在清单中:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/google_maps_key" />
于 2015-04-24T10:53:31.407 回答