2013-04-16 3 views
14

В моей cocoapod для прошивки, у меня есть по существу пунктов:Cocoapods импортирующих рамки к исходному коду

  1. с открытым исходным кодом (классы .m & .h файлами)
  2. 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 действительно проходит проверку спецификации ворса, если удалить этот класс с открытым исходным кодом в SOURCE_FILES секции podspec в, 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 

ответ

21

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

+1

Спасибо за ваш ответ. Так что, если мой кокоапод был ** просто ** рамкой, это работает. Но у pod также есть некоторые файлы source_code (.m & .h), которые также должны быть распределены. В исходном_коде (.m) моего модуля происходит '#import ', и именно там, где спецификация lint не выполняет проверку. – johngraham

+0

Добавление 'source_files' в podspec также не должно влиять на импорт вашей инфраструктуры. Какова ошибка, которую CocoaPods показывает в ворсе? (Также убедитесь, что вы используете новейшую версию 'gem update') –

+0

Хмм, ошибка выше в поле вопроса ...' ERROR | ... '. (Я просто добавил соответствующий код из моего podspec) Возможно, я не правильно импортирую фреймворк, поэтому исходные файлы также не могут импортировать фреймворк правильно. Я исследую это и вернусь к вам. – johngraham

4

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

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

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

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

Смежные вопросы