Wie vermeidet man java.lang.NoClassDefFoundError: android / os / PersistableBundle auf pre-L?

8

Ich verwende die TinyBus -Bibliothek, um Ereignisse in meiner App zu versenden. MinSDK ist 15, kompilieren SDK ist 23.

Auf Pre-21-Geräten stehe ich vor dem Problem, das anscheinend viele Apps betrifft, die Reflektionen verwenden. Sobald ich versuche, mich in meiner Basis Activity klasse am Bus zu registrieren (die von AppCompatActivity erbt), erhalte ich das folgende Crash-Log:

%Vor%

Ich weiß, dass dieser Fehler dadurch verursacht wird, dass Dalvik eine Klasse nicht initialisiert, die in der Datei dex nicht gefunden werden kann. Es gibt eine Menge Informationen und Fragen zu diesem Thema (da es auch Otto und andere betrifft), aber bisher habe ich nur einen Fix gesehen: entferne die Verwendung von PersistableBundle aus der App. Ich verweise jedoch nirgendwo in meinem Code auf PersistableBundle , aber das System tut das anscheinend.

Gibt es eine andere bekannte Lösung für das Problem?

    
Droidman 04.12.2015, 10:04
quelle

2 Antworten

6

Nun, das Problem ist jetzt gelöst. Nachdem ich all meinen Code durchgegangen bin (was ich vor langer Zeit hätte tun sollen), habe ich herausgefunden, dass ich tatsächlich Referenzen auf das PersistableBundle hatte. Diese befanden sich in Methoden, die ich der IDE wie onPostCreate(PersistableBundle bundle) geben ließ und denen ich nicht Beachtung schenkte. Durch Ersetzen aller PersistableBundle durch Bundle wurde das Problem behoben.

Für Leute, die ein ähnliches Problem haben, kann ich nur vorschlagen, die erzeugten Sachen genau anzusehen, wenn Sie eine neuere API benutzen.

    
Droidman 22.12.2015, 16:56
quelle
-1

Wenn Sie Android Studio zum Erstellen eines Projekts verwenden, versuchen Sie, die Methode unten zu Application class:

hinzuzufügen %Vor%

Vergessen Sie nicht, add multiDexEnabled true zu gradle file hinzuzufügen. Hilfe Es hilft dir. Viel Glück!.

    
Phan Sinh 04.12.2015 10:21
quelle