Android Studio 编译: Program type already present: XXX 解决方案

版权声明:本文为【路易斯】原创文章,转载请注明出处! https://blog.csdn.net/RichieZhu/article/details/80320185

情况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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页