RxJava noClassDefFoundError: rx.plugins.RxJavaPlugins на API 16

Я разрабатываю приложение для Android с использованием RxJava и Retofit. Когда я тестирую свой код на API 23, я не получаю ошибок, но когда я тестирую в API 15, мой RxJava не работает должным образом, и мое приложение выходит из строя с ошибкой:

FATAL EXCEPTION: main java.lang.ExceptionInInitializerError at $Proxy1.createToken(Native Method) at com.loginsignup.presenter.LoginPresenterImpl.tryToLogin(LoginPresenterImpl.java:39) at com.loginsignup.view.LoginActivity.tryToLogin(LoginActivity.java:197) at com.loginsignup.view.LoginActivity.onClick(LoginActivity.java:180) at android.view.View.performClick(View.java:4084) at android.view.View$PerformClick.run(View.java:16966) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NoClassDefFoundError: rx.plugins.RxJavaPlugins at rx.Observable.<clinit>(Observable.java:63) at $Proxy1.createToken(Native Method) at com.gooroo.gooroo.loginsignup.presenter.LoginPresenterImpl.tryToLogin(LoginPresenterImpl.java:39) at com.gooroo.gooroo.loginsignup.view.LoginActivity.tryToLogin(LoginActivity.java:197) at com.gooroo.gooroo.loginsignup.view.LoginActivity.onClick(LoginActivity.java:180) at android.view.View.performClick(View.java:4084) at android.view.View$PerformClick.run(View.java:16966) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) 

Вот моя конструкция градиента:

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.example.ex" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "0.1 alpha" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dexOptions { javaMaxHeapSize "4g" } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' compile files('libs/sinch-android-rtc-3.9.5.jar') compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support:cardview-v7:23.4.0' compile 'com.google.android.gms:play-services-maps:8.4.0' compile 'com.google.android.gms:play-services-location:8.4.0' compile 'com.google.code.gson:gson:2.6.2' compile 'com.google.android.gms:play-services-analytics:8.4.0' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.squareup.okhttp3:logging-interceptor:3.2.0' compile 'com.squareup.retrofit2:retrofit:2.0.0' compile 'com.squareup.retrofit2:converter-gson:2.0.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0' compile 'com.github.orhanobut:logger:1.12' compile 'com.viewpagerindicator:library:2.4.1@aar' compile 'io.reactivex:rxandroid:1.2.0' compile 'io.reactivex:rxjava:1.1.5' compile 'com.facebook.android:facebook-android-sdk:4.+' compile 'com.stripe:stripe-android:+' compile 'com.google.android.gms:play-services-gcm:8.4.0' compile 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar' compile 'com.amazonaws:aws-android-sdk-core:2.+' compile 'com.amazonaws:aws-android-sdk-s3:2.+' compile 'com.google.android.gms:play-services-wallet:8.4.0' compile 'com.android.support:multidex:1.0.0' } apply plugin: 'com.google.gms.google-services' 

Любая идея, почему нет проблемы с API 23, но когда я запускаю его на API 16, он сбой при попытке входа в систему, который использует RxJava?

Проблема здесь в том, что вы не инициализировали MultiDex Option

Поддержка Multidex для Android 5.0 и выше

Android 5.0 и выше использует среду выполнения, называемую ART, которая поддерживает загрузку нескольких файлов dex из файлов APK приложения. ART выполняет предварительную компиляцию во время установки приложения, которая сканирует файлы классов (..N) .dex и компилирует их в один файл .oat для исполнения устройством Android. Дополнительные сведения о времени выполнения Android 5.0 см. В разделе Введение в ART. Именно по этой причине ваше приложение отлично работает на уровне API 21.

Поддержка Multidex до Android 5.0

Версии платформы до Android 5.0 используют рабочую среду Dalvik для выполнения кода приложения. По умолчанию Dalvik ограничивает приложения одним файлом байт-кода classes.dex на APK. Чтобы обойти это ограничение, вы можете использовать библиотеку поддержки multidex, которая станет частью основного файла DEX вашего приложения, а затем управляет доступом к дополнительным файлам DEX и содержащемуся в них коду.

Итак, во-первых, убедитесь, что вы импортировали правильную зависимость, которая кажется, что вы это сделали.

 dependencies { compile 'com.android.support:multidex:1.0.0' } 

В манифесте добавьте класс MultiDexApplication из библиотеки поддержки multidex в элемент приложения.

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... // This will solved the problem android:name="YourAppName"> ... </application> </manifest> 

Вот как я решил свою проблему, даже там закрыта проблема Git относительно того же.

РЕДАКТИРОВАТЬ

 public class YouAppName extends MultiDexApplication { .. .. } 

Надеюсь, это поможет вам.