不推荐使用的 FacebookSdk 方法抛出 RuntimeException
Posted
技术标签:
【中文标题】不推荐使用的 FacebookSdk 方法抛出 RuntimeException【英文标题】:Deprecated FacebookSdk method throws 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)
那么我错过了什么?
【问题讨论】:
【参考方案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 中定义
【讨论】:
很好地修复了它。 嘿,你怎么知道它不再需要了?你有文档吗? @j2emanue 这是Legacy SDK Initialization
developers.facebook.com/docs/app-events/…中的文档【参考方案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上仍然有一些用户崩溃,不知道如何解决,只有部分用户会崩溃以上是关于不推荐使用的 FacebookSdk 方法抛出 RuntimeException的主要内容,如果未能解决你的问题,请参考以下文章
Facebook App Event sdk 4.38.0 在 ViewHierarchy.setAppearanceOfView 中抛出 NPE
Xcode 没有找到 openActiveSessionWithReadPermissions: FacebookSDK for iOS 方法