首页 > 解决方案 > Gradle:程序类型已经存在

问题描述

我正在尝试开始使用 libaums 项目(https://github.com/magnusja/libaums)。我编写了一个类 Log,它反映了 android.util.Log 的方法,但将所有内容写入文件(因为我无法访问 android 上的调试输出流)。我无法理解如何从我编写的模块中构建一个包并将其作为本地依赖项包含到 libaums 项目中(Gradle 编译:找不到包),所以我决定只导入 Log.java(这是一个 com在两个 libaums 项目(应用程序和实际的 libaums 库)中实现 Log 类的 .iglogger 包。这反过来又在合并 dex 文件的阶段产生了一个问题——因此 app 项目同时依赖于 Log 类和 libaums,而 libaums 也使用 Log 类。

13684:09:44:38.705 [ERROR] [com.android.build.gradle.internal.tasks.DexMergingTaskDelegate] java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
13861:Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
13649:09:44:38.698 [ERROR] [org.gradle.api.Project] D8: Program type already present: com iglogger.Log
13685:Program type already present: com.iglogger.Log
13862:Program type already present: com.iglogger.Log
13871:Program type already present: com.iglogger.Log

经过一番研究,解决方案似乎是我必须在将 libaums 导入 app project 时排除对 Log.java (即 com.iglogger.Log)的依赖。但是在我的情况下,我究竟应该怎么做呢?看来我已经在 libaums 项目中声明了对 Log.java 的依赖关系,这样我以后就可以排除它了。对吧?如果是这样,那怎么办?

标签: javagradle

解决方案


因此,通过从依赖于 lib 项目的应用程序项目中删除文件(com/iglogger)来解决问题。也就是说,java 中的import语句似乎不仅包括要使用的包的声明,还包括包本身的对象。


推荐阅读