如何确定 Android 中选择的“配置”?
How to determine selected `configuration` in Android?
在 Android Studio 中我创建了两个配置:
如何在代码中确定我选择了哪种配置?
我知道 /app/build.gradle
中有 buildConfigField
但是 buildTypes
的名称与 configuration
的名称不对应,所以我想知道这是怎么回事合体。
android {
...
defaultConfig {
...
}
buildTypes {
debug {
...
buildConfigField 'boolean', 'DEBUG', 'true'
}
release {
...
}
}
}
我假设在 Android Studio 中,configuration
对应于 Xcode 中的 schema
,而 buildConfigField
对应于 Environment Variable
在 Xcode(我来自 iOS 世界)。
您可以配置不同的资源集。默认情况下 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 和用另一个指纹释放然后调试)。
How can I determine in code which configuration I selected?
你不需要,因为 运行 配置是 IDE 的东西,而不是 Android 的东西。
what I want is to define environment variable values that I can use in code, e.g. in a debug build variant I want to connect to the development database, in a release build variant I want to connect to the production database
None 其中与 运行 配置有关。 运行 配置是为了配置什么是 运行:
- 主要
app
- 主要测试
app
something
库测试
- 等等
debug
与 release
是构建类型,是构建变体的一个维度。您可以通过 Build Variants 工具选择 运行 配置使用的构建变体,该工具默认停靠在 Android Studio IDE window.[=28 的左下角=]
要根据 debug
与 release
具有不同的代码行为,您可以:
检查 BuildConfig.BUILD_TYPE
,它将是 debug
或 release
根据构建类型and/or产品风味
[=,使用buildConfigField
将值从Gradle注入BuildConfig
54=]
使用resConfig
给资源注入值,比如字符串资源
为每个构建类型使用自定义源集(例如,src/main/
用于您的通用代码,src/debug/
用于特定于调试的代码,src/release/
用于特定于发布的代码代码)
在 Android Studio 中我创建了两个配置:
如何在代码中确定我选择了哪种配置?
我知道 /app/build.gradle
中有 buildConfigField
但是 buildTypes
的名称与 configuration
的名称不对应,所以我想知道这是怎么回事合体。
android {
...
defaultConfig {
...
}
buildTypes {
debug {
...
buildConfigField 'boolean', 'DEBUG', 'true'
}
release {
...
}
}
}
我假设在 Android Studio 中,configuration
对应于 Xcode 中的 schema
,而 buildConfigField
对应于 Environment Variable
在 Xcode(我来自 iOS 世界)。
您可以配置不同的资源集。默认情况下 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 和用另一个指纹释放然后调试)。
How can I determine in code which configuration I selected?
你不需要,因为 运行 配置是 IDE 的东西,而不是 Android 的东西。
what I want is to define environment variable values that I can use in code, e.g. in a debug build variant I want to connect to the development database, in a release build variant I want to connect to the production database
None 其中与 运行 配置有关。 运行 配置是为了配置什么是 运行:
- 主要
app
- 主要测试
app
something
库测试- 等等
debug
与 release
是构建类型,是构建变体的一个维度。您可以通过 Build Variants 工具选择 运行 配置使用的构建变体,该工具默认停靠在 Android Studio IDE window.[=28 的左下角=]
要根据 debug
与 release
具有不同的代码行为,您可以:
检查
BuildConfig.BUILD_TYPE
,它将是debug
或release
根据构建类型and/or产品风味
[=,使用buildConfigField
将值从Gradle注入BuildConfig
54=]使用
resConfig
给资源注入值,比如字符串资源为每个构建类型使用自定义源集(例如,
src/main/
用于您的通用代码,src/debug/
用于特定于调试的代码,src/release/
用于特定于发布的代码代码)