2

Мои тесты отлично работают на устройствах с уровнем API 20 и выше, но не соответствуют уровню API 19 и ниже. Проблема, похоже, связана с roboguice, но я не могу найти решение для нее. Пожалуйста, помогите. Журналы выглядят следующим образом.Экспресс-тесты бросают java.lang.NoClassDefFoundError: roboguice.inject.AssetManagerProvider на уровне API 20 и ниже устройств

03-15 05:06:54.600 1748-1748/? E/AndroidRuntime: FATAL EXCEPTION: main 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime: Process: com.rr.rruniversal.mobile, PID: 1748 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime: java.lang.NoClassDefFoundError: roboguice.inject.AssetManagerProvider 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at roboguice.config.DefaultRoboModule.configure(DefaultRoboModule.java:155) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.AbstractModule.configure(AbstractModule.java:78) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:252) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.spi.Elements.getElements(Elements.java:107) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.util.Modules$OverrideModule.configure(Modules.java:174) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.AbstractModule.configure(AbstractModule.java:78) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:252) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.spi.Elements.getElements(Elements.java:107) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:135) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.Guice.createInjector(Guice.java:100) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.google.inject.Guice.createInjector(Guice.java:87) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at roboguice.RoboGuice.createGuiceInjector(RoboGuice.java:186) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at roboguice.RoboGuice.getOrCreateBaseApplicationInjector(RoboGuice.java:114) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at net.doo.snap.ScanbotSDKInitializer.initialize(SourceFile:119) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.rruniversal.mobilelib.imagecapture.ImageCaptureInitializer.initialize(Unknown Source) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.hello.appuniversal.RRUniversalApp.onCreate(RRUniversalApp.java:126) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.support.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:325) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:136) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5001) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:515) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
03-15 05:06:54.600 1748-1748/? E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method) 
03-15 05:06:54.600 532-707/? W/ActivityManager: Error in app com.rruniversal.app.mobile running instrumentation ComponentInfo{com.rr.rruniversal.test/android.support.test.runner.AndroidJUnitRunner}: 
03-15 05:06:54.600 532-707/? W/ActivityManager: java.lang.NoClassDefFoundError 
03-15 05:06:54.600 532-707/? W/ActivityManager: java.lang.NoClassDefFoundError: roboguice.inject.AssetManagerProvider 

Где я буду неправильно? Есть ли что-нибудь в частности, мне нужно включить в build.gradle в качестве зависимостей? Зависимости, которые я добавил, как показано ниже:

androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.1') { 
     exclude group: 'com.android.support', module: 'support-annotations' 
     exclude group: 'com.google.code.findbugs', 'module': 'jsr305' 
    } 

    // Espresso-web for WebView support 
    androidTestCompile ('com.android.support.test.espresso:espresso-web:2.2.1') { 
     exclude group: 'com.android.support', module: 'support-annotations' 
     exclude group: 'com.google.code.findbugs', 'module': 'jsr305' 
    } 

Исключение было сделано, так как я получаю конфликты на синхронизации. И я использую SDK Level 23 для своего приложения. Любая помощь поможет. Заранее спасибо!

+0

Вы пробовали с этим, пожалуйста, проверьте эту ссылку - http://mbcdev.com/2012/07/01/noclassdeffounderror-for-javax-inject-provider-after-upgrading-to-roboguice-2-0- 6/ –

+0

Поддерживаете ли вы multidex? –

+0

@UrielFrankel, Да, проект поддерживает мультидексы. – Azerot

ответ

0

Я была такая же проблема, как вы и, наконец, получил это работает на KitKat ... Вот моя текущая рабочая конфигурация:

  • RoboGuice 3.0.1
  • кучу библиотек поддержки Android в 23.4.0
  • Google Play Services 8.4.0
  • нож для масла и т.д.

  • Android Gradle Plugin 2.1.0

  • Строительные инструменты 23.0.3
  • целевых и компилировать SDK 23
  • мин SDK 15
  • Android Поддержка Multidex 1.0.1
  • кучу других зависимостей ...

И для тестов на андроид конкретно в зависимостях У меня есть:

androidTestCompile ("com.android.support.test:runner:$runnerVersion") 
androidTestCompile ("com.android.support.test:rules:$rulesVersion") 
androidTestCompile ("com.android.support:support-annotations:$androidSupportLibraryVersion") 
androidTestCompile ("com.android.support.test.espresso:espresso-core:$espressoVersion") { 
    exclude group: 'javax.inject' 
} 
androidTestCompile ("com.android.support.test.espresso:espresso-intents:$espressoVersion") { 
    exclude group: 'com.android.support.test.espresso', module: 'espresso-core' 
} 
androidTestCompile ("org.mockito:mockito-core:$mockitoVersion") { 
    force = true 
} 
androidTestCompile ("com.crittercism.dexmaker:dexmaker:$dexmakerVersion") 
androidTestCompile ("com.crittercism.dexmaker:dexmaker-dx:$dexmakerVersion") 
androidTestCompile ("com.crittercism.dexmaker:dexmaker-mockito:$dexmakerVersion") 

, где

mockitoVersion      = "1.10.19" 
    runnerVersion      = "0.5" 
    rulesVersion      = "0.5" 
    espressoVersion      = "2.2.2" 
    dexmakerVersion      = "1.4" 

В вашем случае вы можете добавить:

androidTestCompile ("com.android.support.test.espresso:espresso-web:$espressoVersion") { 
    exclude group: 'com.android.support.test.espresso', module: 'espresso-core' 
} 

Если вы не используете Mockito, то я думаю, вы могли пропустить зависимости dexmaker - они нужны только, чтобы получить Mockito рабочий (в меньше всего в моем проекте).

Надеюсь, это решает вашу проблему!