如何在iOS应用程序中手动包含动态库



我有一个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 嵌入它

相关内容

  • 没有找到相关文章

最新更新