为什么android.arch.navigation导致程序类型已经存在:android.support.v4.os.ResultReceiver $1?

为什么android.arch.navigation导致程序类型已经存在:android.support.v4.os.ResultReceiver ?,第1张

概述我正在使用AndroidStudio版本AndroidStudio3.2Canary14Build#AI-181.4668.68.32.4763614,builtonMay4,2018JRE:1.8.0_152-release-1136-b02x86_64JVM:OpenJDK64-BitServerVMbyJetBrainss.r.oMacOSX10.11.6在调查新的Architectural导航组件android.a

我正在使用Android Studio版本

AndroID Studio 3.2 Canary 14Build #AI-181.4668.68.32.4763614, built on May 4, 2018JRE: 1.8.0_152-release-1136-b02 x86_64JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.oMac OS X 10.11.6

在调查新的Architectural导航组件androID.arch.navigation时,我遇到了这个构建失败.

AGPBI: {"kind":"error","text":"Program type already present: androID.support.v4.os.ResultReceiver","sources":[{}],"tool":"D8"}:app:transformDexArchiveWithExternallibsDexMergerForDeBUG FailedFAILURE: Build Failed with an exception.* What went wrong:Execution Failed for task ':app:transformDexArchiveWithExternallibsDexMergerForDeBUG'.> com.androID.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ......  Program type already present: androID.support.v4.os.ResultReceiver

我的应用程序gradle build类似于: –

apply plugin: 'com.androID.application'apply plugin: "androIDx.navigation.safeargs"androID {    compileSdkVersion 'androID-P'    defaultConfig {        applicationID "com.research.frager"        minSdkVersion 19        targetSdkVersion 28        versionCode 1        versionname "1.0"        testInstrumentationRunner "androIDx.test.runner.AndroIDJUnitRunner"    }    buildTypes {        release {            MinifyEnabled false            proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-rules.pro'        }    }}dependencIEs {    def nav_version = "1.0.0-Alpha01"    implementation "androID.arch.navigation:navigation-fragment:$nav_version"    implementation "androID.arch.navigation:navigation-ui:$nav_version"    // optional - Test helpers    androIDTestImplementation "androID.arch.navigation:navigation-testing:$nav_version"    implementation filetree(dir: 'libs', include: ['*.jar'])    implementation 'androIDx.appcompat:appcompat:1.0.0-Alpha1'    implementation 'androIDx.constraintlayout:constraintlayout:1.1.0'    implementation 'androIDx.lifecycle:lifecycle-extensions:2.0.0-Alpha1'    testImplementation 'junit:junit:4.12'    androIDTestImplementation 'androIDx.test:runner:1.1.0-Alpha2'    androIDTestImplementation 'androIDx.test.espresso:espresso-core:3.1.0-Alpha2'}

和项目级gradle构建: –

buildscript {    repositorIEs {        Google()        jcenter()    }    dependencIEs {        classpath 'com.androID.tools.build:gradle:3.2.0-Alpha14'        classpath "androID.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-Alpha01"    }}allprojects {    repositorIEs {        Google()        jcenter()    }}task clean(type: Delete) {    delete rootProject.buildDir}

我已经尝试过重构到AndroIDX,但是我收到一条消息,说明在项目中找不到用法,为什么这个“v4”类仍然被提到?

解决方法:

我一直在看这个问题,我在这里通过在向库中添加依赖项时排除支持包来排序主要问题,这样做:

implementation("androID.arch.navigation:navigation-fragment:$nav_version") {  exclude group: 'com.androID.support'}

这将允许您运行该应用程序.但是,此工件使用支持工件而不是androIDx工件.查看文档,我们可以看到NavHostFragment正在扩展support.v4.Fragment
https://developer.android.com/reference/androidx/navigation/fragment/NavHostFragment@H_403_46@

因此,简而言之,就我所见,您可以看到三个选项.第一个是删除androIDx工件并使用支持工件,这最终取决于你的应用程序有多大.

第二个选项是删除导航库并返回到处理导航的经典方式,我想这可能对您不利.

第三种选择是实现你自己的导航主机,我不知道它会有多少工作.

这个响应将保持准确,直到谷歌发布该库的androIDx版本,我很惊讶他们还没有.

希望这很有帮助.

总结

以上是内存溢出为你收集整理的为什么android.arch.navigation导致程序类型已经存在:android.support.v4.os.ResultReceiver $1?全部内容,希望文章能够帮你解决为什么android.arch.navigation导致程序类型已经存在:android.support.v4.os.ResultReceiver $1?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1096575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存