Страница http://developer.android.com/tools/building/multidex.html#testing советует
dependencies {
compile 'com.android.support:multidex:1.0.1'
androidTestCompile 'com.android.support:multidex-instrumentation:1.0.1'
}
android {
defaultConfig {
multiDexEnabled true
testInstrumentationRunner "android.support.multidex.MultiDexTestRunner"
}
}
Но это вызывает исключение ClassNotFoundException при выполнении тестов.
Документация API и dexdump показывают, что существует com.android.test.runner.MultiDexTestRunner.
Итак, если я не верю в документацию и вместо этого укажу
dependencies {
compile 'com.android.support:multidex:1.0.1'
androidTestCompile 'com.android.support:multidex-instrumentation:1.0.1'
}
android {
defaultConfig {
multiDexEnabled true
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
}
}
Тогда я получаю
com/company/myapp/MyApp; had used a different Landroid/support/multidex/MultiDexApplication; during pre-verification
...
IllegalAccessExceptionIllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
Я подозреваю, что страница документа неверна, и правильный путь - com.android.test.runner.MultiDexTestRunner... плюс у меня есть еще одна проблема.
Обратите внимание, что приложение multidex отлично работает. Каким-то образом второй тест MultiDexApplication включен в тест apk.
Вопросы:
Каков правильный путь для MultiDexTestRunner?
Почему я получаю второй MultiDexApplication в тестовом apk?