如何在Android中确定所选的`配置?

时间:2017-01-05 13:16:06

标签: android android-studio android-buildconfig

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

enter image description here

如何在代码中确定我选择的配置?

我知道buildConfigField中有/app/build.gradlebuildTypes的名称与configuration名称不对应,所以我想知道这些名称是如何组合在一起的

android {
    ...

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

我认为在Android Studio中,configuration对应于Xcode中的schema,而buildConfigField对应于Xcode中的Environment Variable(我来自iOS世界)。

2 个答案:

答案 0 :(得分:1)

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

app/src/main/res/values/resourceset.xml  和 app/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进行调试,然后使用其他指纹进行调试,然后进行调试)。

答案 1 :(得分:1)

  

如何在代码中确定我选择的配置?

如果运行配置是IDE的东西,而不是Android的东西,那么你不会这样做。

  

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

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

  • app
  • 测试主app
  • 测试something

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

要根据debugrelease进行不同的代码行为,您可以:

  • 检查BuildConfig.BUILD_TYPEdebugrelease

  • 根据构建类型和/或产品风味,使用buildConfigField将值注入Gradle BuildConfig

  • 使用resConfig将值注入资源,例如字符串资源

  • 每种构建类型使用自定义源集(例如,src/main/用于公共代码,src/debug/用于特定于调试的代码,src/release/用于特定于发行版的代码)