Добавление поддержки Multi dex с поддержкой v4-r21 с помощью gradle def (https://plus.google.com/+IanLake/posts/JW9x4pcB1rj)
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "info.osom.multidex"
minSdkVersion 19
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
preDexLibraries = false
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString()
}
Теперь это работает для самого приложения, и я могу создавать и развертывать, но когда я запускаю robolectric test для своего класса Application, я получаю отказ от ZipUtils (который попадает в MultiDex.java). Другие тесты работают нормально. Вот трасса -
Вызвано: java.lang.RuntimeException: сбой установки Multi Dex (/Users/Code/android-code/android/. (является каталогом)). в android.support.multidex.MultiDex.install(MultiDex.java:178) в android.support.multidex.MultiDexApplication.attachBaseContext(MultiDexApplication.java:39) at android.app.Application.attach(Application.java:181) at org.fest.reflect.method.Invoker.invoke(Invoker.java:112) at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:155) на org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:430) на org.robolectric.RobolectricTestRunner $2.оценка (RobolectricTestRunner.java:236) на org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) на org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) на org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) на org.junit.runners.ParentRunner $3.run(ParentRunner.java:238) на org.junit.runners.ParentRunner $1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) на org.junit.runners.ParentRunner.access $000 (ParentRunner.java:53) на org.junit.runners.ParentRunner $2.оценить (ParentRunner.java:229) на org.robolectric.RobolectricTestRunner $1.оценка (RobolectricTestRunner.java:177) на org.junit.runners.ParentRunner.run(ParentRunner.java:309) на org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49) на org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) на org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48) на org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) на org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) на org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) на org.gradle.messaging.dispatch.ProxyDispatchAdapter $DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) на com.sun.proxy. $Proxy2.processTestClass(Неизвестный источник) на org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105)