RuntimeException:必须在调用activateApp之前初始化Facebook sdk

时间:2018-02-13 15:00:57

标签: android facebook

将我的应用分成两个不同的模块(一个module和一个application)后,我不得不在tools:node="replace"节点中添加<application>因为我有一个Manifest Merging问题(与Facebook和Firebase相关)。

自从我这样做以来,一切正常但我的应用程序现在在运行时因此例外崩溃:The Facebook sdk must be initialized before calling activateApp

但是我正在这样初始化应用程序(在扩展Application的类中):

FacebookSdk.setApplicationId(getString(R.string.facebook_app_id));
AppEventsLogger.activateApp(this); // this = instance of Application

我完全没有改变,之前它曾经工作得很好,但现在我得到了这个崩溃。我不知道该怎么做......没有找到任何关于这一点可以帮助我。

感谢您的帮助。

编辑:这是相关的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="package"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-permission android:name="android.permission.CAMERA" />

    <uses-permission android:name="android.permission.FLASHLIGHT" />

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.READ_CONTACTS" />

    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <uses-permission android:name="android.permission.VIBRATE" />

    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <uses-permission android:name="package.permissions.C2D_MESSAGE" />

    <permission android:name="package.permissions.C2D_MESSAGE" android:protectionLevel="signature" />

    <application
        android:name=".application.MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/app_icon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme"
        tools:node="replace" >

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

        <provider android:authorities="com.facebook.app.FacebookContentProvider#############"
            android:name="com.facebook.FacebookContentProvider"

            android:exported="true"/>

        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

    </application>

</manifest>

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,我使用update guide

解决了这个问题

请尝试将方法Object#hashCodeonCreate更改为: MainApplication.java

答案 1 :(得分:0)

即使Facebook不赞成使用 sdkInitialize()方法,您也需要添加该方法来解决此错误。

FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);