Добавление swift framework извлечено из IPA

Я пытаюсь запустить приложение IOS, созданное другим разработчиком, использующим cocoapod из частного репозитория, к которому у меня нет доступа. Мне удалось извлечь пакет.framework из IPA и добавить его в проект xcode, но он не распознается (я получаю "Нет такого модуля").

Можно ли сделать то, что я пытаюсь достичь?

Пока что я попробовал:

  • построить его в релизе, как я предполагаю, что фреймворк в IPA находится в выпуске
  • добавить.framework как встроенный двоичный файл
  • добавьте.framework в качестве связанных рамок и библиотек
  • скопируйте.framework в ~/System/Library/Framework
  • обновить путь поиска фреймворка, включая $(SRCROOT), рекурсивные, жестко заданные пути и т. д.
  • измените местоположение.framework на "Относительно продуктов сборки"

Спасибо!

1 ответ

Было не так легко получить фреймворки, используемые в проекте, из файла ipa.

При первом запуске приложения, а также при архивировании приложения все связанные файлы.frameworks преобразуются в.dylib, который является динамической библиотекой.

Что такое статическая библиотека - это блок кода, связанный во время компиляции, который не изменяется.

Что такое динамическая библиотека - блок кода и / или ресурсов, связанных во время выполнения, которые могут измениться.

Каркас - Каркас - это иерархический каталог, который заключает в один пакет динамическую библиотеку, файлы заголовков и ресурсы, такие как раскадровки, файлы изображений и локализованные строки. Приложения, использующие фреймворки, должны встраивать фреймворк в пакет приложения.

Динамическая библиотека

Динамический файл lib находится в папке фреймворка.

Ниже приведено описание из документации Apple

Динамические библиотеки за пределами пакета инфраструктуры, которые обычно имеют расширение файла.dylib, не поддерживаются в iOS, watchOS или tvOS, за исключением системных библиотек Swift, предоставляемых Xcode.

Ссылка: Документация

Таким образом, вы не можете просто скопировать.dylib в пакет xcode и просто использовать его. Здесь тоже есть какая-то безопасность.

Еще один подход

Можно декомпилировать исходный код из файлов.ipa. Вы получите представление по ссылкам ниже.

ТАК Вопрос по поводу декомпиляции файла ipa

Возможность декомпиляции

Кажется, что когда приложение архивируется для распространения, Headers а также Modules папки удаляются из пакета.framework.

Header папка содержит заголовки.h для Objective-C и Modules Папка содержит эквивалентные файлы.swiftmodule для Swift.

Без этих файлов у вас нет общедоступного API-интерфейса, который можно использовать для бинарного фреймворка, поэтому, к сожалению, это делает фреймворки непригодными без реинжиниринга.

Другие вопросы по тегам