Android Studio 編譯: Program type already present: XXX 解決方案
阿新 • • 發佈:2019-02-13
情況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