Dan*_*son 15 android build.gradle android-gradle-plugin
我最近安装了最新的Canary版本的Android Studio,目前正在使用Android Gradle插件3.0.0-alpha4(之前的版本2.3.3).
我现在收到所有buildConfigFields的警告:
buildTypes {
def BOOLEAN = "boolean"
def STRING = "String"
def INT = "int"
def TRUE = "true"
def FALSE = "false"
def SOME_PER_BUILD_TYPE_FIELD = "SOME_PER_BUILD_TYPE_FIELD"
debug {
buildConfigField BOOLEAN, SOME_PER_BUILD_TYPE_FIELD, FALSE
}
release {
buildConfigField BOOLEAN, SOME_PER_BUILD_TYPE_FIELD, TRUE
}
Run Code Online (Sandbox Code Playgroud)
警告内容如下:
Warning:BuildType(debug): buildConfigField 'SOME_PER_BUILD_TYPE_FIELD' value is being replaced: false -> false
Warning:BuildType(debug): buildConfigField 'SOME_STRING_FIELD' value is being replaced: "999" -> "999"
Run Code Online (Sandbox Code Playgroud)
对于我的各种领域和构建类型,其中有100个.我如何解决它们以及实际告诉我的警告是什么?
Reh*_*han 18
Vasiliy正确地提到了这个原因.只是为它添加一点,一个可能的原因可能是当你有一个使用任何其他buildType初始化的buildType时.例如,考虑以下构建配置:
debug {
buildConfigField 'boolean', 'ENABLE_CRASH_REPORTING', 'false'
}
stage {
initWith(buildTypes.debug)
buildConfigField 'boolean', 'ENABLE_CRASH_REPORTING', 'true'
}
release {
buildConfigField 'boolean', 'ENABLE_CRASH_REPORTING', 'true'
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将收到buildType阶段的警告
警告:BuildType(阶段):buildConfigField'ENABLE_CRASH_REPORTING'值正被替换:false - > true
原因非常简单明了,stage继承了debug中的所有字段,然后stage替换了它,因为你可能希望为stage 赋予不同的值(如上例所示).可能的解决方法可能正在取代
initWith(buildTypes.debug)
Run Code Online (Sandbox Code Playgroud)
同
signingConfig signingConfigs.debug
Run Code Online (Sandbox Code Playgroud)
这将消除您在构建阶段构建时通常会遇到的签名错误.但现在配置的主要区别在于:在这种情况下,stage不会从debug继承构建变量,因此您也不会收到任何警告.此外,在这种情况下,您将不得不重新定义阶段中的所有构建变量,因为(已经提到)阶段不再继承自debug
Build system warns you that some buildConfigField is being re-assigned.
显示的两个字段将被重新分配为相同的值,这表明可能正在发生以下情况之一:
| 归档时间: |
|
| 查看次数: |
4234 次 |
| 最近记录: |