我正在开发一个 Unity项目,我正在使用 Google VR SDK for Unity 和 Firebase SDK中的FirebaseMessaging.unitypackage
为Unity 。
当我尝试为iOS构建时,Google SDK的这种组合会引发duplicate symbols
错误。
要求:
步骤:
GoogleVRForUnity.unitypackage
并导入除演示文件夹以外的所有内容。FirebaseMessaging.unitypackage
并导入所有内容。基于Xcode的项目构建将以以下错误结束:
架构arm64的25个重复符号
架构根据连接的iOS设备而变化,但错误是相同的。
答案 0 :(得分:1)
这是GVR sdk中的一个错误。问题是GVR已经发布,包括传递依赖,其中一些谷歌(或其他地方)的其他SDK也依赖于它们,例如firebase。由于Unity没有针对此进行任何软件包管理,我们已经推出了自己的软件包:
https://github.com/googlesamples/unity-jar-resolver
然而,GVR sdk尚未使用它来包含其传递依赖性,因此我们得到了冲突。
我正在修复上面的IOSResolver,在GVR中检测到这一点并剥离不应包含的对象。
与此同时,您可以使用自行删除冗余对象的方法:
在文件夹中创建一个包含以下内容的shell脚本:
set -ex
lipo libgvrunity.a -thin armv7 -output libgvrunity-armv7.a
lipo libgvrunity.a -thin arm64 -output libgvrunity-arm64.a
ar -t libgvrunity-armv7.a | grep 'GTMLogger\|GTMSession' | xargs ar -dv libgvrunity-armv7.a
ar -t libgvrunity-arm64.a | grep 'GTMLogger\|GTMSession' | xargs ar -dv libgvrunity-arm64.a
lipo libgvrunity.a -replace armv7 libgvrunity-armv7.a -replace arm64 libgvrunity-arm64.a -output libgvrunity-fat.a
rm libgvrunity-armv7.a libgvrunity-arm64.a
mkdir -p backup
mv libgvrunity.a backup
mv libgvrunity-fat.a libgvrunity.a
再次从Unity构建并运行。
答案 1 :(得分:0)
选项1:转到构建设置并搜索"无通用块"并设置为否
选项2:
选项3: