Правильный способ встраивания dylib в приложение iOS - PullRequest
1 голос
/ 29 апреля 2020

У меня есть проект, который состоит из трех элементов: C исходный код, который скомпилирован в среду .dylib Swift, используемую для предоставления удобного в использовании swift API для приложения .dylib iOS, использующего как .dylib, так и swift proxy

Я добавил как swift proxy, так и .dylib в качестве зависимости "Framework and library" для проекта приложения iOS. На моем iPhone все работает как положено. Однако, когда я пытаюсь отправить свое приложение в Apple Store Connect, я получаю следующую ошибку:

ITMS-90429: Invalid Swift Support - The files libswiftDarwin.dylib, libswiftDispatch.dylib, libswiftCoreGraphics.dylib, libswiftCoreFoundation.dylib, libswiftCore.dylib, libswiftFoundation.dylib, libswiftObjectiveC.dylib aren’t at the expected location /Payload/Runner.app/Frameworks. Move the file to the expected location, rebuild your app using the current public (GM) version of Xcode, and resubmit it.

Я полагал, что это может быть вызвано тем, что файл .dylib был встроен непосредственно в приложение iOS, поэтому я попытался встроить .dylib в быстрые рамки. Затем я создал приложение iOS, в которое встроен только быстрый фреймворк, состоящий из файла .dylib. Однако я получаю следующую ошибку в этой конфигурации:

dyld: Library not loaded: @rpath/libX.dylib
  Referenced from: /private/var/containers/Bundle/Application/.../swiftProxy.framework/swiftProxy
  Reason: no suitable image found.  Did find:
  /private/var/containers/Bundle/Application/.../swiftProxy.framework/Frameworks/libX.dylib: code signature in (/private/var/containers/Bundle/Application/.../swiftProxy.framework/Frameworks/libX.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.

Это не имеет смысла для меня, но я подумал, что это не правильный путь.

Так что вопрос: как правильно ли я встраиваю dylib, чтобы его можно было установить в Apple Store Connect, а затем в Testflight?

Я знаю, что этот вопрос задавался хотя бы один раз, но достойного ответа нет. Вот, например: Как правильно встраивать сторонние файлы .dylib в iOS проект приложения для выпуска App Store?

Спасибо

1 Ответ

0 голосов
/ 08 мая 2020

эта проблема действительно плоха для разработчика, я столкнулся с этой проблемой пару месяцев go, после этого я написал скрипт, который отвечает за исправление всех этих ошибок. Позвольте мне сказать, почему эта проблема происходит. Ошибка недопустимой папки поддержки swift возникает только в том случае, если ваши файлы .dylib не имеют кодовой подписи и должным образом не размещены в папке Framework. Я бы посоветовал вам мое решение, пусть применят это решение, если оно не работает, вы можете обсудить со мной на mshauket. developer@gmail.com Я помогу передать вашу сборку от Apple. Неверная поддержка Swift - папка SwiftSupport пуста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...