Ich verwende Retrofit, um die serverseitigen Daten von Mobile zu verarbeiten. Nach der Implementierung der Nachrüstung erhalte ich die folgende Ausnahme.
Was mache ich falsch?
com.name.App_idea W / System.err: java.lang.NoClassDefFoundError: Retrofit2.Utils bei retrofit2.Retrofit $ Builder.baseUrl (Retrofit.java:434) unter com.name.App_idea.utils.Idea.onCreate (Idea.java:103) bei android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1007) bei android.app.ActivityThread.handleBindApplication (ActivityThread.java:4541) bei android.app.ActivityThread.access $ 1500 (ActivityThread.java:151) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1381) bei android.os.Handler.dispatchMessage (Handler.java:110) bei android.os.Looper.loop (Looper.java:193) bei android.app.ActivityThread.main (ActivityThread.java:5292) at java.lang.reflect.Method.invokeNative (Native Methode) bei java.lang.reflect.Method.invoke (Methode.java:515) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:824) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:640) bei dalvik.system.NativeStart.main (Native Methode)
Retrofit Init
%Vor%Gradle-Datei
%Vor%Anwendungsklasse
%Vor%Es ist Gradle bulid configure issue Ich habe auch das gleiche Problem Manchmal
In Gradle verwenden Sie
%Vor%Enire Google Playservice Lib können Sie festlegen, welche Bibliotheken in Ihrem Projekt verwendet werden
Beispiel
%Vor%Verweisen Sie auf diese URL Ссылка
Dieser Fehler tritt aufgrund von MultiDexApplication auf. Ich bin mit dieser Art von Problemen konfrontiert mit einer anderen Bibliothek nicht die gleiche Bibliothek, sondern eine andere Bibliothek.Es wird Fehler der Retrofit-Bibliothek, weil ihre Initialisierung der App starten, wo Dex (in dem Ihre Retrofit-Bibliothek Code in Dex konvertiert wird) Datei ist nicht zu setzen (installieren) / p>
Um das zu beheben, müssen Sie mit Multiple Dex-Datei umgehen. mit Hilfe der Anwendung build.gradle
& amp; Anwendungsklasse
unter den Änderungen, die in build.gradle
file
gesamt build.gradle
Wenn Ihre Anwendung die Anwendungsklasse erweitert, können Sie die attachBaseContext()
-Methode überschreiben und MultiDex.install(this)
aufrufen, um Multidex zu aktivieren. Installieren Sie den Kontext für mehrere Dateien mithilfe der Anwendungsklasse, die [MultiDexApplication][2]
Vorschlag
Selektive Kompilierung von APIs in Ihre ausführbare Datei
Verwenden Sie nicht den gesamten Google Play-Dienst, sondern verwenden Sie nur die erforderliche Bibliothek. Ab Version 6.5 können Sie die Google Play-Dienst-APIs stattdessen selektiv in Ihre App kompilieren. Wenn Sie beispielsweise nur die Google Fit- und Android Wear-APIs einschließen möchten, ersetzen Sie die folgende Zeile in Ihrer Datei build.gradle:
%Vor%mit diesen Zeilen:
%Vor%Mit dem Hinweis auf meine Antwort Ссылка
Ich war mit diesem Fehler unter Lollipop-Geräten konfrontiert.
Ich habe multiDexEnabled true verwendet.
Nach dem Hinzufügen dieses Codes zu der Klasse, die die Application-Klasse erweitert, wurde mein Problem gelöst.
%Vor%Referenz: Ссылка
Hast du die folgenden Proguard-Regeln hinzugefügt?
%Vor%Dokumentation: Ссылка
Mit diesen vielen Bibliothekssätteln muss es die berüchtigte 64k-Methode überschritten haben. Sie müssen Ihre App für Multidex aktivieren. Hier ist, wie Sie es tun. Ссылка
Verwenden Sie die gleiche lib-Version für die Basis-Retrofit-Bibliothek und die Konverter.
%Vor%Ich stieß auf ähnliche Probleme wie diese, es ist wahrscheinlich ein Abhängigkeitsproblem
%Vor%enthält bereits okhttp, wie hier zu sehen Ссылка , entfernen Sie also das okhttp aus der Abhängigkeitsliste synchronisieren und erneut versuchen.