¿Qué paquete para MultiDexTestRunner? Android.support.multidex o com.android.test.runner
La página http://developer.android.com/tools/building/multidex.html#testing aconseja
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" } }
Pero eso produce una excepción ClassNotFoundException cuando se ejecutan las pruebas.
- Android Studio 1.3 error multidex en gradle
- Android Multidex RuntimeException
- Tratando de probar un módulo de Android en la aplicación MultiDex, com.android.test.runner.MultiDexTestRunner no se reconoce
- Cómo averiguar cuántos métodos se agregan con una biblioteca en Android Studio / Gradle
- Android: SugarORM y multidex
La documentación API y dexdump muestran que hay com.android.test.runner.MultiDexTestRunner.
Así que si no creo en la documentación y en su lugar especificar
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" } }
Entonces consigo
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
Sospecho que la página del doc es incorrecta y la trayectoria correcta es com.android.test.runner.MultiDexTestRunner … más tengo otro cierto problema.
Tenga en cuenta que la aplicación multidex funciona bien. De alguna manera un segundo MultiDexApplication se incluye en la prueba apk.
Preguntas:
¿Cuál es la ruta correcta para MultiDexTestRunner? ¿Por qué estoy obteniendo una segunda MultiDexApplication en el test apk?
- Android gradle plugin multidex ZipException
- Implementación de resultados MultiDex en la compilación durante tanto tiempo, y finalmente error de espacio de montón
- Demasiadas referencias de campo: 70613; Max es 65536
- La ejecución falló para la tarea ': app: shrinkReleaseMultiDexComponents'
- Android Studio: ¿Por qué estoy recibiendo un error multi dex en el nuevo proyecto API de Google Maps?
- Error: Error de ejecución para la tarea ': app: shrinkReleaseMultiDexComponents'
- INSTALL_FAILED_DEXOPT Error en Android 5.0 en modo de liberación
- No se puede resolver import android.support.multidex.MultiDex después de cambiar a Multidex más reciente
UPDATE: aquí está la solución. Ese es un patrón común, cuando ves que tal mensaje de error had used a different L<package>; during pre-verification
had used a different L<package>; during pre-verification
, debe excluir el paquete al ejecutar la prueba.
build.gradle
android { // ... defaultConfig { // ... multiDexEnabled true testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" } } dependencies { // ... // Need to exclude this when running test androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') { exclude group: 'com.android.support', module: 'multidex' } }
Application.java
public class Application extends android.app.Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
Nota: Cuando se escriben pruebas de instrumentación para aplicaciones multidex, no se requiere configuración adicional si se utiliza una instrumentación MonitoringInstrumentation (o AndroidJUnitRunner).
Por lo tanto, no utilice MultiDexTestRunner, que está obsoleto; Utilice AndroidJUnitRunner en su lugar. (Esto se aplica a la biblioteca de soporte multidex v1.0.2 +)
android { // ... defaultConfig { // ... multiDexEnabled true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } }
Sólo si tiene una implementación personalizada del test bootstrap con:
public void onCreate(Bundle arguments) { MultiDex.install(getTargetContext()); super.onCreate(arguments); ... }
Consulte: https://developer.android.com/studio/build/multidex.html#testing
Los problemas exactos descritos en la pregunta original pueden estar relacionados con versiones anteriores. Estoy añadiendo mi experiencia aquí, porque este es uno de los primeros golpes de Google al investigar el problema.
Con las versiones recientes de las herramientas y el complemento de Android, no necesitas nada más que esto en build.gradle
:
... android { ... defaultConfig { ... testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner" } }
(Tengo com.android.tools.build:gradle:1.5.0
)
- ¿Por qué algunas veces la aplicación se reinicia en killProcess?
- ¿Se puede ampliar el tamaño de la superposición con el mapa de google en android?