2013-04-16 19 views
14

W moim cocoapod dla iOS, mam zasadniczo elementy:Cocoapods importujące ramy do kodu źródłowego

  1. klasy Open-source (.M & .h plików)
  2. MyFramework.framework (katalog .framework pliki nagłówkowe i .bundle zasobów)

Jedną z klas open source wzywa import <MyFramework.MyFramework.h> więc można go używać składników MyFramework w jego realizacji. Ale z tego powodu mam problem z uzyskaniem podspec, aby przejść test spec lint (pod spec lint MyCocoapod.podspec). Kiedy uruchomić sprawdzanie Spec niestrzępiącą, to mówi:

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

Badając, zauważyłem, że podspec nie przechodzą walidację Spec niestrzępiącą jeśli usunę że open-source w sekcji source_files w podspec'S, s.source_files = 'MyFiles.{h,m}'. Masz pomysł, dlaczego moja klasa nie może zaimportować niestandardowego frameworka podczas sprawdzania poprawności danych?

Odpowiedni kod w podspec wygląda następująco:

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 

Odpowiedz

21

EDIT Ten proces jest teraz całkowicie obsługiwane przez opcję vendored_frameworks. Obsługuje to zachowanie ścieżek, ścieżek wyszukiwania ram i powiązanie z projektem.

+1

dzięki za odpowiedź. Więc jeśli mój cocoapod był ** ramą, to działa. Ale w pakiecie znajduje się również kilka plików source_code (.m i .h), które również mają być dystrybuowane. Wewnątrz kodu źródłowego (.m) mojego podrzędu pojawia się '#import ' i tam nie działa sprawdzanie poprawności. – johngraham

+0

Dodanie 'source_files' do podspec również nie powinno mieć żadnego wpływu na import twojej struktury. Jaki jest błąd, który CocoaPods pokazuje w kłaczkach? (Upewnij się też, że używasz najnowszej wersji 'gem gem') –

+0

Hmm, błąd jest powyżej w polu pytania ...' ERROR | ... '. (Właśnie dodałem odpowiedni kod z mojego podspec) Być może nie importuję poprawnie frameworku, dlatego też pliki_źródłowe nie mogą zaimportować poprawnie struktury. Zbadam to i skontaktuję się z Tobą. – johngraham

4

Aby dołączyć ramy można użyć:

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

Aby dołączyć pliki bundle zrobić:

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

Powiązane problemy