Java Android facebook崩溃

Java Android facebook崩溃,java,android,eclipse,facebook,cocos2d-x,Java,Android,Eclipse,Facebook,Cocos2d X,我在Eclipse中安装了FacebookSDK,我正在使用FacebookSDK4.18 我已经添加了Facebook.jar来构建路径,但也崩溃了 protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(this); //Crash this line } public

我在Eclipse中安装了FacebookSDK,我正在使用FacebookSDK4.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());
            }
        });
    }
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FacebookSdk.sdkinInitialize(this);//使这行崩溃
}
公共无效initFB(){
Log.e(“Facebook”、“init Facebook”);
LoginManager.getInstance().logInWithReadPermissions(这是Arrays.asList(“public_profile”);
Log.e(“Facebook”、“init facebook2”);
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
Log.d(“FB”,“获取访问令牌”);
fbLoginCallBack(loginResult.getAccessToken().getToken());
//accessToken=loginResult.getAccessToken();
}
@凌驾
公开作废{
//应用程序代码
日志d(“FB”、“取消”);
}
@凌驾
public void onError(facebook异常){
//应用程序代码
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):在 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.Invokenactive(本机方法)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(本机方法)

试一试


@我也面临着这个问题,所以解决办法是这样的

FacebookSdk。SDK初始化(此); 上课不恰当

那么,试试这个
FacebookSdk。sdkinInitialize(您的活动。此)

应用程序类中,在**onCreate()**方法中


FacebookSdk。sdkinInitialize(getApplicationContext())

右键单击项目->生成路径->配置生成路径->订单和导出选项卡


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

在我的例子中,每当调用
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.facebook活动中包含
android:screenOrientation
属性是导致崩溃的原因:


按如下方式更新
修复了该错误:


作为我对该漏洞原因调查的一部分,我还将项目的FacebookSDK依赖性从
com.facebook.android:facebook android sdk:4.20.0
更新为最近的
com.facebook.android:facebook android sdk:5.0.0


希望这对别人有帮助

您可能已将其添加到IDE路径,但未添加到应用程序的路径。你的
build.gradle
是什么样子的?我正在使用Eclipse。因此,没有build.gradleTry将FacebookSdk.sdkinInitialize(getApplicationContext())放在一起;为什么你认为你不能在Eclipse中使用gradle?为什么要使用Eclipse?谢谢你的回复。但不工作他调用的方法是静态的,不需要构造函数初始化谢谢回复。FacebookSdk.sdk初始化(YourActivity.this);或FacebookSdk.sdkinInitialize(getApplicationContext());我已经试过了。但不工作确保“gen”文件夹位于“订单和导出”选项卡中的“src”文件夹之前。还可以尝试“Android工具>修复项目属性”,然后清理项目。另外,最好将facebook sdk作为库导入,而不是Android Studio中使用的jar文件。FacebookSDK 4.18。所以我下载了Facebook.aar不是jar。我把aar转换成jar。
/* 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);