Сбой приложения только на устройствах с леденцом

Приложение отлично работает на всех ОС, но когда я добавляю SDK в facebook, он дает мне следующее сообщение об ошибке на устройствах с леденец.

compile 'com.facebook.android:facebook-android-sdk:4.20.0' 

Вызвано: java.lang.ClassNotFoundException: не найден класс «retrofit2.Retrofit $ Builder» по пути: DexPathList [[zip-файл] /data/app/com.myapp.app-3/base.apk ", zip-файл

Java.lang.NoClassDefFoundError: сбой разрешения: Lretrofit2 / Retrofit $ Builder; Вызвано: java.lang.ClassNotFoundException: не найден класс «retrofit2.Retrofit $ Builder» по пути: DexPathList [[zip-файл] /data/app/com.myapp.app-3/base.apk ", zip-файл "/ Data / app / com.myapp.app-3 / split_lib_dependencies_apk.apk",

Это мой файл градиента.

 compileSdkVersion 25 buildToolsVersion "25.0.0" defaultConfig { applicationId 'com.myapp.app' minSdkVersion 21 targetSdkVersion 23 versionCode 122 versionName "1.2.5" multiDexEnabled true ndk { abiFilters "armeabi", "armeabi-v7a", "x86" } configurations.all { resolutionStrategy { force 'com.squareup.okhttp:okhttp:2.4.0' force 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' force 'com.squareup.okio:okio:1.11.0' force 'com.squareup.okhttp3:okhttp:3.6.0' force 'com.squareup.retrofit2:retrofit:2.2.0' force 'com.android.support:recyclerview-v7:25.0.0' force 'com.android.support:support-v4:25.0.0' force 'com.android.support:cardview-v7:25.0.0' force 'com.android.support:appcompat-v7:25.0.0' force 'com.android.support:design:25.0.0' force 'com.android.support:support-annotations:25.0.0' force 'com.google.android.gms:play-services-ads:9.0.1' force 'com.google.android.gms:play-services-location:9.0.1' force 'com.google.android.gms:play-services-auth-base:9.0.1' force 'com.google.android.gms:play-services-base:9.0.1' } configurations.all { resolutionStrategy { failOnVersionConflict() } } 

Пожалуйста, помогите мне, что может быть причиной этого краха, и почему его единственный вред на устройствах с леденец и отлично работает на Зефире и Нуге.

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

Если я не использую facebook sdk, все кажется прекрасным, никаких сбоев. Возможно, Facebook sdk вызывает эту проблему, но я не знаю, почему

Solutions Collecting From Web of "Сбой приложения только на устройствах с леденцом"

Вы используете слишком много библиотек, поэтому ваши методы перешли более чем на 64k, поэтому вам нужно включить Multidex для вашего проекта

Внутри вашего build.gradle

  android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 25 multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.1' } 

И в AndroidManifest.xml

  <application android:name="android.support.multidex.MultiDexApplication" > ... </application> 

См. Это для более подробной информации

В моем случае это решило мою проблему. В классе приложений вам нужно

  @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } 

Основная проблема, которую я вижу, заключается в том, что вы превысили предел методов, добавив в проект большое количество библиотек. Android-приложение имеет определенный предел методов. Чтобы сделать ваш код эффективным, я предлагаю вам удалить все ненужные библиотеки, например, почему вы используете «Модернизацию» и «OkHttp» вместе? Вы можете получить всю работу, проделанную любым из них. Но если вы хотите использовать все эти библиотеки, вам нужно разрешить вашему приложению использовать «Multidex». Вот способ использования «Multidex».

https://developer.android.com/studio/build/multidex .

Но я не буду предлагать использовать это. Потому что это добавит нагрузку на ваше приложение и потребует больше места в телефоне.

Вы получаете ClassNotFoundException

Класс ClassNotFoundException генерируется, когда Java Virtual Machine (JVM) пытается загрузить определенный класс, и указанный класс не может быть найден в пути к классам.

Сначала вы должны установить Multidex .

Файлы приложений Android (APK) содержат исполняемые файлы байт-кода в виде файлов Dalvik Executable (DEX), которые содержат скомпилированный код, используемый для запуска вашего приложения. Спецификация исполняемого файла Dalvik ограничивает общее количество методов, на которые можно ссылаться в одном файле DEX, до 65 536, включая методы фреймворка Android, методы библиотеки и методы в вашем собственном коде. Чтобы преодолеть этот предел, необходимо настроить процесс создания приложений для создания более чем одного файла DEX, известного как многоэлементная конфигурация.

Вы должны использовать последнюю версию

  compileSdkVersion 25 buildToolsVersion '25.0.2' defaultConfig { applicationId 'com.myapp.app' minSdkVersion 21 targetSdkVersion 25 // Good approach using same version of compileSdkVersion versionCode 122 versionName "1.2.5" multiDexEnabled true ndk { abiFilters "armeabi", "armeabi-v7a", "x86" } configurations.all { resolutionStrategy { force 'com.squareup.okhttp:okhttp:3.7.0' force 'com.squareup.okhttp:okhttp-urlconnection:2.7.5' force 'com.squareup.okio:okio:1.12.0' force 'com.squareup.okhttp3:okhttp:3.7.0' force 'com.squareup.retrofit2:retrofit:2.2.0' force 'com.android.support:recyclerview-v7:25.2.0' force 'com.android.support:support-v4:25.2.0' force 'com.android.support:cardview-v7:25.2.0' force 'com.android.support:appcompat-v7:25.2.0' force 'com.android.support:design:25.2.0' force 'com.android.support:support-annotations:25.2.0' force 'com.google.android.gms:play-services-ads:10.2.1' force 'com.google.android.gms:play-services-location:10.2.1' force 'com.google.android.gms:play-services-auth-base:10.2.1' force 'com.google.android.gms:play-services-base:10.2.1' } configurations.all { resolutionStrategy { failOnVersionConflict() } } 

После этого Clean-Rebuild-Run.

FYI

Вы можете использовать версию ниже, если сбой 4.20.0 .

 compile 'com.facebook.android:facebook-android-sdk:4.16.0'