zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    如何不传入对象就获得某对象的方法---ThreadLocal类
    Linux系统主目录被更改,怎么修改回去?
    tree命令的安装
    Linux命令学习man
    当重载函数的参数是Object和Object数组的时候会发生什么情况!!!
    Linux学习(二)之内核、系统调用、库
    使用puttygen转换OpenSSH SSH2私钥为RSA PEM格式
    docker-compose使用详解
    svn迁移到gitlab
    linux快速启动http端口
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/10559122.html
Copyright © 2011-2022 走看看