关于错误---transformDexArchiveWithDexMergerForDebug FAILED 的解决方案

这两天一共遇到过两次这样的错误。

第一次,是这样的:

> Task :SSJG_FitfunSDK_marsAD_bugly:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED
AGPBI: {"kind":"error","text":"Program type already present: com.hb.a.a.a.a","sources":[{}],"tool":"D8"}

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':SSJG_FitfunSDK_marsAD_bugly:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\Plugins\Android\project\AndroidStudio\dlprojectSSJG\SSJG_FitfunSDK_marsAD_bugly\build\intermediates\transforms\dexBuilder\debug\47.jar,

从标红的地方可以最直接看出,是我的一个包重复了,下面的东西可以忽略了。

我的解决方案:

因为在我的项目中,是两个子工程和一个母工程,母工程是公用的,里面包含一个和子工程一样的jar包,所以我肯定得删除子工程中的jar包,再引入母工程,同时,让母工程的依赖包子工程可以随意调用。

具体做法:首先删除 子工程中libs 下面的 jar包以及其依赖;

implementation files('libs/HbTgSdk-1.1.jar')

其次:修改母工程中的jar包依赖为:

api files('libs/HbTgSdk-1.1.jar')

最后:让母工程能够被子工程引用,在build.gradle 中添加:

implementation project(path: ':FitfunSDK_DragonFighterPlugin_ssjg');

第二次遇到的问题也是大同小异,但解决方式不同;

AGPBI: {"kind":"error","text":"Program type already present: com.fitfun.DragonFighter.BuildConfig","sources":[{}],"tool":"D8"}

> Task :SSJG_FitfunSDK_marsAD_bugly:transformDexArchiveWithDexMergerForDebug FAILED
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\Plugins\Android\project\AndroidStudio\dlprojectSSJG\SSJG_FitfunSDK_marsAD_bugly\build\intermediates\transforms\dexBuilder\debug\45, D:\Plugins\Android\project\AndroidStudio\dlprojectSSJG\SSJG_FitfunSDK_marsAD_bugly\build\intermediates\transforms\externalLibsDexMerger\debug\0, D:\Plugins\Android\project\AndroidStudio\dlprojectSSJG\SSJG_FitfunSDK_marsAD_bugly\build\intermediates\transforms\dexBuilder\debug\43.jar, D:\Plugins\Android\project\AndroidStudio\dlprojectSSJG\SSJG_FitfunSDK_marsAD_bugly\build\intermediates\transforms\dexBuilder\debug\44.jar
Program type already present: com.fitfun.DragonFighter.BuildConfig
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 

很明显,又是一个jar包冲突的问题,但我仔细找了一些下,发现并没有这个jar 包,那怎么办呢?

网上找了一些方法,基本都不行,有个小伙伴加了一个分包的方法,我试了一下,问题解决了。

具体做法:

在build.gradle 中加入如下代码

defaultConfig {
    multiDexEnabled true
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值