如何定义在releaseBuildConfig中启用了debuggable = true,但仅针对特定的一组风格:
这是示例代码,包括试用版(不起作用):
flavorDimensions "project", "environment"
productFlavors {
basic {
dimension "project"
}
advanced {
dimension "project"
}
flavorDevelopment {
dimension "environment"
applicationId "ch.myproject.app.development"
debuggable true // this does not work
}
flavorTest {
dimension "environment"
applicationId "ch.myproject.app.test"
debuggable true // this does not work
}
flavorIntegration {
dimension "environment"
applicationId "ch.myproject.app.integration"
debuggable true // this does not work
}
flavorProduction {
dimension "environment"
applicationId "ch.myproject.app.production"
// just here debuggble has to be on the default (in buildTypes.debug = on AND in buildTypes.release = off )
// this is working
}
“debuggable true”语句在上面的代码示例中不起作用。 但它应该给你一个印象,我试图做的。
我唯一有效的发行版本就是flavorProduction。 我正在使用默认行为,它正常工作。
但所有其他内部版本都有flavorDevelopment,flavorTest,flavor Integration,以及我想要启用的调试功能。
我尝试了第二种方法:
applicationVariants.all { variant ->
// setting all releases expecting the Production one to debuggable
if (!variant.buildType.name.contains("ProductionRelease")) {
variant.buildType.debuggable = true
}
}
但是我收到了消息:
Error:(132, 0) Cannot set readonly property: debuggable for class: com.android.build.gradle.internal.api.ReadOnlyBuildType
有人知道如何使用gradle配置它吗?
先谢谢卢克
答案 0 :(得分:7)
debuggable
是the BuildType
object的属性,而不是the ProductFlavor
object的属性,因此(如您所见),在产品风格中编写debuggable true
将无效
通常,您将拥有debug
构建类型和release
构建类型,然后您将拥有flavorProductionDebug
和flavorProductionRelease
等构建变体。听起来这对你来说还不够,而且你需要保持debug
和release
构建类型之间的不同,同时还要debuggable true
。
要实现此目的,您可以制作第三种构建类型。
buildTypes {
debug { ... }
release { ... }
releaseDebuggable {
initWith release
debuggable true
}
}
现在,您的releaseDebuggable
构建类型与您的release
构建类型完全相同,但可调试!
这会产生为您的所有产品口味创建fooReleaseDebuggable
构建变体的副作用。如果您要取消flavorProductionReleaseDebuggable
以外的所有内容,可以使用the variantFilter
interface。
答案 1 :(得分:1)