#ios #code-signing #dylib
#iOS #подписание кода #dylib
Вопрос:
Мы интегрируем наши языковые инструменты в мобильные платформы.
Таким образом, существуют библиотеки, зависящие от языка, которые загружаются по запросу пользователя — в настоящее время английский, французский, испанский или греческий.
Эти библиотеки слишком велики, чтобы быть связанными статически.
В настоящее время мы можем загружать эти библиотеки с помощью вызовов dlopen и dlsym в linux.
Я видел, что мы можем использовать эти вызовы, начиная с iOS v8.
Как сообщила служба поддержки разработчиков Apple, «… нет общего запрета на использование dlopen и друзей».
После компиляции наших библиотек (с использованием CMake и соответствующего набора инструментов iOS) они были подписаны тем же сертификатом и идентификатором, что и приложение, с использованием
codesign --deep --force --sign "78037F819B5AA1522177B06DA8E7C5343DDBC0CF" --identifier=fr.teamname.libtext_fr ./libtext_fr.dylib
Однако, когда приложение (запущенное на iPad с iOS v14) пытается загрузить файл, возникает ошибка, и мы получаем следующую причину :
code signature invalid (errno=1) sliceOffset=0x00000000, codeBlobOffset=0x0205D0F0, codeBlobSize=0x000453E0
Обратите внимание, что в настоящее время мы используем бесплатный Apple Id и еще не присоединились к программе разработчика.
Я провел много поисков, но пока не нашел того, чего не хватает.
В каком правильном направлении двигаться сейчас?
Ответ №1:
После долгих исследований я открыл запрос на форуме разработчиков Apple.
Ответ на этот вопрос можно найти здесь : https://developer.apple.com/forums/thread/670761