重复输入错误 - 依赖性和项目模块冲突 - Android
Duplicate Entry Error - Dependancy and Project Module Confliction - Android
首先。以下是我遇到的错误。
现在,我正在做的是如下所示....
我正在集成 IBM 的 Speech To Text 服务。我创建了一个演示 HERE!
我还在使用 IBM 的另外两项服务,名为 Personality Insights 和 Cloudant Database.
我已经成功集成了 Speech To Text 示例。但是当我整合 Personality Insights 和 Cloudant Database 时,它给了我上面的 error.
我发现了什么:
- 在 STT 演示中有一个名为 speech-android-wrapper.
的模块
- 我已将其包含到我的应用程序中并在 *build.gradle** 文件中添加了一行,例如
compile project(':speech-android-wrapper')
.
- 对于 Cloudant 数据库 服务,我有像
compile group: 'com.cloudant', name: 'cloudant-sync-datastore-android', version: 'latest.release'
这样的依赖项。
- 当我评论 Cloudant 数据库 依赖项时。它不会给我上面的错误。
- 所以,有些地方这两个依赖是冲突的。
下面是我的应用程序的 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'
}
我添加了上面一行错误消失了。
首先。以下是我遇到的错误。
现在,我正在做的是如下所示....
我正在集成 IBM 的 Speech To Text 服务。我创建了一个演示 HERE!
我还在使用 IBM 的另外两项服务,名为 Personality Insights 和 Cloudant Database.
我已经成功集成了 Speech To Text 示例。但是当我整合 Personality Insights 和 Cloudant Database 时,它给了我上面的 error.
我发现了什么:
- 在 STT 演示中有一个名为 speech-android-wrapper. 的模块
- 我已将其包含到我的应用程序中并在 *build.gradle** 文件中添加了一行,例如
compile project(':speech-android-wrapper')
. - 对于 Cloudant 数据库 服务,我有像
compile group: 'com.cloudant', name: 'cloudant-sync-datastore-android', version: 'latest.release'
这样的依赖项。 - 当我评论 Cloudant 数据库 依赖项时。它不会给我上面的错误。
- 所以,有些地方这两个依赖是冲突的。
下面是我的应用程序的 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'
}
我添加了上面一行错误消失了。