3情况1:个例
build.gradle 中
dependencies { classpath 'com.android.tools.build:gradle:3.1.1' // }
改成
dependencies { //目前最新版【2018年05月15日】 classpath 'com.android.tools.build:gradle:3.1.2' // }
情况2:确实是依赖冲突
Error: Program type already present: android.support.v4.app.xxx
例子:
引入以下依赖报该错误
//Paho Android Service implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2' implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.0.2'
执行命令:
gradlew -q app:dependencies
排查 support-v4 出现的依赖关系中 发现 org.eclipse.paho:org.eclipse.paho.android.service:1.0.2
依赖了 com.google.android:support-v4 注意不是 com.android.support:support-v4 !!!
坑:
//刚开始下意识去写了个排除,发现没有用。。。,原因就是它用 com.google.android:support-v4 不是 com.android.support implementation('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2'){ exclude group: 'com.android.support', module: 'support-v4' }
总结:
找到依赖的问题根源后进行排除,按提示报错的来灵活处理冲突问题!
排除方式1:
configurations { all*.exclude group: 'com.google.android', module: 'support-v4' //或者粗暴点,就没有上面的坑了 all*.exclude module: 'support-v4' } dependencies { ... implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2' implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.0.2' ... }
排除方式2:
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2' implementation('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') { exclude(group: 'com.google.android', module: 'support-v4') } /* 或者粗暴点,就没有上面的坑了 implementation('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') { exclude module: 'support-v4' } */
情况3:
com.android.support:xxx 等官方依赖包 v4 v7 v13 等版本号保持一致 比如 27.1.1