我正在使用iOS(10)应用,其中包含WikiTude库中的AR组件和使用GVDSDK (Google VR SDK)的Google 360视频。这两个库似乎彼此不兼容。如果我在我的项目中包含Wikitude框架(没有实际使用它)并为设备构建,一切都有效,除非它尝试渲染视频的第一帧时出现致命错误(见下文)。这可以通过下载GVRSDK视频示例项目,添加Wikitude框架然后运行应用程序来复制。
我得到冲突的唯一线索是在为模拟器构建时,我得到重复的符号警告(见下文)。重复的符号警告,引用了GoogleVR Library和Wikitdude
示例(虽然有很多这些(见下文)
/Users/mortocks/Repos/BH360/Pods/GVRSDK/Libraries/libCardboardSDK_x86_64.a(json_value.o)
/Users/mortocks/Repos/BH360/WikitudeSDK.framework/WikitudeSDK(libCommonLibrary.a-x86_64-master.o)
我已经使用lipo和ar命令行工具从库中读取how to remove duplicate symbols,我能够做到这一点,但我如何诊断哪些符号是问题。例如,我尝试从Wikitude中删除libCommonLibrary.a-x86_64-master.o(希望是一个“系统通用”库),但这会导致许多依赖性问题。另外,使用上面的示例我可以在libCardboardSDK_armv7中找到json_value.o但在Wikitude SDK中找不到,所以我不确定要删除什么。
任何关于如何解决或诊断问题的帮助/教育都将非常感激。
呈现框架时的致命错误
(lldb) bt
* thread #25: tid = 0x3fe32, 0x000000018bc96f40 libsystem_platform.dylib`_platform_memmove + 320, name = 'com.google.cardboard.RenderThread', stop reason = EXC_BAD_ACCESS (code=1, address=0x1471cabb0)
* frame #0: 0x000000018bc96f40 libsystem_platform.dylib`_platform_memmove + 320
frame #1: 0x0000000100368858 BH360`mem_read + 100
frame #2: 0x000000010072c224 BH360`unz64local_getByte + 52
frame #3: 0x000000010072bfc4 BH360`unz64local_getLong + 48
frame #4: 0x000000010072b074 BH360`unz64local_GetCurrentFileInfoInternal + 128
frame #5: 0x000000010072b65c BH360`unzGoToFirstFile + 72
frame #6: 0x0000000100368e70 BH360`unzAttach + 448
frame #7: 0x0000000100360a4c BH360`ion::base::ZipAssetManager::RegisterAssetData(void const*, unsigned long) + 68
frame #8: 0x000000010028ad5c BH360`ion::base::OnceFlag::CallChecked(std::__1::function<bool ()> const&) + 16
frame #9: 0x000000010028f8cc BH360`void std::__1::__invoke_void_return_wrapper<void>::__call<std::__1::__bind<void (&)(std::__1::function<bool ()> const&), bool (*)()>&>(std::__1::__bind<void (&)(std::__1::function<bool ()> const&), bool (*)()>&&&) + 80
frame #10: 0x0000000100292c68 BH360`vr::VideoTextureRenderable::SetupShaderProgram(ion::base::SharedPtr<ion::gfxutils::ShaderManager> const&, ion::base::SharedPtr<ion::gfx::ShaderInputRegistry> const&) + 284
frame #11: 0x00000001002927a4 BH360`vr::VideoTextureRenderable::VideoTextureRenderable(ion::base::SharedPtr<ion::gfxutils::ShaderManager> const&, ion::base::SharedPtr<ion::gfx::Renderer> const&, vr::VideoTextureRenderable::TextureType, std::__1::vector<int, std::__1::allocator<int> > const&, ion::math::Matrix<3, float> const&, ion::base::SharedPtr<ion::gfx::Shape>, bool) + 1136
frame #12: 0x00000001002920a0 BH360`std::__1::shared_ptr<vr::VideoTextureRenderable> std::__1::shared_ptr<vr::VideoTextureRenderable>::make_shared<ion::base::SharedPtr<ion::gfxutils::ShaderManager>&, ion::base::SharedPtr<ion::gfx::Renderer>&, vr::VideoTextureRenderable::TextureType, std::__1::vector<int, std::__1::allocator<int> >&, ion::math::Matrix<3, float>&, ion::base::SharedPtr<ion::gfx::Shape>&, bool const&>(ion::base::SharedPtr<ion::gfxutils::ShaderManager>&&&, ion::base::SharedPtr<ion::gfx::Renderer>&&&, vr::VideoTextureRenderable::TextureType&&, std::__1::vector<int, std::__1::allocator<int> >&&&, ion::math::Matrix<3, float>&&&, ion::base::SharedPtr<ion::gfx::Shape>&&&, bool const&&&) + 176
frame #13: 0x0000000100291ee8 BH360`vr::VideoRenderableBuilder::Build() + 188
frame #14: 0x0000000100291734 BH360`vr::PanoVideoRenderer::SetVideoTexture(std::__1::vector<int, std::__1::allocator<int> > const&, ion::math::Matrix<3, float> const&) + 252
frame #15: 0x00000001001a1270 BH360`-[GVRVideoView drawAtTime:] + 620
frame #16: 0x00000001001a3f5c BH360`-[GVRWidgetView render:] + 596
frame #17: 0x000000010019bc70 BH360`-[GVRWeakRenderTarget render:] + 76
frame #18: 0x000000010019cd28 BH360`-[GVRRenderLoop updateWithDisplayLink:] + 236
frame #19: 0x00000001022cbb1c GPUToolsCore`-[DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 176
frame #20: 0x000000018fe0f640 QuartzCore`CA::Display::DisplayLinkItem::dispatch(unsigned long long) + 44
frame #21: 0x000000018fe0f4ec QuartzCore`CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 444
frame #22: 0x000000018ce78570 IOKit`IODispatchCalloutFromCFMessage + 372
frame #23: 0x000000018cba256c CoreFoundation`__CFMachPortPerform + 180
frame #24: 0x000000018cbba934 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
frame #25: 0x000000018cbba0e8 CoreFoundation`__CFRunLoopDoSource1 + 436
frame #26: 0x000000018cbb7bcc CoreFoundation`__CFRunLoopRun + 1840
frame #27: 0x000000018cae6048 CoreFoundation`CFRunLoopRunSpecific + 444
frame #28: 0x000000018cb338d4 CoreFoundation`CFRunLoopRun + 112
frame #29: 0x000000018d6f250c Foundation`__NSThread__start__ + 1024
frame #30: 0x000000018bc9f860 libsystem_pthread.dylib`_pthread_body + 240
frame #31: 0x000000018bc9f770 libsystem_pthread.dylib`_pthread_start + 284
frame #32: 0x000000018bc9cdbc libsystem_pthread.dylib`thread_start + 4
(lldb)