Я создал библиотеку с открытым исходным кодом (https://github.com/linkedin/LayoutTest-iOS), который имеет внутри два Cocoapods — LayoutTest и LayoutTestBase. LayoutTest зависит от LayoutTestBase, и один из файлов .h должен что-то импортировать из LayoutTestBase. В настоящее время я делаю это, используя:
@import LayoutTestBase;
Однако это работает только в том случае, если приложение использует use_frameworks!
в своем подфайле. Некоторые приложения не хотят использовать эту опцию Cocopods. Без use_frameworks!
это работает, если я использую:
#import <LayoutTestBase/LYTLayoutPropertyTester.h> // OR
#import "LYTLayoutPropertyTester.h"
Однако при использовании этого с use_frameworks!
выдается ошибка: «Включить немодульный заголовок внутри модуля фреймворка« LayoutTest.LYTLayoutTestCase »»
Очевидно, должен быть способ сделать этот импорт независимо от того, использует пользователь use_frameworks!
или нет в своем подфайле. Как я могу заставить эту библиотеку скомпилироваться и работать правильно?
Исследования
Я просмотрел stackoverflow, и это, кажется, самый похожий вопрос: Структура CocoaPods с зависимостями - включение немодульного заголовка внутри модуля фреймворка. В нем упоминается, что это проблема с библиотекой Parse, но не упоминается, как ее нужно исправить. Поскольку я владею зависимостью, я могу это исправить. Я также пытался установить для параметра Разрешить немодульные фреймворки значение YES во всех настройках (проекты, модульные тесты, все модули и т. д.), и это, похоже, ничего не дает.
Для воспроизведения
Создайте новый проект. Добавьте этот подфайл:
target :'{MyAppTarget}Tests' do
pod 'LayoutTest'
end
Выполнить pod install
. Попробуйте запустить модульные тесты в приложении. Это не удастся. Теперь попробуйте изменить LYTLayoutTestCase.h, чтобы использовать #import <LayoutTestBase/LYTLayoutPropertyTester.h>
. Теперь это работает. Однако, если вы добавите use_frameworks!
в подфайл, он больше не будет работать.