构建 Android 项目时在 Unity3D 中合并清单文件问题

Posted

技术标签:

【中文标题】构建 Android 项目时在 Unity3D 中合并清单文件问题【英文标题】:Merging Manifest files issue in Unity3D when building Android Project 【发布时间】:2016-10-18 18:54:13 【问题描述】:

TL;DR

大家好,我正在开发适用于 android 的 Unity3D 应用程序。但是,当我想构建 Android 项目时。错误显示清单文件冲突。我搜索了一段时间,这些冲突大多是版本冲突。我想我已经通过手动更改所有清单文件中的 minSDKVersion 和 targetSDKVersion 来解决它。但是,我无法解决这个问题(总共 3 个错误),

(1) 错误:[Temp/StagingArea/AndroidManifest-main.xml:36, /Temp/StagingArea/android-libraries/facebook-android-sdk-4.14.0/AndroidManifest.xml:6] 试图合并不兼容/manifest/application/activity[@name=com.facebook.FacebookActivity] 元素:

UnityEditor.HostView:OnGUI()

(2) CommandInvokationFailure:无法合并 android 清单。有关更多详细信息,请参阅控制台。 /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/xxx/Library/Android/sdk/tools" -Dfile.encoding =UTF8 -jar "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -

标准错误[ 错误:[Temp/StagingArea/AndroidManifest-main.xml:36, /Temp/StagingArea/android-libraries/facebook-android-sdk-4.14.0/AndroidManifest.xml:6] 试图合并不兼容的 /manifest/application/activity [@name=com.facebook.FacebookActivity] 元素:

<activity
--    @android:name="com.facebook.FacebookActivity">
--</activity>
--(end reached)
  <activity
++         @android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
++    @android:name="com.facebook.FacebookActivity"
++    @android:theme="@android:style/Theme.Translucent.NoTitleBar">
]

标准输出[ [Temp/StagingArea/AndroidManifest-main.xml:8, /Temp/StagingArea/android-libraries/NatCam/AndroidManifest.xml:18] 跳过相同的 /manifest/application/meta-data[@name=com.google.android. gms.version] 元素。 ] UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.HostView:OnGUI()

(3) 构建播放器时出错:CommandInvokationFailure:无法合并 android 清单。有关更多详细信息,请参阅控制台。 /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/xxx/Library/Android/sdk/tools" -Dfile.encoding =UTF8 -jar "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -

标准错误[ 错误:[Temp/StagingArea/AndroidManifest-main.xml:36, /Temp/StagingArea/android-libraries/facebook-android-sdk-4.14.0/AndroidManifest.xml:6] 试图合并不兼容的 /manifest/application/activity [@name=com.facebook.FacebookActivity] 元素:

  <activity
--    @android:name="com.facebook.FacebookActivity">
--</activity>
--(end reached)
  <activity
++    @android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
++    @android:name="com.facebook.FacebookActivity"
++    @android:theme="@android:style/Theme.Translucent.NoTitleBar">
]

标准输出[ [Temp/StagingArea/AndroidManifest-main.xml:8, /Temp/StagingArea/android-libraries/NatCam/AndroidManifest.xml:18] 跳过相同的 /manifest/application/meta-data[@name=com.google.android. gms.version] 元素。 ]

(抱歉,格式错误,但必须将“”标记为代码而不是引号)这似乎是活动问题,我发现了this。由于我之前从未接触过 Android 项目,因此我不知道这个“活动”是关于什么的。谁能指出这里有什么问题?

【问题讨论】:

【参考方案1】:

无法合并清单,因为您有重复的 Facebook 活动声明。

您很可能不小心在项目中拥有多个 Facebook AndroidManifest 副本。

您不需要自己编辑清单,它们应该开箱即用。

只需浏览您的项目并删除您找到的所有重复项。

最坏的情况,从您的项目中删除所有 Facebook 并重新导入插件。

对于一些背景信息,可以将活动想象成统一的场景。在清单中,您必须声明所有活动。合并时,如果找到了 2 个同名的活动,它不知道该做什么并抛出该错误。

【讨论】:

好的,我可以看看并尝试一下,提前非常感谢! @turnipinindia 确实,我同时导入了 FB SDK 和一个包含 FB SDK 的插件。我相信这是问题所在。那么从技术上讲,我可以简单地删除这两个清单文件之一中的一个 FB 声明 吗? 您好,谢谢!我手动删除了一个“Facebook 活动”,它成功了!

以上是关于构建 Android 项目时在 Unity3D 中合并清单文件问题的主要内容,如果未能解决你的问题,请参考以下文章

Unity 在为 Android 构建时在运行时抛出 IL2CPP 构建错误? 2018.4.5f1

Pjsip 在多线程中调用它的函数时在 android 上崩溃

Unity3D - 无法构建 64 位 Android

我在构建应用程序时在 android studio 中遇到了 Android 资源链接失败错误。我不知道如何解决这个问题。我是 Android Studio 的新手 [关闭]

在 XCode 5 中构建时在 XCode 项目中运行 bash 文件

如何在构建时在 Blazor 项目中运行 T4 模板