「已注销」 2025-07-25 15:20 采纳率: 25%
浏览 14

ARouter依赖问题

项目在添加了一个arr后出现了ARouter依赖问题,整个项目只有一个地方在使用com.alibaba:arouter-api:1.5.2,然后出现了这个错误。一直到不到错误位置和处理方法。麻烦各位指导。

AGPBI: {"kind":"error","text":"Type com.alibaba.android.arouter.routes.ARouter$$Group$$rtk is defined multiple times: F:\\project\\shenpi31\\shenpi31\\shenpi31\\MobileMapping\\app\\build\\intermediates\\project_dex_archive\\tongziRelease\\out\\com\\alibaba\\android\\arouter\\routes\\ARouter$$Group$$rtk.dex, F:\\project\\shenpi31\\shenpi31\\shenpi31\\MobileMapping\\app\\build\\intermediates\\external_libs_dex\\tongziRelease\\out\\classes.dex","sources":[{"file":"F:\\project\\shenpi31\\shenpi31\\shenpi31\\MobileMapping\\app\\build\\intermediates\\project_dex_archive\\tongziRelease\\out\\com\\alibaba\\android\\arouter\\routes\\ARouter$$Group$$rtk.dex"}],"tool":"D8"}
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Type com.alibaba.android.arouter.routes.ARouter$$Group$$rtk is defined multiple times: F:\project\shenpi31\shenpi31\shenpi31\MobileMapping\app\build\intermediates\project_dex_archive\tongziRelease\out\com\alibaba\android\arouter\routes\ARouter$$Group$$rtk.dex, F:\project\shenpi31\shenpi31\shenpi31\MobileMapping\app\build\intermediates\external_libs_dex\tongziRelease\out\classes.dex
    at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:132)
    at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:119)
    at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)
    at com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:445)
    at com.android.build.gradle.internal.tasks.Workers$ActionFacade.run(Workers.kt:348)
    at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50)
    at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61)
    at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56)
    at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215)
    at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
    at com.android.tools.r8.utils.O.a(:65)
    at com.android.tools.r8.D8.run(:11)
    at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:117)
    ... 34 more
