我正在开发一个Unity项目,我正在使用适用于Unity的Google VR SDK和来自Firebase SDK for Unity的FirebaseMessaging.unitypackage
。
当我尝试为iOS构建时,Google SDK的这种组合会引发duplicate symbols
错误。
要求:
脚步:
GoogleVRForUnity.unitypackage
并导入除Demos文件夹以外的所有内容。FirebaseMessaging.unitypackage
并导入所有内容。在Xcode上构建的项目将以以下错误结束:
架构arm64的25个重复符号
架构根据连接的iOS设备而变化,但错误是相同的。
这是GVR sdk中的一个错误。问题是GVR已经发布,包括传递依赖,其中一些谷歌(或其他地方)的其他SDK也依赖于它们,例如firebase。由于Unity没有任何软件包管理,我们已经推出了自己的软件包:
https://github.com/googlesamples/unity-jar-resolver
但是,GVR sdk尚未使用它来包含其传递依赖性,因此我们得到了冲突。
我正在开发一个修复程序,使上面的IOSResolver,在GVR中检测到它并剥离不应包含的对象。
与此同时,您可以使用以下方法解决冗余对象:
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
选项1:转到构建设置并搜索“无公共块”并将其设置为否
选项2:
选项3: