Android 仪器测试 dexing 错误
Android instrumentation test dexing error
我正在尝试使用 Espresso 进行一些仪器测试,但是当我编译我的测试时,gradle 使 return 出错:
Error:Gradle: Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Landroid/databinding/DataBindingComponent;
我假设存在一些依赖项错误并列出如下依赖项:
.\gradlew app:dependencies
奇怪的是:我使用的是数据绑定版本 1.0-rc4,但在列出的依赖项中有 1.0-rc3:
default - Configuration for default artifacts.
+--- com.android.databinding:library:1.0-rc3
| +--- com.android.databinding:baseLibrary:1.0-rc3
| \--- com.android.support:support-v4:21.0.3 -> 23.1.1
| \--- com.android.support:support-annotations:23.1.1
+--- com.android.databinding:adapters:1.0-rc3
| \--- com.android.databinding:library:1.0-rc3 (*)
+--- com.android.support:appcompat-v7:23.1.1
| \--- com.android.support:support-v4:23.1.1 (*)
+--- com.android.support:recyclerview-v7:23.1.1
| +--- com.android.support:support-annotations:23.1.1
| \--- com.android.support:support-v4:23.1.1 (*)
+--- com.google.dagger:dagger:2.0
| \--- javax.inject:javax.inject:1
\--- com.trello:rxlifecycle-components:0.4.0
+--- com.trello:rxlifecycle:0.4.0
| +--- com.jakewharton.rxbinding:rxbinding:0.3.0
| | +--- com.android.support:support-annotations:23.1.0 -> 23.1.1
| | \--- io.reactivex:rxjava:1.0.14 -> 1.0.16
| \--- io.reactivex:rxjava:1.0.16
+--- com.android.support:appcompat-v7:23.1.1 (*)
\--- io.reactivex:rxjava:1.0.16
provided - Classpath for only compiling the main sources.
+--- com.android.databinding:compiler:1.0-rc4
| \--- com.android.databinding:baseLibrary:1.0-rc4
\--- javax.annotation:javax.annotation-api:1.2
这个1.0-rc3是哪里来的?我的整个项目中没有这样的字符串"rc3"(生成的dex缓存文件除外)。
UPD:
我认为这是一个 android gradle 插件问题,因为相同的代码适用于 gradle 1.5,但在 gradle 2.0.0-beta2 和 2.0.0-beta4 中失败。
UPD2:
解决了问题。
项目相对较旧,android-databinding
插件是从 gradle 1.5.0-beta1
开始从 beta 发展而来的
现在要启用数据绑定,您应该只添加
dataBinding {
enabled = true
}
在您的 android{}
部分。
因此,如果您遇到此类问题,请确保从 build.gradle
文件中删除了这些字符串:
1) apply plugin: 'com.android.databinding'
2) classpath 'com.android.databinding:dataBinder:1.0-rc4'
3) apt 'com.android.databinding:compiler:1.0-rc4'
问题解决了。
项目相对较旧,android-databinding
插件是从 gradle 1.5.0-beta1
以来的 Beta 版开发的
现在要启用数据绑定,您应该只添加
dataBinding {
enabled = true
}
在您的 android{}
部分。
因此,如果您遇到此类问题,请确保从 build.gradle
文件中删除了这些字符串:
1) apply plugin: 'com.android.databinding'
2) classpath 'com.android.databinding:dataBinder:1.0-rc4'
3) apt 'com.android.databinding:compiler:1.0-rc4'
我正在尝试使用 Espresso 进行一些仪器测试,但是当我编译我的测试时,gradle 使 return 出错:
Error:Gradle: Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Landroid/databinding/DataBindingComponent;
我假设存在一些依赖项错误并列出如下依赖项:
.\gradlew app:dependencies
奇怪的是:我使用的是数据绑定版本 1.0-rc4,但在列出的依赖项中有 1.0-rc3:
default - Configuration for default artifacts.
+--- com.android.databinding:library:1.0-rc3
| +--- com.android.databinding:baseLibrary:1.0-rc3
| \--- com.android.support:support-v4:21.0.3 -> 23.1.1
| \--- com.android.support:support-annotations:23.1.1
+--- com.android.databinding:adapters:1.0-rc3
| \--- com.android.databinding:library:1.0-rc3 (*)
+--- com.android.support:appcompat-v7:23.1.1
| \--- com.android.support:support-v4:23.1.1 (*)
+--- com.android.support:recyclerview-v7:23.1.1
| +--- com.android.support:support-annotations:23.1.1
| \--- com.android.support:support-v4:23.1.1 (*)
+--- com.google.dagger:dagger:2.0
| \--- javax.inject:javax.inject:1
\--- com.trello:rxlifecycle-components:0.4.0
+--- com.trello:rxlifecycle:0.4.0
| +--- com.jakewharton.rxbinding:rxbinding:0.3.0
| | +--- com.android.support:support-annotations:23.1.0 -> 23.1.1
| | \--- io.reactivex:rxjava:1.0.14 -> 1.0.16
| \--- io.reactivex:rxjava:1.0.16
+--- com.android.support:appcompat-v7:23.1.1 (*)
\--- io.reactivex:rxjava:1.0.16
provided - Classpath for only compiling the main sources.
+--- com.android.databinding:compiler:1.0-rc4
| \--- com.android.databinding:baseLibrary:1.0-rc4
\--- javax.annotation:javax.annotation-api:1.2
这个1.0-rc3是哪里来的?我的整个项目中没有这样的字符串"rc3"(生成的dex缓存文件除外)。
UPD:
我认为这是一个 android gradle 插件问题,因为相同的代码适用于 gradle 1.5,但在 gradle 2.0.0-beta2 和 2.0.0-beta4 中失败。
UPD2:
解决了问题。
项目相对较旧,android-databinding
插件是从 gradle 1.5.0-beta1
开始从 beta 发展而来的
现在要启用数据绑定,您应该只添加
dataBinding {
enabled = true
}
在您的 android{}
部分。
因此,如果您遇到此类问题,请确保从 build.gradle
文件中删除了这些字符串:
1) apply plugin: 'com.android.databinding'
2) classpath 'com.android.databinding:dataBinder:1.0-rc4'
3) apt 'com.android.databinding:compiler:1.0-rc4'
问题解决了。
项目相对较旧,android-databinding
插件是从 gradle 1.5.0-beta1
以来的 Beta 版开发的
现在要启用数据绑定,您应该只添加
dataBinding {
enabled = true
}
在您的 android{}
部分。
因此,如果您遇到此类问题,请确保从 build.gradle
文件中删除了这些字符串:
1) apply plugin: 'com.android.databinding'
2) classpath 'com.android.databinding:dataBinder:1.0-rc4'
3) apt 'com.android.databinding:compiler:1.0-rc4'