引用多个library时经常会遇到Multiple dex files define错误
Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/arch
/core/util/Function;
此时可用以下gradle命令来查看工程的引用树,找出冲突的引用库后exclude之
cd app
..\gradlew -q dependencies
最常见的是support库多次定义,经检查本文是由于引入RxLifecycle导致android.arch.lifecycle.runtime库重复引用问题
compile 'io.reactivex.rxjava2:rxjava:2.2.0'
compile('com.github.tbruyelle:rxpermissions:0.10.2', {
exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
})
compile('com.trello.rxlifecycle2:rxlifecycle:2.2.2', {
exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
exclude group: 'android.arch.lifecycle', module: 'runtime'
})
compile('com.trello.rxlifecycle2:rxlifecycle-android-lifecycle:2.2.2', {
exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
exclude group: 'android.arch.lifecycle', module: 'runtime'
})
compile('com.trello.rxlifecycle2:rxlifecycle-android:2.2.2', {
exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
exclude group: 'android.arch.lifecycle', module: 'runtime'
})
compile('com.trello.rxlifecycle2:rxlifecycle-components:2.2.2', {
exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
exclude group: 'android.arch.lifecycle', module: 'runtime'
})