У меня есть iOS Swift Framework , который использует CardIO . Я не хочу показывать эти объективные файлы - c (в максимальной степени) за пределами SDK. Вот что я сделал:
Добавьте эти файлы в дереве "Project" для заголовков на этапах сборки.
Создание модуля Файл .modulemap со следующим содержимым:
module PrivateModule {
header "CardIO/CardIO.h"
export *
}
Добавлено $ (SR CROOT) / Пример в настройке сборки путей импорта, чтобы компилятор мог искать этот модуль и файлы CardIO в файле module.modulemap
В результате был получен файл .framework, который не упоминается любого объективного файла - c. Я знаю, что разработчик все еще может импортировать «PrivateModule» и затем использовать файлы CardIO / Objective- C, но главная цель - не допустить, чтобы эти заголовочные файлы появлялись в комплекте .framework.
До этого момента все работает, но как только я отправляю этот файл .framework на другой компьютер, он выходит из строя с ошибкой «Нет такого модуля« Private Module »». Даже если я использую это .framework в приложении, а затем фиксирую мой код в рабочем состоянии, как только кто-то берет мой код, он ломается с той же ошибкой.
- Я уже ушел через https://github.com/CocoaPods/CocoaPods/issues/7619 но не повезло.
- Я пробовал это: https://github.com/danieleggert/mixed-swift-objc-framework, но поскольку файлы появляются в «Частных заголовках», это не то, что мне нужно.
- Я тоже это проверил: http://blog.girappe.com/?good-bad-ugly но слишком много работы для создания протоколов для всех файлов CardIO Objective- C.
В двух словах, мы используем модули для объединения различных зависимостей или требований под одним заголовком. Я просто хотел, чтобы все, что находится под этим единственным заголовком, было частным для моей структуры и в некоторой степени невидимо для внешнего мира. Что я делаю не так?