首先异常信息是这样的
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
从最后一句字面意思翻译来看是,无法合并,当时没想太多,以为是引入依赖的第三方包有重复的,所以不能合并,但是当我检查里所有的引入的第三方包后发现,没有重复的,所以我就想到Clean一下,但是不管我怎么Clean怎么Rebuild项目都没有效果,这时心已凉,然后就想到用分包试试看看可不可以
defaultConfig {
applicationId "com.xxx.xxx.xxx"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
implementation 'com.android.support:multidex:1.0.2'
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
果然,异常变了!
从异常上看应该是由于classes.jar这个包导致了V4无法合并,用Ctrl+H找到了这个classes.jar所属的第三方依赖,但是又不能删了这个依赖,这就尴尬了,于是我想到了V4包的去重,但是如果项目引入的第三方依赖太多的话,一个个都去重又显得很麻烦,所以我用到了一个全部去重的方法
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
这样一试,果然项目正常跑起来了