React Native与Google VR SDK不兼容。

4
我在尝试将Google VR SDK(“GVRSDK”)作为Podfile依赖项添加时,在React Native中遇到了问题,并且很容易复制。
步骤: 1.创建一个新的空白React Native项目。使用react-native run-ios运行以确保它正常工作。 2.cd ios 3.pod init 4.将pod 'GVRSDK'添加到Podfile,执行pod update 5.cd .. 6.react-native run-ios 该项目崩溃并显示以下错误:
duplicate symbol __ZN3fLI9FLAGS_novE in:
/foo/ios/Pods/GVRSDK/Libraries/libGVRSDK.a(vlog_is_on.o)
/foo/ios/build/Build/Products/Debug-iphonesimulator/libReact.a(vlog_is_on.o)
duplicate symbol __ZN3fLI7FLAGS_vE in:
/foo/ios/Pods/GVRSDK/Libraries/libGVRSDK.a(vlog_is_on.o)
/foo/ios/build/Build/Products/Debug-iphonesimulator/libReact.a(vlog_is_on.o)
duplicate symbol __ZN6google13RemoveLogSinkEPNS_7LogSinkE in:
/foo/ios/build/Build/Products/Debug-iphonesimulator/libReact.a(logging.o)
/foo/ios/Pods/GVRSDK/Libraries/libGVRSDK.a(logging.o)
duplicate symbol __ZN6google10AddLogSinkEPNS_7LogSinkE in:
/foo/ios/build/Build/Products/Debug-iphonesimulator/libReact.a(logging.o)
    /foo/ios/Pods/GVRSDK/Libraries/libGVRSDK.a(logging.o)
ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)



** BUILD FAILED **


The following build commands failed:

Ld build/Build/Products/Debug-iphonesimulator/foo.app/foo normal x86_64
(1 failure)

降级到React Native 0.44.1(从0.45.1)似乎可以解决这个问题。 - John D.
我也一样。降级(从0.45.1到0.44.3)解决了问题。 - YossiF
1个回答

2
你可以通过删除libGVRSDK.a文件中的重复符号来解决此问题。 使用lipoar命令将库文件拆分成多个架构并重新归档到另一个文件中。 下面是制作的shell脚本: pod_post_install.sh
#!/bin/bash

cd ./Pods/GVRSDK/Libraries/
lipo -info libGVRSDK.a

# Divide to each platform
lipo -thin armv7 libGVRSDK.a -output libGVRSDK_armv7
lipo -thin i386 libGVRSDK.a -output libGVRSDK_i386
lipo -thin x86_64 libGVRSDK.a -output libGVRSDK_x86_64
lipo -thin arm64 libGVRSDK.a -output libGVRSDK_arm64

# Delete duplicate file
chmod 777 libGVRSDK_armv7
chmod 777 libGVRSDK_i386
chmod 777 libGVRSDK_x86_64
chmod 777 libGVRSDK_arm64

ar -dv libGVRSDK_armv7 vlog_is_on.o
ar -dv libGVRSDK_i386 vlog_is_on.o
ar -dv libGVRSDK_x86_64 vlog_is_on.o
ar -dv libGVRSDK_arm64 vlog_is_on.o

# rm libGVRSDK.a
lipo -create libGVRSDK_armv7 libGVRSDK_i386 libGVRSDK_x86_64 libGVRSDK_arm64 -output libGVRSDK.a

# Delete media
rm libGVRSDK_armv7
rm libGVRSDK_i386
rm libGVRSDK_x86_64
rm libGVRSDK_arm64

cd ../../../

当每次运行pod install时,调用此脚本可能更加有用。
Podfile
post_install do |installer|
    system(". ./pod_post_install.sh")
end

我相信它有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接