美文网首页
重复导jar包导致com.android.builder.dex

重复导jar包导致com.android.builder.dex

作者: Singal11 | 来源:发表于2019-03-26 17:13 被阅读0次

最近在用RePlugin框架开发插件应用,由于插件化开发需要把应用拆分成多个工程,每个工程都会用到一些工具类,于是我把通用的工具类打成了jar包。研究了一番gradle如何打包jar之后,jar包打好了,一用就出问题了,报了个"com.android.builder.dexing.DexArchiveMergerException"异常。

报错如下:

Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

回头仔细看了下每个module的gradle配置,发现是jar包重复导入了

主module的gradle配置

dependencies {
    // 在host的主module导入是为了共享给插件apk使用 
    implementation files('libs/xxx-utils-lib-1.0.0.jar')
    ...
}

子module的gradle配置

dependencies {
    // 用api导入是为了共享给app module使用
    api files('libs/xxx-utils-lib-1.0.0.jar')
    ...
}

将子module的gradle配置关键字更换为compileOnly即可解决问题(较旧的gradle版本使用的是provided关键字)

dependencies {
    // 使用compileOnly关键字在打包时不会将jar包打包进apk
    compileOnly files('libs/xxx-utils-lib-1.0.0.jar')
    ...
}

相关文章

网友评论

      本文标题:重复导jar包导致com.android.builder.dex

      本文链接:https://www.haomeiwen.com/subject/jzlnvqtx.html