Unity集成Facebook SDK13.2构建安卓包zlib1.dll重复报错咨询
在Unity中接入Facebook SDK 13.2版本构建Android平台安装包时,会触发如下构建异常:
Exception: Cannot include plugin 'Assets/FacebookSDK/Plugins/Windows/x64/zlib1.dll' (Key: zlib1.dll;None) since plugin with the same name and architecture was already added ('Assets/FacebookSDK/Plugins/Windows/x86/zlib1.dll (Architecture: None)').
UnityEditor.Android.AndroidBuildPostprocessor.CollectPlugin (System.String path, Unity.Android.Types.AndroidArchitecture architecture, System.Collections.Generic.Dictionary`2[TKey,TValue] pluginContainer) (at :0)
UnityEditor.Android.AndroidBuildPostprocessor.PluginsDataFor (UnityEditor.Modules.BuildPostProcessArgs args) (at :0)
这个报错是Facebook SDK 13.2版本自带的默认导入配置bug导致的:SDK内Windows平台依赖的两个zlib1.dll没有正确标记所属平台和CPU架构,Unity执行安卓构建流程时,会错误把这两个Windows专用动态库纳入安卓插件的收集校验范围,两个同名文件都被标记为Architecture None,直接触发重名冲突。
按以下步骤操作即可修复:
- 修正x86版本zlib1.dll的导入配置
- 在Project面板定位到路径
Assets/FacebookSDK/Plugins/Windows/x86/zlib1.dll,单击选中 - 在右侧Inspector面板的插件导入设置中,取消勾选
Any Platform,仅保留Editor、Windows Standalone两个平台的勾选,不要勾选Android平台 - 在CPU架构下拉选项中,明确选中
x86,不要保留默认的None选项 - 点击面板下方的
Apply按钮保存配置
- 在Project面板定位到路径
- 修正x64版本zlib1.dll的导入配置
- 定位到路径
Assets/FacebookSDK/Plugins/Windows/x64/zlib1.dll,单击选中 - 同样取消
Any Platform勾选,仅保留Editor、Windows Standalone平台勾选 - CPU架构明确选中
x86_64,不要保留None - 点击
Apply保存配置
- 定位到路径
- 快速处理方案(仅适用于没有Windows平台构建需求的项目):直接在Project面板删除
Assets/FacebookSDK/Plugins/Windows整个文件夹,这部分文件仅为Windows平台编辑器、Windows独立端构建服务,删除后完全不影响Android端SDK的正常功能 - 所有配置修改完成后,选择Unity菜单栏的
Assets > Reimport All重导所有资源,清除旧的插件配置缓存,之后重新发起Android构建即可正常出包,不会再触发该冲突报错。
内容的提问来源于stack exchange,提问作者DevalMistry Sensussoft