Caused by: com.android.tools.r8.utils.b: Error: F:\project\shenpi31\shenpi31\shenpi31\MobileMapping\app\build\intermediates\project_dex_archive\tongziRelease\out\com\alibaba\android\arouter\routes\ARouter$$Group$$rtk.dex, Type com.alibaba.android.arouter.routes.ARouter$$Group$$rtk is defined multiple times: F:\project\shenpi31\shenpi31\shenpi31\MobileMapping\app\build\intermediates\project_dex_archive\tongziRelease\out\com\alibaba\android\arouter\routes\ARouter$$Group$$rtk.dex, F:\project\shenpi31\shenpi31\shenpi31\MobileMapping\app\build\intermediates\external_libs_dex\tongziRelease\out\classes.dex
    at com.android.tools.r8.utils.y0.a(:21)
    at com.android.tools.r8.utils.x0.a(:30)
    at com.android.tools.r8.utils.x0.a(:10)
    at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2048)
    at com.android.tools.r8.utils.x0.a(:6)
    at com.android.tools.r8.graph.A0$c.a(:6)
    at com.android.tools.r8.dex.a.a(:85)
    at com.android.tools.r8.dex.a.a(:12)
    at com.android.tools.r8.D8.d(:6)
    at com.android.tools.r8.D8.b(:1)
    at com.android.tools.r8.utils.O.a(:30)
    ... 36 more


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDexTongziRelease'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
     Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
     Type com.alibaba.android.arouter.routes.ARouter$$Group$$rtk is defined multiple times: F:\project\shenpi31\shenpi31\shenpi31\MobileMapping\app\build\intermediates\project_dex_archive\tongziRelease\out\com\alibaba\android\arouter\routes\ARouter$$Group$$rtk.dex, F:\project\shenpi31\shenpi31\shenpi31\MobileMapping\app\build\intermediates\external_libs_dex\tongziRelease\out\classes.dex


  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-07-25 15:21
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    你遇到的错误是 Android 项目中重复定义了类 com.alibaba.android.arouter.routes.ARouter$$Group$$rtk,这是由于 ARouter 的依赖被多次引入 导致的。这种问题通常出现在以下几种情况:

    • 项目中同时引用了多个 ARouter 的版本(如 arouter-apiarouter-compiler);
    • 某个模块或库中包含了 ARouter 的编译时依赖(如 apiimplementation),而主项目也引用了它;
    • 使用了 providedcompileOnly 等作用域导致运行时冲突。

    ✅ 问题分析

    从你的描述来看,整个项目只有一个地方使用了 com.alibaba:arouter-api:1.5.2,但依然出现了重复类的问题,说明 可能存在其他方式引入了 ARouter,例如:

    • 其他模块中使用了 api 引入了 ARouter;
    • 使用了 arouter-compiler 但未正确排除;
    • 使用了某些第三方库,其中内嵌了 ARouter;
    • 构建过程中存在缓存问题,导致旧版本残留。

    🔧 解决方案

    以下是逐步排查和解决这个问题的详细步骤:

    1. 检查所有模块的依赖配置

    Project Structure > Module Settings > Dependencies 中查看所有模块是否引入了 ARouter 相关的依赖。

    重点:确保只有主模块(App module)中使用了 implementation 'com.alibaba:arouter-api:1.5.2',其他模块不要使用 apiimplementation 引入 ARouter。


    2. 检查 Gradle 文件中的依赖声明

    打开 build.gradle 文件,检查所有模块的 dependencies 部分,尤其是:

    dependencies {
        implementation 'com.alibaba:arouter-api:1.5.2'
    }
    

    注意:如果你使用了 arouter-compiler,请确认是否添加了 annotationProcessor 而不是 implementation


    3. 排除重复的 ARouter 依赖

    如果某个模块中不小心引入了 ARouter,可以使用 exclude 来排除它。例如:

    implementation('some.library:library-with-arouter') {
        exclude group: 'com.alibaba', module: 'arouter-api'
    }
    

    4. 清理并重新构建项目

    有时候缓存会导致问题,尝试执行以下命令:

    ./gradlew clean build --refresh-dependencies
    

    或者手动删除 build/ 文件夹后重新构建。


    5. 检查 arouter-compiler 的使用

    如果你使用了 ARouter 的注解处理器,确保只在主模块中使用:

    dependencies {
        annotationProcessor 'com.alibaba:arouter-compiler:1.5.2'
    }
    

    不要在子模块中使用 annotationProcessor,否则会生成重复的类。


    6. 检查是否引入了其他包含 ARouter 的库

    有些第三方库可能自带 ARouter,例如:

    • 某些路由框架、组件化框架等。

    你可以通过以下命令查找项目中所有依赖的 ARouter:

    ./gradlew dependencies
    

    然后搜索 arouter-apiarouter-compiler,看是否有多个版本。


    7. 修改后的 Gradle 示例(关键模块)

    假设你只有一个 App 模块使用 ARouter,其他模块不使用,那么你应该这样写:

    // app/build.gradle
    dependencies {
        implementation 'com.alibaba:arouter-api:1.5.2'
        annotationProcessor 'com.alibaba:arouter-compiler:1.5.2'
    }
    
    // 其他模块(如 library module)
    dependencies {
        // 不要使用 implementation 或 api 引入 arouter-api
    }
    

    🚫 常见错误示例(避免)

    以下写法可能会导致重复依赖:

    // ❌ 错误示例:在子模块中使用 api 引入 arouter-api
    dependencies {
        api 'com.alibaba:arouter-api:1.5.2'
    }
    

    ✅ 最终建议

    | 步骤 | 内容 | |------|------| | 1 | 检查所有模块的依赖,确保只在主模块中使用 implementation 'com.alibaba:arouter-api:1.5.2' | | 2 | 排除其他模块中可能引入的 ARouter 依赖 | | 3 | 清理项目并重新构建 | | 4 | 检查是否使用了 annotationProcessor,确保只在主模块中使用 | | 5 | 查找所有依赖项,确保没有多个版本的 ARouter 被引入 |


    📝 总结

    重复类 com.alibaba.android.arouter.routes.ARouter$$Group$$rtk 是因为 ARouter 的依赖被多次引入,解决方案包括:

    • 检查所有模块的依赖配置
    • 排除重复的 ARouter 依赖
    • 仅在主模块中使用 implementationannotationProcessor
    • 清理项目并重新构建

    如果你能提供项目的 build.gradle 文件内容,我可以进一步帮你定位具体问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月25日