Android Facebook LoginButton BasicWebView崩溃

时间:2016-12-21 23:09:46

标签: android facebook facebook-graph-api facebook-login facebook-android-sdk

我在guide

之后添加了facebook登录信息

环境:

  • Nexus 6p
  • Andorid 7
  • minSdkVersion 19
  • targetSdkVersion 24
完全

调试版,但在添加 Proguard 后,按下时会收到崩溃:com.facebook.login.widget.LoginButton。经过多次尝试启动发布版本后,调试开始崩溃并出现同样的错误。

Proguard规则:

build.gradle

compile 'com.facebook.android:facebook-android-sdk:[4,5)'

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro

proguard-rules.pro

-keep class com.facebook.** {
*;
}

-keep class android.webkit.WebViewClient

-keep class * extends android.webkit.WebViewClient

-keepclassmembers class * extends android.webkit.WebViewClient {
    <methods>;
}

SDK在应用程序类onCreate()

FacebookSdk.sdkInitialize(getApplicationContext());中初始化

CallbackManager.Factory.create();在登录按钮之前创建

 mCallbackManager = CallbackManager.Factory.create();
        LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
        String[] permissions = {"public_profile", "user_friends", "user_hometown", "email"};
        loginButton.setReadPermissions(permissions);
        loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {..});

崩溃:

Process: com.facebook.katana, PID: 2364
                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.facebook.katana/com.facebook.katana.gdp.ProxyAuthDialog}: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class com.facebook.webview.BasicWebView
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                 at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:154)
                                                 at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                              Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class com.facebook.webview.BasicWebView
                                              Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.facebook.webview.BasicWebView
                                              Caused by: java.lang.reflect.InvocationTargetException
                                                 at java.lang.reflect.Constructor.newInstance0(Native Method)
                                                 at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
                                                 at android.view.LayoutInflater.createView(LayoutInflater.java:645)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
                                                 at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
                                                 at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412)
                                                 at android.app.Activity.setContentView(Activity.java:2414)
                                                 at com.facebook.base.activity.FbFragmentActivity.setContentView(:105588)
                                                 at com.facebook.katana.gdp.PlatformDialogActivity.b(:2405787)
                                                 at com.facebook.katana.gdp.ProxyAuthDialog.b(:2405964)
                                                 at com.facebook.base.activity.FbFragmentActivity.onCreate(:105550)
                                                 at android.app.Activity.performCreate(Activity.java:6679)
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                 at X.01u.callActivityOnCreate(:5745)
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                 at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:154)
                                                 at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                              Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x209000a
                                                 at android.content.res.Resources.getText(Resources.java:335)
                                                 at android.content.res.Resources.getString(Resources.java:381)
                                                 at X.0Wp.a(:76745)
                                                 at X.0Vv.a(:75106)
                                                 at X.0Vv.a(:75032)
                                                 at X.0Vs.getText(:74823)
                                                 at X.0Vs.getString(:74813)
                                                 at org.chromium.ui.base.ResourceBundle.initializeLocalePaks(ResourceBundle.java:61)
                                                 at com.android.webview.chromium.WebViewChromiumFactoryProvider.startChromiumLocked(WebViewChromiumFactoryProvider.java:395)
                                                 at com.android.webview.chromium.WebViewChromiumFactoryProvider.ensureChromiumStartedLocked(WebViewChromiumFactoryProvider.java:341)
                                                 at com.android.webview.chromium.WebViewChromiumFactoryProvider.startYourEngines(WebViewChromiumFactoryProvider.java:435)

仅供参考: 我在登录 Tinder

时遇到同样的崩溃

更新

通过从手机中删除 Facebook应用程序并使用浏览器登录来管理解决此问题。

1 个答案:

答案 0 :(得分:1)

考虑到一些有Facebook登录的应用程序抛出相同的错误,我认为它与Facebook应用程序错误有关。我删除了它。之后,我设法通过浏览器登录所有应用程序。此外,之后我尝试注销,从游戏市场安装Facebook应用程序并再次登录 - 全部成功通过。所以,它似乎是内部应用程序的bug。到目前为止无法重现它。