将 Facebook 插件与 Unity 一起使用时出现 ActivityNotFoundException

Posted

技术标签:

【中文标题】将 Facebook 插件与 Unity 一起使用时出现 ActivityNotFoundException【英文标题】:ActivityNotFoundException when using Facebook plugin with Unity 【发布时间】:2015-12-03 21:50:02 【问题描述】:

我正在使用 Unity 5.2.2p2、Facebook Unity SDK 7.2.2 和 Prime31 的 android IAB 插件 2.9。当我编译我的应用程序并在设备上运行它时,在 adb 日志中我看到:

I/Unity   (18149): AndroidJavaException: android.content.ActivityNotFoundException: Unable to find explicit activity class com.-----.----/com.facebook.unity.FBUnityLoginActivity; have you declared this activity in your AndroidManifest.xml?
I/Unity   (18149):   at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <filename unknown>:0 
I/Unity   (18149):   at UnityEngine.AndroidJNISafe.CallStaticVoidMethod (IntPtr clazz, IntPtr methodID, UnityEngine.jvalue[] args) [0x00000] in <filename unknown>:0 
I/Unity   (18149):   at UnityEngine.AndroidJavaObject._CallStatic (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0 
I/Unity   (18149):   at UnityEngine.AndroidJavaObject.CallStatic (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0 
I/Unity   (18149):   at Facebook.Unity.Mobile.Android.FBJavaClass.CallStatic (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0 
I/Unity   (18149):   at Facebook.Unity.Mobile.Android.AndroidFacebook.CallFB (System.String method, System.String args) [0x00000] in <filename unknown>:0 
I/Unity   (18149):   at Facebook.Unity.

但是在 Assets/Plugins/Android/AndroidManifest.xml 文件中,我有以下定义:

<activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerActivity" android:screenOrientation="sensorLandscape">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
        <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
    </intent-filter>
    <meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
</activity>
<activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:name="com.facebook.unity.FBUnityLoginActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:name="com.facebook.unity.FBUnityDialogsActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity android:configChanges="keyboardHidden|orientation" android:name="com.facebook.LoginActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity android:exported="true" android:name="com.facebook.unity.FBUnityAppLinkActivity"/>
<activity android:exported="true" android:name="com.facebook.unity.FBUnityDeepLinkingActivity"/>
<activity android:name="com.facebook.unity.FBUnityGameRequestActivity"/>
<activity android:name="com.facebook.unity.FBUnityCreateGameGroupActivity"/>
<activity android:name="com.facebook.unity.FBUnityJoinGameGroupActivity"/>
<activity android:name="com.facebook.unity.AppInviteDialogActivity"/>
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="fb1234removed"/>
<provider android:authorities="com.facebook.app.FacebookContentProvider1234removed" android:exported="true" android:name="com.facebook.FacebookContentProvider"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize" android:label="@string/app_name" android:name="com.facebook.FacebookActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity android:configChanges="keyboard|keyboardHidden|layoutDirection|orientation|screenLayout|screenSize|uiMode" android:name="com.prime31.GoogleIABProxyActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

这对我来说毫无意义。这曾经有效,但我不知道为什么它不再有效了。

【问题讨论】:

如果您删除了 IAB 插件,它会生成吗?您包含的清单看起来不错(尽管它不完整 - 也许它的其他部分有问题)?我之前已经成功地同时使用了这两个插件的早期版本。 【参考方案1】:

只是想回答我已经设法修复它。这是 Unity 的其中一件事情,您只需卸载所有插件并重新安装它们。找到与这两个插件相关的每个文件,删除它们,然后一次安装一个。

此外,通过 2.9 中的新 Smoola 集成,如果您不使用 Smoola,插件仍然会加载并检查互联网访问。这需要ACCESS_NETWORK_STATE 清单不包含的ACCESS_NETWORK_STATE 权限。

【讨论】:

以上是关于将 Facebook 插件与 Unity 一起使用时出现 ActivityNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK Unity 插件 - 移动应用广告跟踪

Unity:无法将类转换为dex格式插件:Unity IAP 1.16 Facebook SDK 7.13.0 [复制]

与 MethodChannel 一起使用的自定义 Facebook 登录

与 android manifest 上的活动标签冲突:Unity3d 中的 Facebook 和 Google Play 游戏

Unity 4.2.1 和 Facebook 插件 4.2.4 的登录问题

为基于 Web 的 phonegap 应用添加 facebook 评论框插件