java.lang.NoClassDefFoundError: java.util.Objects - Android 4.1 и Retrolambda
У меня сбой, что я не на 100% уверен, что происходит. Я подозреваю, что это связано с тем, что retrolambda делает под капотом, чтобы добиться использования лямбды перед Java 8. Я получаю следующее падение:
04-21 13:50:32.609 1199-1199/com.ariets.af.debug E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NoClassDefFoundError: java.util.Objects
at com.abercrombie.android.sdk.AFSDK.initialize(AFSDK.java:154)
at com.ariets.af.data.sdk.SDKClient.observeSdkInitialize(SDKClient.java:474)
at com.ariets.af.ui.splash.AfSplashScreenPresenterImpl.setupAfSdk(AfSplashScreenPresenterImpl.java:69)
at com.ariets.af.ui.splash.AFSplashScreenActivity.onCreate(AFSplashScreenActivity.java:84)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
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)
Я не пользуюсь java.util.Objects
непосредственно (выполнение поиска в моем коде, по сути, не приводит ни к каким результатам). Ниже приведен фрагмент того, как выглядит мой код:
findRegion().flatMap(afRegion -> setupSharedVariables(afRegion))
.flatMap(afRegion -> fetchContent(afRegion)) // THIS IS WHERE THE CRASH OCCURS
.flatMap(sessionHandler::initializeSession)
.doOnNext(complete -> {
isStarted = true;
logTime("startUp successfully completed", start);
});
Некоторые сведения о настройке приложения:
- Мы используем retrolambda для поддержки использования lambdas в предыдущих версиях Java.
- Наша minSdkVersion составляет 16.
- Несколько плагинов Gradle, которые мы используем (в случае, если любой из них предоставит некоторую информацию о том, что происходит):
- Ретроламбда (очевидно)
- Android-Апт
- Хьюго
- Ложка
- ткань
- ErrorProne
Как я уже говорил выше, я думаю, что это как-то связано с тем, что происходит под капотом. Вероятно, что-то добавляет java.util.Objects
(который недоступен в API 16). У кого-нибудь есть информация, которая может быть полезна для меня? Как мне обойти это, не увеличивая мою minSdkVersion?