![](/img/trans.png)
[英]Execution failed for task ':backend:endpointsClientLibs' when increasing com.android.tools.build:gradle version
[英]Android Gradle build fails dexBuilderDebug task, after updating to Kotlin 1.4
我嘗試將我的 Android 項目更新為 Kotlin 1.4.0
,因為它現在正式穩定,更新后我遇到了問題。 我不會在這里發布整個堆棧,因為它很長,但它的頂部看起來像這樣:
...
> Task :app:transformClassesWithFirebasePerformancePluginForDebug
java.lang.ClassNotFoundException: javax.mail.internet.MimeBodyPart
> Task :app:mergeDebugJavaResource
> Task :app:dexBuilderDebug FAILED
org.gradle.workers.WorkerExecutionException: There was a failure while executing work items
...
尋找一個原因,在堆棧的較低位置,我發現了這個:
...
Caused by: org.gradle.tooling.BuildException: Failed to process:
/bitrise/src/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/0,
/bitrise/src/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/1,
/bitrise/src/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/2
...
這讓我得出結論,無法正確構建 Firebase 性能庫。 我正在使用 Firebase 性能版本19.0.8
和 gradle 類路徑插件版本1.3.1
。 我已經有一段時間沒有更改它了,恢復到早期版本並不能解決問題。 堆棧上注冊的最后一個錯誤是這樣的:
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
at com.android.builder.dexing.D8DexArchiveBuilder.getExceptionToRethrow(D8DexArchiveBuilder.java:151)
at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:118)
at com.android.build.gradle.internal.dexing.DexWorkActionKt.process(DexWorkAction.kt:194)
... 33 more
Caused by: java.lang.IllegalStateException: Unexpected non-class file: META-INF/versions/9/kotlin/reflect/jvm/internal/impl/serialization/deserialization/builtins/BuiltInsResourceLoader.class
我已經確定,刪除 Firebase Performance 庫並恢復到 Kotlin 1.3.71
可以解決問題,但我想為項目的未來保留它們,所以我正在尋找其他解決方案。
我的build.gradle
文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'
apply plugin: 'androidx.navigation.safeargs.kotlin'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.firebase.firebase-perf'
apply from: "dependencies.gradle"
apply from: "buildtypes.gradle"
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 23
targetSdkVersion 29
versionCode 100
versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
archivesBaseName = "$applicationId-$versionName-$versionCode"
}
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
buildFeatures {
dataBinding = true
}
}
以及完整的依賴項列表:
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:$versions.coreDesugaring"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation "androidx.core:core:$versions.core"
implementation "androidx.core:core-ktx:$versions.core"
implementation "androidx.appcompat:appcompat:$versions.appCompat"
implementation "androidx.browser:browser:$versions.browser"
implementation "androidx.constraintlayout:constraintlayout:$versions.constraintLayout"
implementation "androidx.legacy:legacy-support-v4:$versions.legacy"
// UI
implementation "com.google.android.material:material:$versions.material"
implementation "com.appyvet:materialrangebar:$versions.materialRangeBar"
implementation "com.wdullaer:materialdatetimepicker:$versions.datetimepicker"
// Lifecycle
implementation "androidx.lifecycle:lifecycle-extensions:$versions.lifecycle"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$versions.lifecycle"
// Navigation component
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
// Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$versions.coroutines"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$versions.coroutines"
// Koin
implementation "org.koin:koin-android:$versions.koin"
implementation "org.koin:koin-androidx-ext:$versions.koin"
implementation "org.koin:koin-androidx-scope:$versions.koin"
implementation "org.koin:koin-androidx-viewmodel:$versions.koin"
// Work Manager
implementation "androidx.work:work-runtime:$versions.work"
implementation "androidx.work:work-runtime-ktx:$versions.work"
// Flipper
debugImplementation "com.facebook.soloader:soloader:$versions.soloader"
debugImplementation "com.facebook.flipper:flipper-network-plugin:$versions.flipper"
debugImplementation "com.kgurgul.flipper:flipper-realm-android:$versions.flipperRealm"
debugImplementation "com.facebook.flipper:flipper:$versions.flipper"
releaseImplementation "com.facebook.flipper:flipper-noop:$versions.flipper"
// Location & Maps
implementation "com.google.android.gms:play-services-maps:$versions.playLocation"
implementation "com.google.android.gms:play-services-location:$versions.playLocation"
implementation "com.google.maps.android:android-maps-utils:$versions.mapUtils"
// Logging
implementation "com.jakewharton.timber:timber:$versions.timber"
implementation "org.slf4j:slf4j-api:$versions.slf4j"
implementation "com.github.tony19:logback-android:$versions.logback"
// Databases
implementation "com.github.sevar83:android-spatialite:$versions.spatialite"
// Archives
implementation "org.zeroturnaround:zt-zip:$versions.ztZip"
// Dialogs
implementation "com.afollestad.material-dialogs:core:$versions.materialDialogs"
implementation "com.afollestad.material-dialogs:datetime:$versions.materialDialogs"
implementation "com.afollestad.material-dialogs:lifecycle:$versions.materialDialogs"
// Permissions
implementation "com.karumi:dexter:$versions.dexter"
implementation("dev.doubledot.doki:library:$versions.doki") {
transitive = true
}
// JSON
implementation "com.squareup.moshi:moshi:$versions.moshi"
implementation "com.squareup.moshi:moshi-kotlin:$versions.moshi"
// Firebase
implementation "com.google.firebase:firebase-analytics:$firebase_versions.analytics"
implementation "com.google.firebase:firebase-crashlytics:$firebase_versions.crashlytics"
implementation "com.google.firebase:firebase-perf:$firebase_versions.performance"
// Payments
implementation "com.android.billingclient:billing:$versions.billing"
implementation "com.android.billingclient:billing-ktx:$versions.billing"
// Testing
testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
testImplementation "junit:junit:$test_version.junit"
testImplementation "androidx.test:core:$test_version.androidTest"
testImplementation "androidx.test:runner:$test_version.androidTest"
為什么這個構建失敗了? 是Kotlin 1.4.0
的問題,還是依賴有問題? 不回退到之前的Kotlin版本能解決這個問題嗎?
這似乎是一個 AGP 問題,將在 4.1.0 版中解決。 更多細節在這里 - https://issuetracker.google.com/issues/165535092
作為解決方法,建議應用 4.1.0-rc02 更新
classpath 'com.android.tools.build:gradle:4.1.0-rc02'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.