Cocoapods импортирует структуру в исходный код - программирование
Подтвердить что ты не робот

Cocoapods импортирует структуру в исходный код

В моем cocoapod для iOS у меня есть по существу предметы:

  • Классы с открытым исходным кодом (файлы .m и .h)
  • MyFramework.framework(каталог .framework, файлы заголовков и .bundle для ресурсов)

Один из классов с открытым исходным кодом вызывает import <MyFramework.MyFramework.h>, поэтому он может использовать компоненты MyFramework в своей реализации. Но из-за этого у меня возникают проблемы с получением podspec для прохождения теста spec lint (pod spec lint MyCocoapod.podspec). Когда я запускаю проверку спецификации, она говорит:

ERROR | [iOS] [xcodebuild] .../MyFile.h:54:9: fatal error: 'MyFramework/MyFramework.h' file not found

Во время исследования я заметил, что podspec передает проверку spec lint, если я удалю этот класс с открытым исходным кодом в разделе podspec source_files, s.source_files = 'MyFiles.{h,m}'. Любая идея, почему мой класс не может импортировать мою пользовательскую структуру во время проверки спецификации?

Соответствующий код в podspec выглядит следующим образом:

s.preserve_paths      = 'myframework/MyFramework.framework'
s.frameworks          = 'Foundation', 'MyFramework'
s.xcconfig            = { 'FRAMEWORK_SEARCH_PATHS' => '$(SRCROOT)/myframework/' }
s.public_header_files = 'MyFramework.framework/Headers/*.h', 'SourceCode/*.h'
s.source_files        = 'SourceCode/*.{h,m}'  # Crashes here - Source_file imports MyFramework.h. If I take this out, it passes spec lint validation
4b9b3361

Ответ 1

EDIT Теперь этот процесс полностью обрабатывается опцией vendored_frameworks. Это управляет сохранением путей, путей поиска каркаса и привязки к проекту.

Ответ 2

Чтобы включить фрейм, вы можете использовать:

s.vendored_frameworks = 'path/to/SomeFramework.framework'

Чтобы включить файлы пакетов, выполните следующие действия:

s.resources ='path/to/SomeBundle.bundle'