我有一个iOS应用程序(不是用xcode制作的(,我需要在其中包含一个动态库。我的电脑上有这个图书馆:
webrtc
WebRTC.framework
Headers
*.h
Modules
module.modulemap
WebRTC
Info.plist
我在我的应用程序中部署这些文件,如下所示:
ALLiveVideoChatClient.app
Frameworks
WebRTC.framework
Headers
*.h
Modules
module.modulemap
WebRTC
Info.plist
当我做时
otool -L ALLiveVideoChatClient.app/ALLiveVideoChatClient
是退回我:
@rpath/WebRTC.framework/WebRTC (compatibility version 0.0.0, current version 0.0.0)
当我尝试运行我的应用程序时,我收到错误:
异常类型:EXC_CRASH(SIGABRT(异常代码:0x000000000000000,0x0000000000000000异常注意:EXC_CORPSE_NOTIFY终止说明:DYLD,未加载库:@rpath/WebRTC.framework/WebRTC |引用自:/var/containers/Bundle/A2C3A7DA-D35E-4649-AEA0-9AB518E48971/ALLiveVideoChatClient.app/ALLiveVideoChatClient|原因:未找到图像由线程触发:0
所以我在进行时检查@rpath的值
otool -l ALLiveVideoChatClient.app/ALLiveVideoChatClient
它还给我
cmd LC_RPATH
cmdsize 32
path $ORIGIN (offset 12)
我不确定$ORIGIN
是什么意思,但它指向ALLiveVideoChatClient.app
,所以我更新@rpath以指向$ORIGIN/Frameworks
,并将-rpath $ORIGIN/Frameworks
添加到链接器(http://www.manpagez.com/man/1/ld/)但我仍然收到错误未找到图像
我做错了什么?在没有xcode的情况下,手动将动态库添加到iOS应用程序的步骤是什么?
WebRTC.framework是一个嵌入式框架,您需要将其嵌入到您的应用程序中。否则,您将得到上述错误。
若要嵌入,请转到生成设置。你会发现一节关于"嵌入框架"。单击+图标。它将向您显示应用程序中包含的框架列表,选择WebRTC框架。更多详情点击此处Apple TechNote-在应用程序中嵌入框架
顺便说一句,我发现谷歌决定从WebRTC中删除静态库目标是荒谬的。我们已经修改了build.gn(s(以生成静态库,并使用它。如果你需要,我可以分享。
由于WebRTC是dynamic framework
,您可以使用Xcode 嵌入它