Facebook-sdk-for-unity: Erreur d'initialisation sur Android

Créé le 11 oct. 2017  ·  4Commentaires  ·  Source: facebook/facebook-sdk-for-unity

Bonjour,

J'essaie d'intégrer le SDK Facebook dans mon jeu Unity, mais l'initialisation échoue. J'utilise la version 7.8 du SDK car les versions plus récentes font que mon jeu dépasse la limite des méthodes 64K, et je ne veux pas le rendre multi-dex. Voici ce que je vois dans 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 : Rejeter la réinitialisation sur la classe java.lang.Class précédemment défaillante: java.lang.NoClassDefFoundError : Échec de la résolution de : Landroid/support/v4/app/BaseFragmentActivityApi16 ;
10-10 18:40:25.532 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.532 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art : au booléen 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 : Causé par : java.lang.ClassNotFoundException : android.support.v4.app.BaseFragmentActivityApi16
10-10 18:40:25.532 11528-11624/? I/art : sur 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 : à java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
10-10 18:40:25.532 11528-11624/? I/art : à java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
10-10 18:40:25.532 11528-11624/? I/art : à java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
10-10 18:40:25.532 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.532 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art : au booléen 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 : Rejeter la réinitialisation sur la classe java.lang.Class précédemment défaillante: java.lang.NoClassDefFoundError : Échec de la résolution de : Landroid/support/v4/app/BaseFragmentActivityApi16 ;
10-10 18:40:25.532 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.532 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art : au booléen 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 : Causé par : java.lang.ClassNotFoundException : android.support.v4.app.BaseFragmentActivityApi16
10-10 18:40:25.533 11528-11624/? I/art : sur 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 : à java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
10-10 18:40:25.533 11528-11624/? I/art : à java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
10-10 18:40:25.533 11528-11624/? I/art : à java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
10-10 18:40:25.533 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
10-10 18:40:25.533 11528-11624/? I/art : au booléen com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.533 11528-11624/? I/art : au booléen 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 : Échec de la résolution de : Lcom/facebook/FacebookActivity ;

Une idée de ce qui pourrait se passer ici ?

Merci.

Commentaire le plus utile

J'avais une trace de pile similaire, mais cela ne s'est pas terminé là: le défilement jusqu'à la fin a montré que la cause finale était qu'il ne pouvait pas charger une classe à partir d'android.arch. Après quelques recherches, j'ai découvert que cela était dû à la version 26.1.0 de la bibliothèque de support (https://developer.android.com/topic/libraries/support-library/revisions.html#26-1-0) qui a ajouté le Dépendance "Composants d'architecture Android". Après avoir ajouté ces bibliothèques, cela a fonctionné.

Tous les 4 commentaires

J'avais une trace de pile similaire, mais cela ne s'est pas terminé là: le défilement jusqu'à la fin a montré que la cause finale était qu'il ne pouvait pas charger une classe à partir d'android.arch. Après quelques recherches, j'ai découvert que cela était dû à la version 26.1.0 de la bibliothèque de support (https://developer.android.com/topic/libraries/support-library/revisions.html#26-1-0) qui a ajouté le Dépendance "Composants d'architecture Android". Après avoir ajouté ces bibliothèques, cela a fonctionné.

@sp-jordi-vilalta Vous avez sauvé ma journée. J'ai fait face à la même erreur dans React Native. Seule votre solution a fonctionné.

@sp-jordi-vilalta Merci pour le conseil. Pouvez-vous préciser comment vous avez fait cela ? J'ai le même problème en ce moment. Merci d'avance

@GregLukosek Je ne me souviens pas de la trace complète de la pile, mais à la fin, il montrait la vraie classe manquante, et je pense que c'était quelque chose d'android.arch.*
Les projets Android récents devraient gérer leurs dépendances Android à l'aide de maven/gradle, mais je ne connais pas les détails pour automatiser cela pour Unity, donc j'ai juste suivi la documentation dans https://developer.android.com/reference/android/arch /lifecycle/package-summary.html pour connaître les packages et les versions nécessaires, et les télécharger manuellement à partir du référentiel Google maven (https://maven.google.com). À ce moment-là (v1.0.3), il suffisait d'obtenir le runtime et les packages communs pour que cela fonctionne.

Cette page vous a été utile?
0 / 5 - 0 notes