Unity iOS build error: duplicate symbols when using Firebase Unity SDK + Google VR SDK for Unity

纵然是瞬间 提交于 2019-12-03 10:09:13

This is a bug in the GVR sdk. The problem is that GVR was released including the transitive dependencies, some of which other SDKs at google (or elsewhere) depend on as well, such as firebase. Since Unity doesn't have any package management for this, we've rolled our own:

https://github.com/googlesamples/unity-jar-resolver

However GVR sdk isn't yet using this to include its transitive dependencies and so we get the conflicts.

I'm working on a fix that makes the IOSResolver above, detect this in GVR and strip the objects that should not be included.

In the meantime, here's a work-around you can use to strip the redundant objects yourself:

  1. Locate: libgvrunity.a in Assets/Plugins/iOS/libgvrunity.a
  2. Create a shell script in the folder with the following contents:

    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
  3. Build and run from Unity again.

Option 1 :Go to build Settings and search for "No Common Blocks" and set it no

Option 2:

  1. Go to Build Phases in Target settings.
  2. Go to “Link Binary With Libraries”.
  3. Check if any of the libraries exist twice.
  4. Build again.

Option 3:

  1. Removed -ObjC from Other linker flag.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!