SDK 构建工具更新到 23.1 rc1 后出现意外顶级异常
Unexpected Top-Level Exception after SDK build tools update to 23.1 rc1
SDK 构建工具更新到 23.1 rc1 后出现错误
错误信息是:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
....
Gradle版本为1.3.0。
我已经在项目的 gradle 文件中添加了这个配置脚本(在 buildscript 块中)。
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
这是我模块的 gradle 脚本
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.example.android"
minSdkVersion 15
targetSdkVersion 23
versionCode 8
versionName "08.00.00"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main.jniLibs.srcDirs = ['libs']
test.jniLibs.srcDirs = ['libs']
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.3'
compile 'com.android.support:gridlayout-v7:23.0.1'
compile 'com.google.android.gms:play-services-gcm:8.1.0
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
compile 'ch.acra:acra:4.7.0-RC.1'
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
compile 'com.github.shell-software:fab:1.0.5'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.wu-man:android-oauth-client:0.0.3'
compile files('libs/disklrucache-2.0.2.jar')
compile files('libs/spring-android-rest-template-2.0.0.M1.jar')
compile files('libs/volley.jar')
compile files('libs/zbar.jar')
}
据我所知,有关 support-v4 库版本冲突的错误消息,但我无法解决。你有什么建议吗?
我尝试在 "invalidate cache/restart" 之后构建,多次清理项目。
当您使用相同库的不同版本时会发生此问题。
运行 gradle -q dependencies
查看依赖报告。
在你的情况下你会看到
compile 'com.wu-man:android-oauth-client:0.0.3'
与
有非常古老的依赖关系
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r7</version>
<scope>compile</scope>
</dependency>
你可以查看pom文件here。
com.google.android:support-v4:r7
与您从脚本中排除的 com.android.support:support-v4
不同。
您可以使用同一库的更新版本(示例 0.4.5),或者您可以排除
compile('com.wu-man:android-oauth-client:0.0.3') {
exclude module: 'support-v4'
}
否则您可以更新您的脚本:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
all*.exclude group: 'com.google.android', module: 'support-v4'
}
SDK 构建工具更新到 23.1 rc1 后出现错误
错误信息是:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
....
Gradle版本为1.3.0。 我已经在项目的 gradle 文件中添加了这个配置脚本(在 buildscript 块中)。
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
这是我模块的 gradle 脚本
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.example.android"
minSdkVersion 15
targetSdkVersion 23
versionCode 8
versionName "08.00.00"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main.jniLibs.srcDirs = ['libs']
test.jniLibs.srcDirs = ['libs']
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.3'
compile 'com.android.support:gridlayout-v7:23.0.1'
compile 'com.google.android.gms:play-services-gcm:8.1.0
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
compile 'ch.acra:acra:4.7.0-RC.1'
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
compile 'com.github.shell-software:fab:1.0.5'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.wu-man:android-oauth-client:0.0.3'
compile files('libs/disklrucache-2.0.2.jar')
compile files('libs/spring-android-rest-template-2.0.0.M1.jar')
compile files('libs/volley.jar')
compile files('libs/zbar.jar')
}
据我所知,有关 support-v4 库版本冲突的错误消息,但我无法解决。你有什么建议吗? 我尝试在 "invalidate cache/restart" 之后构建,多次清理项目。
当您使用相同库的不同版本时会发生此问题。
运行 gradle -q dependencies
查看依赖报告。
在你的情况下你会看到
compile 'com.wu-man:android-oauth-client:0.0.3'
与
有非常古老的依赖关系<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r7</version>
<scope>compile</scope>
</dependency>
你可以查看pom文件here。
com.google.android:support-v4:r7
与您从脚本中排除的 com.android.support:support-v4
不同。
您可以使用同一库的更新版本(示例 0.4.5),或者您可以排除
compile('com.wu-man:android-oauth-client:0.0.3') {
exclude module: 'support-v4'
}
否则您可以更新您的脚本:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
all*.exclude group: 'com.google.android', module: 'support-v4'
}