最近、Android Studio の最新の Canary ビルドをインストールしました。現在、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
}
警告は次のようになります:
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
その理由は、ヴァシリー少し補足すると、他のビルドタイプで初期化されたビルドタイプがある場合が、原因の 1 つとして考えられます。たとえば、次のビルド構成を検討してください。
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(stage): buildConfigField 'ENABLE_CRASH_REPORTING' の値が置き換えられています: false -> true
理由は単純明快で、ステージすべてのフィールドを継承するデバッグその後ステージ異なる値を割り当てたい場合があるため、置き換えますステージ (上記の場合のように)回避策としては、
initWith(buildTypes.debug)
と
signingConfig signingConfigs.debug
これにより、ステージ ビルドを作成するときに通常発生する署名エラーが解消されます。ただし、現在の構成の主な違いは次のとおりです。ステージビルド変数は継承されませんデバッグこの場合、これについても警告は出ません。また、ビルド変数をすべて再定義する必要があります。ステージこの場合(すでに述べたように)ステージもはや継承されていないデバッグ