在Android Studio中,我创建了两个配置:
如何在代码中确定我选择的配置?
我知道buildConfigField
中有/app/build.gradle
但buildTypes
的名称与configuration
名称不对应,所以我想知道这些名称是如何组合在一起的
android {
...
defaultConfig {
...
}
buildTypes {
debug {
...
buildConfigField 'boolean', 'DEBUG', 'true'
}
release {
...
}
}
}
我认为在Android Studio中,configuration
对应于Xcode中的schema
,而buildConfigField
对应于Xcode中的Environment Variable
(我来自iOS世界)。
答案 0 :(得分:1)
您可以配置不同的资源集。默认情况下,main
和debug
已存在。要在运行时确定用于构建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
库 debug
与release
是构建类型,构建变体的一个维度。您可以通过Build Variants工具选择运行配置使用的构建变体,默认情况下停靠在Android Studio IDE窗口的左下方。
要根据debug
与release
进行不同的代码行为,您可以:
检查BuildConfig.BUILD_TYPE
,debug
或release
根据构建类型和/或产品风味,使用buildConfigField
将值注入Gradle BuildConfig
使用resConfig
将值注入资源,例如字符串资源
每种构建类型使用自定义源集(例如,src/main/
用于公共代码,src/debug/
用于特定于调试的代码,src/release/
用于特定于发行版的代码)