合并 dex 时出错
以下是依赖项。
ext {
anko_version='0.10.5'
support_lib='1.0.0-alpha1'
room_lib = "1.1.0"
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "androidx.cardview:cardview:$support_lib"
implementation "com.google.android.material:material:$support_lib"
implementation "androidx.appcompat:appcompat:$support_lib"
implementation "org.jetbrains.anko:anko:$anko_version"
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"
implementation "android.arch.persistence.room:runtime:$room_lib"
annotationProcessor "android.arch.persistence.room:compiler:$room_lib"
}
错误
- 出了什么问题: 任务":app:transformDexArchiveWithExternalLibsDexMergerForDebug"的执行失败。
com.android.builder.dexing.DexArchiveMergerException: 合并 dex 存档时出错:/app/build/intermediates/transforms/dexBuilder/debug/0.jar, 程序类型已存在:android.support.v4.os.ResultReceiver$1
这是因为你搞砸了依赖项。您必须完全迁移到 AndroidX 依赖项或继续使用支持库依赖项。因此 而不是
implementation "android.arch.persistence.room:runtime:$room_lib"
annotationProcessor "android.arch.persistence.room:compiler:$room_lib"
用
implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
另外,请务必检查您的gradle.properties
项目文件以包含
android.useAndroidX=true
android.enableJetifier=true
Jetifier 帮助依赖于旧支持包的库使用新的 AndroidX 包。
什么是喷射器? 这是一个Android Gradle插件任务(现在也可以用作独立工具(,在构建阶段被调用。AGP (>= 3.2.0( 会自动应用依赖转换,重写 JAR 和 AAR 依赖(以及传递依赖(的字节码和资源,以引用新的 androidx 打包的类和工件。 您还可以将其用作独立工具来单独迁移库。
喷气机官方文档
独立的 Jetifier 工具将依赖于支持库的库迁移到等效的 AndroidX 包。该工具允许您直接迁移单个库,而不是使用与 Android Studio 捆绑在一起的 Android gradle 插件。
附言我没有测试 Anko 是否适用于 AndroidX 依赖项,但如果即使启用了gradle.properties
中的这些属性也无法测试,您没有其他选择,只能回退到现在使用支持库。
在gradle.properties
上添加以下行
android.useAndroidX=true
android.enableJetifier=true
并更改您对 build.gradle(moudel:app( 的房间依赖性
implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
将依赖项迁移到androidx
依赖项。并在gradle.properties
中添加以下行(如果尚未创建,请在根文件夹中创建文件(。
android.useAndroidX=true
android.enableJetifier=true
希望这有帮助。
这就是对我有用的是 重构 -> 迁移到 Android Studio 中的 AndroidX 选项。 这似乎解决了我在尝试一次一个依赖项进行AndroidX迁移时可能错过的任何问题。 https://developer.android.com/jetpack/androidx/migrate
我遇到了同样的问题。
不要在项目中混合使用依赖项样式(androidx 和 com.android.support(。
在您的代码中尝试替换
implementation "androidx.appcompat:appcompat:$support_lib"
跟
implementation "com.android.support:appcompat-v7:$version_of_support_library"
您可以在此处找到依赖项迁移的完整列表。
我应该使用旧式依赖项,因为我需要 WorkManager,并且根据官方文档 WorkManager,目前没有 AndroidX 依赖项。
工作管理器类已经在 androidx.work 包中,但是 目前依赖于支持库 27.1 和关联的 Arch 组件版本。具有 AndroidX 依赖项的工作管理器版本 将在未来发布。
对我有用的是 Android Studio 中的重构 -> 迁移到 AndroidX 选项。 这似乎解决了我在尝试一次一个依赖项进行AndroidX迁移时可能错过的任何问题。 https://developer.android.com/jetpack/androidx/migrate
检查与 com.android.support 冲突的软件包并将其排除 从那个包。对我来说,我使用的是androidx软件包和FCM,其中 发生了冲突。所以,这为我修复了:
implementation ('com.google.firebase:firebase-core:16.0.4') {
exclude group: 'com.android.support'
}
添加以下插件
ionic cordova plugin add cordova-plugin-androidx
ionic cordova plugin add cordova-plugin-androidx-adapter
在 platform/android/gradle.properties 文件中添加这两行
android.useAndroidX=true
android.enableJetifier=true
这也是一个视频: https://youtu.be/0RaJlGipYHc
对于我的实例,我已经从 实现 'com.github.bumptech.glide:glide:4.0.0 自 实现 'com.github.bumptech.glide:glide:4.7.1'