【问题标题】:Android facebook crash安卓脸书崩溃
【发布时间】:2016-12-22 09:08:34
【问题描述】:

我在 Eclipse 中设置了 Facebook sdk,我使用的是 Facebook sdk 4.18。

我已经添加了 Facebook.jar 来构建路径,但也崩溃了。

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState); 

        FacebookSdk.sdkInitialize(this); //Crash this line
    }

public void initFB(){
        Log.e("Facebook", "init facebook");
        LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

        Log.e("Facebook", "init facebook2");
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {

                Log.d("FB", "access token got.");

                fbLoginCallBack(loginResult.getAccessToken().getToken());

//              accessToken = loginResult.getAccessToken();
            }

            @Override
            public void onCancel() {
                // App code
                Log.d("FB", "CANCEL");
            }

            @Override
            public void onError(FacebookException exception) {
                // App code
                Log.d("FB", exception.toString());
            }
        });
    }

错误信息

12-22 16:57:29.620: E/AndroidRuntime(19402): java.lang.NoClassDefFoundError:com.facebook.R$style 12-22 16:57:29.620:E/AndroidRuntime(19402):在 com.facebook.FacebookSdk.(FacebookSdk.java:83) 12-22 16:57:29.620:E/AndroidRuntime(19402):在 com.sidequest.taxi.taxi.onCreate(taxi.java:187) 12-22 16:57:29.620: E/AndroidRuntime(19402):在 android.app.Activity.performCreate(Activity.java:5231) 12-22 16:57:29.620:E/AndroidRuntime(19402):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 12-22 16:57:29.620: E/AndroidRuntime(19402): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212) 12-22 16:57:29.620: E/AndroidRuntime(19402): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2298) 12-22 16:57:29.620: E/AndroidRuntime(19402): 在 android.app.ActivityThread.access$800(ActivityThread.java:144) 12-22 16:57:29.620:E/AndroidRuntime(19402):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246) 12-22 16:57:29.620: E/AndroidRuntime(19402): 在 android.os.Handler.dispatchMessage(Handler.java:102) 12-22 16:57:29.620:E/AndroidRuntime(19402):在 android.os.Looper.loop(Looper.java:212) 12-22 16:57:29.620: E/AndroidRuntime(19402):在 android.app.ActivityThread.main(ActivityThread.java:5151) 12-22 16:57:29.620:E/AndroidRuntime(19402):在 java.lang.reflect.Method.invokeNative(Native Method) 12-22 16:57:29.620:E/AndroidRuntime(19402):在 java.lang.reflect.Method.invoke(Method.java:515) 12-22 16:57:29.620: E/AndroidRuntime(19402):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 12-22 16:57:29.620: E/AndroidRuntime(19402): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684) 12-22 16:57:29.620:E/AndroidRuntime(19402):在 dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 您可能已将其添加到 IDE 路径中,但未添加到应用程序的路径中。你的build.gradle 是什么样的?
  • 我正在使用 Eclipse。所以没有 build.gradle
  • 尝试把FacebookSdk.sdkInitialize(getApplicationContext());
  • 为什么你认为你不能在 Eclipse 中使用 gradle?为什么要使用 Eclipse?
  • 感谢您的回复。但不起作用

标签: java android eclipse facebook cocos2d-x


【解决方案1】:

@Manlok Wong 我也面临这个问题,所以解决方法是这样的

FacebookSDK。 sdkInitialize(这个); 上课不正常

所以,试试这个 FacebookSdk. sdkInitialize (Your Activity. this);

而在Application类中,在**onCreate()**方法中

FacebookSdk. sdkInitialize (getApplicationContext ());

【讨论】:

  • 感谢您的回复。 FacebookSdk.sdkInitialize(YourActivity.this);或 FacebookSdk.sdkInitialize(getApplicationContext());我已经试过了。但不起作用
【解决方案2】:

试试

FacebookSdk.sdkInitialize(getApplicationContext());

//or

FacebookAPI.getInstance().init(getApplicationContext());

【讨论】:

  • 他调用的方法是静态的,不需要构造函数初始化
【解决方案3】:

右键单击您的项目 -> 构建路径 -> 配置构建路径 -> 订购和导出选项卡。

确保选中“Facebook.jar”以进行导出。

【讨论】:

  • 确保“gen”文件夹位于“Order and Export”选项卡中的“src”文件夹之前。还可以尝试“Android 工具 > 修复项目属性”,然后清理项目。
  • 另外,最好将 facebook sdk 作为库而不是 jar 文件导入。
  • FacebookSDK 4.18 正在 Android Studio 中使用。所以我下载了 Facebook.aar 不是 jar。我将 aar 转换为 jar。
【解决方案4】:

在我的例子中,每当调用 logInWithReadPermissions() 时,我们的 Android 应用程序就会完全崩溃(仅在 Android 8 中):

/* This caused an immediate crash of the application - wrapping with 
   try/catch failed to "catch" any unhandled expection that may have been
   causing the crash */
LoginManager.getInstance().logInWithReadPermissions(this, PERMISSIONS);

事实证明,在我们清单的 com.facebook.FacebookActivity 活动中包含 android:screenOrientation 属性是导致崩溃的原因:

<!-- Causes crash -->
<activity 
    android:name="com.facebook.FacebookActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:screenOrientation="portrait" />

如下更新&lt;acitivty/&gt;修复了这个bug:

<!-- Resolved the crash -->
<activity 
    android:name="com.facebook.FacebookActivity"
    android:label="@string/app_name" />

作为调查此错误原因的一部分,我还将项目的 FacebookSDK 依赖关系从 com.facebook.android:facebook-android-sdk:4.20.0 更新为更新的 com.facebook.android:facebook-android-sdk:5.0.0

希望这对某人有所帮助!

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多