4

私はこのガイドにほぼ忠実に従いましたが、アプリケーションを起動して Facebook セッションを作成する必要があるときに、アプリがクラッシュします。ライブラリがビルドに含まれていないと思います...

package com.firstandroidapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.widget.TextView;
import com.facebook.*;
import com.facebook.model.*;

public class MainActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // start Facebook Login
    Session.openActiveSession(this, true, new Session.StatusCallback() {

      // callback when session changes state
      @Override
      public void call(Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {

          // make request to the /me API
          Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

            // callback after Graph API response with user object
            @Override
            public void onCompleted(GraphUser user, Response response) {
              if (user != null) {
                TextView welcome = (TextView) findViewById(R.id.welcome);
                welcome.setText("Hello " + user.getName() + "!");
              }
            }
          });
        }
      }
    });
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
  }

}

例外スタックは次のとおりです。

10-16 14:13:30.627: E/AndroidRuntime(28793): FATAL EXCEPTION: main
10-16 14:13:30.627: E/AndroidRuntime(28793): java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager
10-16 14:13:30.627: E/AndroidRuntime(28793):    at com.facebook.Session.postActiveSessionAction(Session.java:1327)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at com.facebook.Session.setActiveSession(Session.java:790)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at com.facebook.Session.openActiveSession(Session.java:890)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at com.facebook.Session.openActiveSession(Session.java:830)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at com.mumin.facebookconnect.FBAuth.onCreate(FBAuth.java:21)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.app.Activity.performCreate(Activity.java:5104)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2260)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2356)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.app.ActivityThread.access$600(ActivityThread.java:150)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.os.Looper.loop(Looper.java:137)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at android.app.ActivityThread.main(ActivityThread.java:5195)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at java.lang.reflect.Method.invokeNative(Native Method)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at java.lang.reflect.Method.invoke(Method.java:511)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
10-16 14:13:30.627: E/AndroidRuntime(28793):    at dalvik.system.NativeStart.main(Native Method)
10-16 14:13:38.175: I/Process(28793): Sending signal. PID: 28793 SIG: 9
4

2 に答える 2

14

交換するだけ

     YourProject\lib\android-support-v4.jar 

     facebook-android-sdk-x.xx.x\libs\android-support-v4.jar 

ここで、x.xx.x は Facebook SDK のバージョンです (例: 3.21.0)。

于 2014-03-04T15:04:48.963 に答える
0

lollipop より前の Android バージョンでアプリを実行しようとしたときに、同じ問題が発生しました。ライブラリを何時間も検索して遊んだ後、ロリポップより前のバージョンでは 65k の機能制限が原因であることがわかりました。

したがって、上記の解決策またはその他の解決策を試す前に、facebook sdk initialize 呼び出しを onCreate メソッドではなく、コードの後半に移動することをお勧めします。このように、問題の原因が 65k の制限である場合、別のクラスで NoClassDef found 例外が発生する可能性があります。

65k の制限の問題を解決するには、build.gradle でライブラリを調べて、未使用のライブラリを削除します。また、Google API、特に Google Play サービスから必要なものだけを使用してください。また、アプリのクリーンアップとファイル サイズの削減にも役立ちます。

于 2016-01-06T22:24:45.663 に答える