【问题标题】:Android studio , with multi dex ,how to avoid zipexception ,duplicate entry of a class being used in library aarAndroid studio,具有多 dex,如何避免 zipexception,在库 aar 中使用的类的重复条目
【发布时间】:2025-12-29 04:30:07
【问题描述】:

在我的 android studio 项目中,我使用 flurry 和 volley sdk。最近,我通过 aar 在我的项目中添加了一个新的 sdk 作为新模块。这个库也使用了 flurry 和 volley。

所以当我尝试运行我的代码时,我最终会出现以下错误

错误:任务 ':app:packageAllDebugClassesForMultiDex' 执行失败。

java.util.zip.ZipException:重复条目:com/flurry/sdk/gh.class

我们将非常感谢任何解决此问题的帮助。在此先感谢。

【问题讨论】:

  • 发布您的build.gradle
  • 你在为这些库使用任何 jar 吗?
  • 是的。该模块从 aar 构建,可能会使用一些 flurry sdk 作为 jars.Also 在我的项目中,我使用 flurry sdk 作为 jars。
  • 那么有多个相同罐子的实例,这就是你有重复条目异常的原因。您只需要维护类文件的单个实例
  • 请在此处发布完整的日志报告。

标签: java android android-studio


【解决方案1】:

在你的 build.gradle 中启用 multidex

 defaultConfig {


             // Enabling multidex support.
             multiDexEnabled true
         }

在你的应用程序类中使用 MultiDex.install(Context) 位于这个

public class YouApplication extends Application {

        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            MultiDex.install(this);
        }

    }

也试试这个

compile (project(':yoursdk')) { 
transitive = false 
}

【讨论】:

  • 我已经启用了multi dex。实际上在打包应用程序时它的重复类异常。您认为在 android-studio 中打包应用程序时有什么方法可以从 aar 中排除类文件?
  • 是的,你可以排除类看看这个*.com/questions/32008492/…
  • 你也写过这个 MultiDex.install(this);在代码中?
  • 是的,我确实尝试过上述解决方案来排除文件。但没有帮助。
  • sourceSets { main { java { exclude 'com/flurry/sdk/gh.class' } } }