Как вручную включить динамическую библиотеку в приложение для iOS - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть приложение для 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) Коды исключений: 0x0000000000000000, 0x0000000000000000 Примечание об исключении: EXC_CORPSE_NOTIFY Описание завершения: DYLD, библиотека не загружена: @ rpath / WebRTC.framework / WebRTC |Ссылка на: /var/containers/Bundle/Application/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/), но япо-прежнему получаю сообщение об ошибке изображение не найдено

Что я сделал не так? Каковы действия по добавлению (без кода) динамической библиотеки вручную в приложение iOS?

1 Ответ

0 голосов
/ 12 декабря 2018

WebRTC.framework - это встроенный фреймворк, и вам нужно встроить его в свое приложение.Если нет, вы получите вышеупомянутую ошибку.

Чтобы встроить, перейдите в настройки сборки.Вы найдете раздел «Вставить рамки».Нажмите на значок +.Он покажет вам список фреймворков, которые вы включили в ваше приложение, выберите фреймворк WebRTC.Подробнее здесь Apple TechNote - Встраивание фреймворков в приложение

Кстати, я нахожу решение Google удалить статическую библиотечную цель из WebRTC абсурдным.Мы изменили build.gn (s) для генерации статической библиотеки и ее использования.Если вам нужно, я могу поделиться этим.

...