Facebook-sdk-for-unity: Erro de inicialização no Android

Criado em 11 out. 2017  ·  4Comentários  ·  Fonte: facebook/facebook-sdk-for-unity

Olá,

Estou tentando integrar o SDK do Facebook no meu jogo Unity, mas a inicialização falha. Estou usando o SDK versão 7.8 porque as versões mais recentes fazem meu jogo exceder o limite de 64K de métodos e não quero torná-lo multi-dex. Isto é o que vejo no 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: Rejeitando a reinicialização na classe com falha anterior java.lang.Class: java.lang.NoClassDefFoundError: Falha na resolução de: 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: em 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: Causado por: java.lang.ClassNotFoundException: android.support.v4.app.BaseFragmentActivityApi16
10-10 18:40:25.532 11528-11624/? I/art: em 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: em java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
10-10 18:40:25.532 11528-11624/? I/art: em java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
10-10 18:40:25.532 11528-11624/? I/art: em 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: em boolean com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: em 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: Rejeitando a reinicialização na classe com falha anterior java.lang.Class: java.lang.NoClassDefFoundError: Falha na resolução de: 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: em boolean com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.532 11528-11624/? I/art: em 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: Causado por: java.lang.ClassNotFoundException: android.support.v4.app.BaseFragmentActivityApi16
10-10 18:40:25.533 11528-11624/? I/art: em 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: em java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
10-10 18:40:25.533 11528-11624/? I/art: em java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
10-10 18:40:25.533 11528-11624/? I/art: em 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: em boolean com.unity3d.player.UnityPlayer.c(com.unity3d.player.UnityPlayer) ((null):-1)
10-10 18:40:25.533 11528-11624/? I/art: em 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: Falha na resolução de: Lcom/facebook/FacebookActivity;

Alguma ideia do que pode estar acontecendo aqui?

Obrigado.

Comentários muito úteis

Eu estava tendo um rastreamento de pilha semelhante, mas não terminou lá: rolando até o final, mostrou que a causa final era que não podia carregar alguma classe de android.arch. Após algumas pesquisas, descobri que isso foi causado pela versão 26.1.0 da biblioteca de suporte (https://developer.android.com/topic/libraries/support-library/revisions.html#26-1-0) que adicionou o Dependência de "Componentes da Arquitetura Android". Depois de adicionar essas bibliotecas, funcionou.

Todos 4 comentários

Eu estava tendo um rastreamento de pilha semelhante, mas não terminou lá: rolando até o final, mostrou que a causa final era que não podia carregar alguma classe de android.arch. Após algumas pesquisas, descobri que isso foi causado pela versão 26.1.0 da biblioteca de suporte (https://developer.android.com/topic/libraries/support-library/revisions.html#26-1-0) que adicionou o Dependência de "Componentes da Arquitetura Android". Depois de adicionar essas bibliotecas, funcionou.

@sp-jordi-vilalta Você salvou meu dia. Eu enfrentei o mesmo erro em reagir nativo. Apenas sua solução funcionou.

@sp-jordi-vilalta Obrigado pela dica. Você pode detalhar como você fez isso? Eu tenho um mesmo problema agora. desde já, obrigado

@GregLukosek Não me lembro do rastreamento de pilha completo, mas no final estava mostrando a verdadeira classe ausente e acho que era algo do android.arch.*
Projetos Android recentes devem gerenciar suas dependências do Android usando maven/gradle, mas não sei sobre os detalhes para automatizar isso para o Unity, então apenas segui a documentação em https://developer.android.com/reference/android/arch /lifecycle/package-summary.html para conhecer os pacotes e versões necessários e baixe-os manualmente do repositório maven do Google (https://maven.google.com). Naquele momento (v1.0.3), bastava obter o runtime e os pacotes comuns para fazê-lo funcionar.

Esta página foi útil?
0 / 5 - 0 avaliações