AndroidStudio3.0へのアップグレードで発生した問題と解決策

Android Studio3.0、Android Studio3.0へのアップグレードで発生した問題と解決策は、今回の大きなアップデートです。アップグレード後、コンパイルが実際に大幅に改善され、最新のエラーデバッグツールが追加されていることがわかりました。つまり、Googleの新しいバージョンはまだ非常に誠実です。

発生した問題

1、flavorDimensions

エラーログ

エラー:すべてのフレーバーは、名前付きフレーバーディメンションに属している必要があります。詳細については、https://d.android.com/r/tools/flavorDimensions-missing-error-message.htmlをご覧ください。

理由:gradle3.0はマルチバージョンパッケージにflavorDimensionsを使用する必要があり、次のように変更します。

android {
//… defaultConfig
{
//…
flavorDimensions“ dimen”
}
}

次に、productFlavorsに対応する変更を加えます

productFlavors {
productA {ディメンション「dimen」}
productB {ディメンション「dimen」}
}

複数のflavorDimensionsを構成する

android {
//… defaultConfig
{
//…
flavorDimensions“ dimenA”、” dimenB”
}
}
productFlavors {
productA {dimension“ dimenA”}
productB {dimension“ dimenB”}
productC {dimension“ dimenA”}
}

2.
エラーログという名前のapk

タイプcom.android.build.gradle.internal.api.ApkVariantOutputImplのApkVariantOutputImpl_Decorated {apkData = Main {type = MAIN、fullName = busDebug、filters = []}}の読み取り専用プロパティ 'outputFile'の値を設定できません。ファイルを開く

前のコード:

applicationVariants.all {バリアント->
バリアント.outputs.each {出力->
def outputFile = output.outputFile
if(outputFile!= null && outputFile.name.endsWith( '
。apk ')){ def fileName =“ XXX- de fa u l t Co n fi gv e r s i o n Co de デフォルトのConfig。バージョンコード- {defaultConfig.versionName}- r e l e a s e Ti m e - release T ime()− {productFlavors.name [0]}”
if(variant.buildType.name == 'release'){
fileName + = '。apk'
} else if(variant.buildType.name == 'debug' ){
fileName + = '_ debug.apk'
} else {
fileName + = '_ other.apk'
}
output.outputFile = new File(outputFile.parent、fileName)
}
}
}

gradle3.0をそれぞれallに、output.outputFileをoutputFileNameに置き換えます。新しいファイルは必要ありません、変更されたコード:

applicationVariants.all {バリアント->
variant.outputs.all {
def fileName =“ XXX- de fa u l t Co n fi gv e r s i o n Co de デフォルトのConfig。バージョンコード- {defaultConfig.versionName}- r e l e a s e Ti m e - release T ime()− {productFlavors.name [0]}”
if(variant.buildType.name == 'release'){
fileName + = '。apk'
} else if(variant.buildType.name == 'debug' ){
fileName + = '_ debug.apk'
} else {
fileName + = '_ other.apk'
}
outputFileName = fileName
}
}

Build-> Generate Signed APK ...を使用する場合、生成されたapkパッケージは、チャネル名にちなんで名付けられたフォルダーに配置されることに注意してください。

3.アノテーションプロセッサはここで明示的に宣言する必要があります。annotationProcessor構成に追加してください。

エラーログ

エラー:タスク ':app:javaPreCompilePreProductDebug'の実行に失敗しました。
ここで、注釈プロセッサを明示的に宣言する必要があります。コンパイルクラスパスに対する次の依存関係には、アノテーションプロセッサが含まれていることがわかります。それらをannotationProcessor構成に追加してください。
--butterknife-7.0.1.jar(butterknife-7.0.1.jar)
または、android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = trueを設定して、以前の動作を続行します。このオプションは非推奨であり、将来削除されることに注意してください。
詳細については、https:
//developer.android.com/r/tools/annotation-processor-error-message.htmlを参照してください。修复方案
android {
//… defaultConfig
{
//…
javaCompileOptions {
annotationProcessorOptions { includeCompileClasspath
true
}
}
}
}

4.Aapt2Exception

エラーログ

エラー:(113、5)エラー:スタイル属性 '@ android:attr / windowEnterAnimation'が見つかりません。
エラー:(113、5)エラー:スタイル属性 '@ android:attr / windowExitAnimation'が見つかりません。

エラー:java.util.concurrent.ExecutionException:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2エラー:詳細についてはログを確認してください
エラー:java.util.concurrent.ExecutionException:com.android。 tools.aapt2.Aapt2Exception:AAPT2エラー:詳細についてはログを確認してください
エラー:com.android.tools.aapt2.Aapt2Exception:AAPT2エラー:詳細についてはログを確認してください
エラー:タスク ':app:processPreProductDebugResources'の実行に失敗しました。
aaptの実行に失敗しました

解決策gradle.propertiesに次のコードを追加し、aapt2コンパイルを無効にします
android.enableAapt2 = false

5.その他

新しいバージョンのgradleはbuildToolsVersionを構成する必要はありません

パッケージをインポートするときの依存関係は次のようになります
{
implementationfileTree(include:['* .jar']、dir: 'libs')
androidTestImplementation…
implementationproject…
implementationfiles…
implementation…
testImplementation'junit:junit:4.12 '
}

おすすめ

転載: blog.csdn.net/hai_jian/article/details/81454443