
我正在使用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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)