重复输入错误 - 依赖性和项目模块冲突 - Android

Duplicate Entry Error - Dependancy and Project Module Confliction - Android

首先。以下是我遇到的错误。

现在,我正在做的是如下所示....

我正在集成 IBM 的 Speech To Text 服务。我创建了一个演示 HERE!

我还在使用 IBM 的另外两项服务,名为 Personality InsightsCloudant Database.

我已经成功集成了 Speech To Text 示例。但是当我整合 Personality InsightsCloudant Database 时,它给了我上面的 error.

我发现了什么:

下面是我的应用程序的 build.gradle 文件。

build.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    packagingOptions {
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }

    defaultConfig {
        multiDexEnabled true
        applicationId "com.stt_int.android01.sttdemofour"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    // ... other project repositories
    jcenter()
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile project(':speech-android-wrapper')
    compile 'com.facebook.android:facebook-android-sdk:4.7.+'
    compile 'com.mcxiaoke.volley:library:1.0.19'
    /*compile('com.mopub:mopub-sdk:4.3.0@aar') {
        transitive = true
    }*/
    compile('com.twitter.sdk.android:twitter:1.13.0@aar') {
        transitive = true;
    }
    compile 'com.ibm.watson.developer_cloud:java-sdk:2.6.0'
    compile group: 'com.cloudant', name: 'cloudant-sync-datastore-android', version: 'latest.release'
}

下面是speech-android-wrapper模块的build.gradle文件

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion '22.0.1'
    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 16
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile files('libs/java_websocket.jar')
    compile files('libs/commons-io-2.4.jar')
    compile files('libs/jna.jar')
}

我尝试使用下面的代码排除 ByteOrderMark.class class 但我无法得到想要的结果。

android { packagingOptions { exclude 'org/apache/commons/io/ByteOrderMark.class' } }

任何帮助都将非常非常 感激不尽。谢谢!!

Update-1:日期:28.03.2016

我从 @Nikolay Shmyrev 建议的两个 link 中进行了如下尝试,但是 link 中的 none 对我有用。

从第 1 天开始 link。
dependencies { compile files('libs/java_websocket.jar') //compile files('libs/commons-io-2.4.jar') compile('commons-io:commons-io:2.4') { exclude group: 'org.apache', module: 'commons-io' } compile files('libs/jna.jar') }

从第二个 link.
dependencies { compile files('libs/java_websocket.jar') //compile files('libs/commons-io-2.4.jar') compile('commons-io:commons-io:2.4') { exclude group: 'org.apache.commons.io' } compile files('libs/jna.jar') }
我已经从 speech-android-wrapper 模块的 libs 文件夹中删除了 commons-io-2.4.jar 文件。

Update-2:日期:29.03.2016

下面我也试过了。

dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile project(':speech-android-wrapper') compile 'com.facebook.android:facebook-android-sdk:4.7.+' compile 'com.mcxiaoke.volley:library:1.0.19' /*compile('com.mopub:mopub-sdk:4.3.0@aar') { transitive = true }*/ compile('com.twitter.sdk.android:twitter:1.13.0@aar') { transitive = true; } compile 'com.ibm.watson.developer_cloud:java-sdk:2.6.0' compile(group: 'com.cloudant', name: 'cloudant-sync-datastore-android', version: 'latest.release') { exclude group: 'org.apache', module: 'commons-io' } }

下面还有..

dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile project(':speech-android-wrapper') compile 'com.facebook.android:facebook-android-sdk:4.7.+' compile 'com.mcxiaoke.volley:library:1.0.19' /*compile('com.mopub:mopub-sdk:4.3.0@aar') { transitive = true }*/ compile('com.twitter.sdk.android:twitter:1.13.0@aar') { transitive = true; } compile 'com.ibm.watson.developer_cloud:java-sdk:2.6.0' compile(group: 'com.cloudant', name: 'cloudant-sync-datastore-android', version: 'latest.release') { exclude group: 'org.apache.commons.io' } }

到我项目的 build.gradle 文件。虽然我更改了项目的 build.gradle 文件,但 speech-android-wrapper 的 build.gradle 文件如下所示。

dependencies { compile files('libs/java_websocket.jar') //compile files('libs/commons-io-2.4.jar') compile 'commons-io:commons-io:2.4' compile files('libs/jna.jar') }

但对我没有任何作用。

我不确定它是否有效。

出现此问题是因为您 添加相同的 class (org/apache/commons/io/ByteOrderMark.class) 两次

如果您检查 com.cloudant:cloudant-sync-datastore-android 库的 pom 文件,您会发现此依赖项:

commons-io:commons-io:2.4

在你的演讲中-android-wrapper模块你可以:

  • 从 libs 文件夹中删除 commons-io-2.4.jar
  • 更改 build.gradle 中的依赖项删除行 compile files('libs/commons-io-2.4.jar') 并添加 compile commons-io:commons-io:2.4

我找到了解决方案,因为可以排除我的以下行中的某些组。

configurations { all*.exclude group: 'commons-io' }

我添加了上面一行错误消失了。