将我的应用分成两个不同的模块(一个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>
答案 0 :(得分:5)
我遇到了同样的问题,我使用update guide
解决了这个问题请尝试将方法Object#hashCode
从onCreate
更改为:
MainApplication.java
答案 1 :(得分:0)
即使Facebook不赞成使用 sdkInitialize()方法,您也需要添加该方法来解决此错误。
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);