【发布时间】:2016-03-26 13:38:26
【问题描述】:
首先。以下是我得到的错误。
现在,我正在做的事情如下......
我正在集成 IBM 的 Speech To Text 服务。我创建了一个demo HERE!
我还在使用 IBM 的另外两项服务,分别名为 Personality Insights 和 Cloudant Database。
我已经成功集成了 Speech To Text 示例。但是当我集成 Personality Insights 和 Cloudant 数据库 时,它给了我上述错误。
我确认的内容:
- 在 STT 演示中有一个名为 speech-android-wrapper 的模块。
- 我已将其包含在我的应用程序中,并在 *build.gradle** 文件中添加了一行,例如
compile project(':speech-android-wrapper')。 - 对于 Cloudant Database 服务,我有
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 类,但我无法获得期望的结果。
android {
packagingOptions {
exclude 'org/apache/commons/io/ByteOrderMark.class'
}
}
任何帮助都将非常非常非常感激。谢谢!!
更新 1:日期:28.03.2016
我尝试了 @Nikolay Shmyrev 建议的两个链接,但没有一个链接适合我。
来自第一个链接。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')
}
来自第二个链接。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 文件。
更新 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')
}
但对我没有任何作用。
【问题讨论】:
-
还有相关的stackoverflow.com/questions/32450238/…,exclude和exclude-module可能是一个选项,但是在packagingOptions中没有,你需要在依赖部分使用它们(编译)
-
@NikolayShmyrev 请查看更新的答案。
-
你需要将排除部分添加到com.cloudant编译依赖,而不是commons。
-
查看 Update-2。@NikolayShmyrev
标签: android-gradle-plugin build.gradle speech-to-text cloudant