Android Studio 編譯: Program type already present: XXX 解決方案


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM