2017-06-19 161 views
5

我最近安装了最新的Canary版本的Android Studio,它目前使用的是Android Gradle插件3.0.0-alpha4(以前是2.3.3)。Android gradle 3.0.0 buildConfigField更新后警告

我现在得到一个警告我的所有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 
} 

的警告读到这样:

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" 

而且有像他们一样的100对我的各个领域,并建立类型。我如何解决它们以及实际告诉我的警告是什么?

+1

不知道如何解决这个问题,但警告是自我解释为(已经提到)这种情况下建立的变量:构建系统只是警告你一些'buildConfigField'正在被重新分配。两个示出的字段被重新分配到相同的值,这暗示,要么A)构建脚本配置错误,并评估一些表达两次B)构建脚本具有重复转让C)本身的gradle评估构建脚本两次,并警告您自己的行动 – Vasiliy

+0

我曾与3.0.0-的α4以及一些奇怪的警告/错误,这是固定移动回3.0.0-素α3很奇怪。也许给一个尝试? – ItWillDo

+1

是的,我相当肯定,这是指向一个问题在我的构建脚本为@Vasiliy提及。我定义默认的调试和发布版本类型的配置领域,也生成类型为对方的味道,它看起来像,因为我在这两个'debug'定义它们和'debug_flavor_1'等,是的gradle指出了这一点作为一个错误的位置它之前没有。我已将默认的调试和发布类型重命名为'debug_default'和'release_default',并且所有错误似乎都消失了。 –

回答

2

构建系统会警告您某些buildConfigField正在重新分配。

两个显示的字段被重新分配到相同的值,这暗示了下列情况之一可能会发生:

  1. 构建脚本配置错误,并评估一些表达两次
  2. 您构建脚本有重复转让
  3. gradle这个本身评估构建脚本两次,并警告您自己的行动
+3

如何抑制警告任何想法。更换buildConfigValues依赖于构建变体是一种正常的使用情况下 – for3st

+0

@ for3st,我不知道。 – Vasiliy

3

原因是心病直接由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' 
} 

在这种情况下,你会得到警告的buildType阶段

警告:BuildType(期):buildConfigField 'ENABLE_CRASH_REPORTING' 值被替换:假 - >真

原因是非常简单和明显,阶段继承所有字段从调试然后阶段取代它,因为你可能想为它们分配不同的值阶段(如上例)。可能的解决方法可以用

signingConfig signingConfigs.debug 

这被替换

initWith(buildTypes.debug) 

将消除签署错误,您通常会得到构建阶段建立的时候。但是现在配置中的主要区别是阶段在这种情况下不会从调试继承构建变量,因此您也不会收到任何警告。你还必须redifine所有阶段阶段没有更多的从调试继承

相关问题