2

在 Android Studio 中,我创建了两个配置:

在此处输入图像描述

如何在代码中确定我选择了哪个配置?

我知道有buildConfigField/app/build.gradle但名称与名称buildTypes不对应configuration,所以我想知道它们是如何组合在一起的。

android {
    ...

    defaultConfig {
        ...
    }
    buildTypes {
        debug {
            ...
            buildConfigField 'boolean', 'DEBUG', 'true'
        }
        release {
            ...
        }
    }
}

我假设在 Android Studio 中,aconfiguration对应schema于 Xcode 中的 a,abuildConfigField对应Environment Variable于 Xcode 中的(我来自 iOS 世界)。

4

2 回答 2

1

您可以配置不同的资源集。默认情况下main并且debug已经存在。要在运行时确定用于构建 apk 的集合,请在每个资源集合中创建一个新资源文件,例如

app/src/main/res/values/resourceset.xmlapp/src/debug/res/values/resourceset.xml

并在其中放置一个字符串或整数值,如下所示:

<resources>
     <string name="resource_set">debug</string>
</resources>

<resources>
     <string name="resource_set">main</string>
</resources>

然后,您可以使用getString()来获取值,R.string.resource_set并且可以检测使用了哪个资源集。

我正在使用这种技术来包含不同的 Google API 客户端 ID,具体取决于所使用的资源集(启用使用 Google API 进行调试并使用另一个指纹发布然后进行调试)。

于 2017-01-05T13:20:57.377 回答
1

如何在代码中确定我选择了哪个配置?

你不知道,因为运行配置是 IDE 的东西,而不是 Android 的东西。

我想要的是定义可以在代码中使用的环境变量值,例如在调试构建变体中我想连接到开发数据库,​​在发布构建变体中我想连接到生产数据库

这些都与运行配置无关。运行配置用于配置要运行的内容:

  • 主要的app
  • 主要测试app
  • something图书馆的测试
  • 等等

debugvsrelease是构建类型,构建变体的一个维度。您可以通过 Build Variants 工具选择运行配置使用的构建变体,该工具默认停靠在 Android Studio IDE 窗口的左下方。

要基于debugvs获得不同的代码行为release,您可以:

  • 检查BuildConfig.BUILD_TYPE,这将是debugrelease

  • 用于根据构建类型和/或产品风格从 GradlebuildConfigField中注入值BuildConfig

  • 用于resConfig向资源中注入值,例如字符串资源

  • 为每个构建类型使用自定义源集(例如,src/main/用于您的通用代码、src/debug/用于调试特定代码、src/release/用于特定于发布的代码)

于 2017-01-05T13:31:03.060 回答