Facebook-sdk-for-unity: Initialisierungsfehler auf Android

Erstellt am 11. Okt. 2017  ·  4Kommentare  ·  Quelle: facebook/facebook-sdk-for-unity

Hallo,

Ich versuche, das Facebook-SDK in mein Unity-Spiel zu integrieren, aber die Initialisierung schlägt fehl. Ich verwende die SDK-Version 7.8, weil neuere Versionen dazu führen, dass mein Spiel die 64-KB-Methodengrenze überschreitet, und ich es nicht multi-dex machen möchte. Das sehe ich in Android Logcat:
10-10 18:40:25.495 11528-11624/? V/com.facebook.unity.FB: SetUserAgentSuffix (Unity.7.8.0)
10-10 18:40:25.522 11528-11624/? V/com.facebook.unity.FB: Init({"appId":"842765265887515"})
10-10 18:40:25.532 11528-11624/? I/art: Re-Init bei zuvor fehlgeschlagener Klasse java.lang.Class ablehnen: java.lang.NoClassDefFoundError: Fehlgeschlagene Auflösung von: Landroid/support/v4/app/BaseFragmentActivityApi16;
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer$c$1.handleMessage(android.os.Message) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:98)
10-10 18:40:25.532 11528-11624/? I/art: at void android.os.Looper.loop() (Looper.java:154)
10-10 18:40:25.532 11528-11624/? I/art: at void com.unity3d.player.UnityPlayer$c.run() ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: Verursacht durch: java.lang.ClassNotFoundException: android.support.v4.app.BaseFragmentActivityApi16
10-10 18:40:25.532 11528-11624/? I/art: at java.lang.Class java.lang.VMClassLoader.findLoadedClass!(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
10-10 18:40:25.532 11528-11624/? I/art: bei java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
10-10 18:40:25.532 11528-11624/? I/art: bei java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
10-10 18:40:25.532 11528-11624/? I/art: bei java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer$c$1.handleMessage(android.os.Message) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:98)
10-10 18:40:25.532 11528-11624/? I/art: at void android.os.Looper.loop() (Looper.java:154)
10-10 18:40:25.532 11528-11624/? I/art: at void com.unity3d.player.UnityPlayer$c.run() ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: Re-Init bei zuvor fehlgeschlagener Klasse java.lang.Class ablehnen: java.lang.NoClassDefFoundError: Fehlgeschlagene Auflösung von: Landroid/support/v4/app/BaseFragmentActivityApi16;
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer$c$1.handleMessage(android.os.Message) ((null):-1)
10-10 18:40:25.533 11528-11624/? I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:98)
10-10 18:40:25.533 11528-11624/? I/art: at void android.os.Looper.loop() (Looper.java:154)
10-10 18:40:25.533 11528-11624/? I/art: at void com.unity3d.player.UnityPlayer$c.run() ((null):-1)
10-10 18:40:25.533 11528-11624/? I/art: Verursacht durch: java.lang.ClassNotFoundException: android.support.v4.app.BaseFragmentActivityApi16
10-10 18:40:25.533 11528-11624/? I/art: at java.lang.Class java.lang.VMClassLoader.findLoadedClass!(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
10-10 18:40:25.533 11528-11624/? I/art: bei java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
10-10 18:40:25.533 11528-11624/? I/art: bei java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
10-10 18:40:25.533 11528-11624/? I/art: bei java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
10-10 18:40:25.533 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.533 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.533 11528-11624/? I/art: at boolean com.unity3d.player.UnityPlayer$c$1.handleMessage(android.os.Message) ((null):-1)
10-10 18:40:25.533 11528-11624/? I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:98)
10-10 18:40:25.533 11528-11624/? I/art: at void android.os.Looper.loop() (Looper.java:154)
10-10 18:40:25.533 11528-11624/? I/art: at void com.unity3d.player.UnityPlayer$c.run() ((null):-1)
10-10 18:40:25.609 11528-11624/? E/Unity: AndroidJavaException: java.lang.NoClassDefFoundError: Fehlgeschlagene Auflösung von: Lcom/facebook/FacebookActivity;

Irgendeine Idee, was hier passieren könnte?

Danke.

Hilfreichster Kommentar

Ich hatte einen ähnlichen Stack-Trace, aber er endete dort nicht: Beim Scrollen bis zum Ende zeigte sich, dass die endgültige Ursache darin bestand, dass einige Klassen nicht von android.arch geladen werden konnten. Nach einigen Recherchen stellte ich fest, dass dies durch die Version 26.1.0 der Support-Bibliothek (https://developer.android.com/topic/libraries/support-library/revisions.html#26-1-0) verursacht wurde, die die Abhängigkeit von „Android Architecture Components“. Nach dem Hinzufügen dieser Bibliotheken funktionierte es.

Alle 4 Kommentare

Ich hatte einen ähnlichen Stack-Trace, aber er endete dort nicht: Beim Scrollen bis zum Ende zeigte sich, dass die endgültige Ursache darin bestand, dass einige Klassen nicht von android.arch geladen werden konnten. Nach einigen Recherchen stellte ich fest, dass dies durch die Version 26.1.0 der Support-Bibliothek (https://developer.android.com/topic/libraries/support-library/revisions.html#26-1-0) verursacht wurde, die die Abhängigkeit von „Android Architecture Components“. Nach dem Hinzufügen dieser Bibliotheken funktionierte es.

@sp-jordi-vilalta Du hast meinen Tag gerettet. Ich hatte den gleichen Fehler in React Native. Nur deine Lösung hat funktioniert.

@sp-jordi-vilalta Danke für den Tipp. Können Sie erläutern, wie Sie das gemacht haben? Ich habe gerade ein gleiches Problem. Vielen Dank im Voraus

@GregLukosek Ich erinnere mich nicht an den vollständigen Stack-Trace, aber am Ende zeigte er die wirklich fehlende Klasse, und ich glaube, es war etwas von android.arch.*
Neuere Android-Projekte sollten ihre Android-Abhängigkeiten mit maven/gradle verwalten, aber ich kenne die Besonderheiten nicht, um dies für Unity zu automatisieren, also habe ich einfach die Dokumentation in https://developer.android.com/reference/android/arch befolgt

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen