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 g。v 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 g。v 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 '
}