尝试使用 facebook 登录时出现 NoClassDefFoundError
NoClassDefFoundError when trying to login with facebook
我正在尝试在我的 unity 应用程序中使用 Facebook 登录,但是当我调用 FB.LogInWithReadPermissions 时出现以下错误:
java.lang.NoClassDefFoundError: com.facebook.applinks.AppLinkData
堆栈跟踪:
java.lang.NoClassDefFoundError: com.facebook.applinks.AppLinkData at
libcore.reflect.InternalNames.getClass(InternalNames.java:55) at
java.lang.Class.getDexCacheType(Class.java:2551) at
java.lang.reflect.AbstractMethod.getParameterTypes(AbstractMethod.java:169)
at java.lang.reflect.Method.getParameterTypes(Method.java:193) at
java.lang.Class.getDeclaredMethods(Class.java:1812) at
com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source) at
com.unity3d.player.UnityPlayer.nativeRender(Native Method) at
com.unity3d.player.UnityPlayer.access0(Unknown Source) at
com.unity3d.player.UnityPlayer$e.handleMessage(Unknown Source) at
android.os.Handler.dispatchMessage(Handler.java:98) at
android.os.Looper.loop(Looper.java:154) at
com.unity3d.player.UnityPlayer$e.run(Unknown Source) Caused by:
java.lang.ClassNotFoundException: Didn't find class
"com.facebook.applinks.AppLinkData" on path: DexPathList[[zip file
我的代码:
public void facebookLogin()
{
try
{
facebookButton.interactable = false;
var perms = new List<string>() { "public_profile", "email" };
FB.LogInWithReadPermissions(perms, (result) =>
{
if (result.Cancelled)
{
facebookButton.interactable = true;
}
else if (FB.IsLoggedIn)
{
var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
Dictionary<string, object> data = new Dictionary<string, object>()
{
{ "accessToken", aToken.TokenString }
};
//
managers.server.loginWithFacebook(data, (succ, error) =>
{
if (succ)
{
showHome();
}
else
{
facebookButton.interactable = true;
showError(error, () => { });
}
});
}
else
{
facebookButton.interactable = true;
}
});
}
catch (Exception ex)
{
Debug.Log(ex);
}
}
Unity 编辑器版本:2020.3.15f1
Facebook SDK 版本:11.0.0
我的解决方案是更新 unity-jar-resolver
然后 运行 resolve (Assets> External Dependency Manager> Android Resolver> Resolve)
我正在尝试在我的 unity 应用程序中使用 Facebook 登录,但是当我调用 FB.LogInWithReadPermissions 时出现以下错误:
java.lang.NoClassDefFoundError: com.facebook.applinks.AppLinkData
堆栈跟踪:
java.lang.NoClassDefFoundError: com.facebook.applinks.AppLinkData at libcore.reflect.InternalNames.getClass(InternalNames.java:55) at java.lang.Class.getDexCacheType(Class.java:2551) at java.lang.reflect.AbstractMethod.getParameterTypes(AbstractMethod.java:169) at java.lang.reflect.Method.getParameterTypes(Method.java:193) at java.lang.Class.getDeclaredMethods(Class.java:1812) at com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source) at com.unity3d.player.UnityPlayer.nativeRender(Native Method) at com.unity3d.player.UnityPlayer.access0(Unknown Source) at com.unity3d.player.UnityPlayer$e.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:154) at com.unity3d.player.UnityPlayer$e.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.applinks.AppLinkData" on path: DexPathList[[zip file
我的代码:
public void facebookLogin()
{
try
{
facebookButton.interactable = false;
var perms = new List<string>() { "public_profile", "email" };
FB.LogInWithReadPermissions(perms, (result) =>
{
if (result.Cancelled)
{
facebookButton.interactable = true;
}
else if (FB.IsLoggedIn)
{
var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
Dictionary<string, object> data = new Dictionary<string, object>()
{
{ "accessToken", aToken.TokenString }
};
//
managers.server.loginWithFacebook(data, (succ, error) =>
{
if (succ)
{
showHome();
}
else
{
facebookButton.interactable = true;
showError(error, () => { });
}
});
}
else
{
facebookButton.interactable = true;
}
});
}
catch (Exception ex)
{
Debug.Log(ex);
}
}
Unity 编辑器版本:2020.3.15f1 Facebook SDK 版本:11.0.0
我的解决方案是更新 unity-jar-resolver 然后 运行 resolve (Assets> External Dependency Manager> Android Resolver> Resolve)