24

ログインとイベントの追跡のために、Gradle を介して Android アプリに FB SDK を統合しました。ログインは正常に機能しますが、アプリ イベントをログに記録しようとすると、logcat は 15 秒ごとに例外を表示し続けます。

D/com.facebook.appevents.AppEventsLogger: Got unexpected exception: java.lang.ClassNotFoundException: com.facebook.a.b

PersistedEvents の readAndClearStore() メソッドでスローされます

イベントをログに記録するための私のコードは次のとおりです。

AppEventsLogger logger = AppEventsLogger.newLogger(this);
    Bundle parameters = new Bundle();
    parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "EUR");
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, id);

    logger.logEvent(AppEventsConstants.EVENT_NAME_VIEWED_CONTENT,
            1.99,
            parameters);

つまり、私com.facebook.a.bにはプロガードの問題のように見えます。しかし、FB SDK のドキュメントでは、機能するためにプロガード ルールを入力する必要はないと明確に述べています。このエラーは、アプリを縮小していない場合や、github から sdk をダウンロードしてモジュールとして含めた場合にも表示されます。

4

2 に答える 2

1

Facebook SDK(v4.11.0)のロガーで数日前に同様の問題が発生しました。

D/com.facebook.a.a(PID): Got unexpected exception: java.io.WriteAbortedException: Read an exception; java.io.NotSerializableException: org.json.JSONObject

そして、彼らのドキュメントでは、次のように述べています。

Facebook Android SDK で ProGuard を使用するために、追加の手順を実行する必要はありません。Proguard の手順については、Android ツール プロジェクト サイト、ProGuard の実行を参照してください。

リリース環境でイベントがログに記録されない原因を調べた後、次のルールをプロガード ファイルに追加すると、魔法のようにうまく機能し始めました。

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

これに関する詳細情報を入手するために、Facebook 開発者チームへのチケットを既にオープンしています。https://developers.facebook.com/bugs/250752828645777/

于 2016-05-09T01:08:31.643 に答える