【问题标题】:Deprecated FacebookSdk method throws RuntimeException不推荐使用的 FacebookSdk 方法抛出 RuntimeException
【发布时间】:2017-06-14 12:30:00
【问题描述】:

我有FacebookSdk.sdkInitialize(getApplicationContext()),其中 sdkInitialize() 显示为已弃用。根据article,我们可以删除该行。但是我在AppEventsLogger.activateApp(this) 之后的行出现以下错误:

AndroidRuntime: FATAL EXCEPTION: main                                                                              Process: com.daimler.moovel.android:auth, PID: 4011                                java.lang.RuntimeException: Unable to create application com.daimler.moovel.android.DebugApplication: The Facebook sdk must be initialized before calling activateApp                                              at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5879)                                             at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: The Facebook sdk must be initialized before calling activateApp
at com.facebook.appevents.AppEventsLogger.activateApp(AppEventsLogger.java:226)
at com.facebook.appevents.AppEventsLogger.activateApp(AppEventsLogger.java:208)

那么我错过了什么?

【问题讨论】:

    标签: android facebook-android-sdk facebook-sdk-4.0 android-facebook


    【解决方案1】:

    现在不需要AppEventsLogger.activateApp(this); 如果你在 manifest.xml 中设置了 facebook_id 就不需要了 你只需要在 manifest.xml 中的 Application 标签中添加以下内容

     <meta-data
       android:name="com.facebook.sdk.ApplicationId"          
       android:value="@string/facebook_app_id" /> 
    

    其中 facebook_app_id 在 string.xml 中定义

    【讨论】:

    【解决方案2】:

    那是因为你升级了你的 Facebook SDK 并且你正在尝试使用 AppEventsLogger providinig this as Context 的实现:

    AppEventsLogger.activateApp(this);

    从 SDK 4.19 及更高版本替换为:

    AppEventsLogger.activateApp(getApplication());

    有关此的文档说:

    通知事件系统应用程序已启动,激活和停用事件应开始自动记录。这应该从您的应用程序的 OnCreate 方法中调用。

    如果Facebook SDK 现在在应用程序启动时自动初始化,则具有逻辑。

    试试吧,希望能解决你的问题。

    【讨论】:

    • yupi,我已经加了AppEventsLogger.activateApp(getApplication());,在fabric上仍然有一些用户崩溃,不知道如何解决,只有部分用户会崩溃
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 2013-03-27
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多