代码之家  ›  专栏  ›  技术社区  ›  zeus

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

  •  1
  • zeus  · 技术社区  · 6 年前

    \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_崩溃(SIGABRT)异常代码: EXC_尸体_通知终止说明:DYLD,未加载库: @rpath/WebRTC.framework/WebRTC |引用自: /var/containers/Bundle/Application/A2C3A7DA-D35E-4649-AEA0-9AB518E48971/ALLiveVideoChatClient.app/ALLiveVideoChatClient 找不到图像

    所以我检查@rpath doing的值

    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/ 找不到图像

    我做错了什么?手动向iOS应用程序添加(因此不使用xcode)动态库的步骤是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   mesibo    6 年前

    WebRTC.framework是一个嵌入式框架,您需要将其嵌入应用程序中。如果没有,您将得到上述错误。

    若要嵌入,请转到“生成设置”。您将找到一个关于“嵌入框架”的部分。点击+图标。它将显示应用程序中包含的框架列表,选择WebRTC框架。这里有更多细节 Apple TechNote - Embedding Frameworks In An App

    另一方面,我发现谷歌决定从WebRTC中删除静态库目标是荒谬的。我们修改了build.gn(s)以生成静态库并使用它。如果你需要,我可以和你分享。