2013-04-16 27 views
14

Trong cocoapod của tôi dành cho iOS, tôi có một cơ bản mục:Cocoapods nhập khẩu một khuôn khổ để mã nguồn

  1. lớp nguồn mở (.m & file .h)
  2. MyFramework.framework (thư mục .framework , các tệp tiêu đề và .bundle cho các tài nguyên)

Một trong các lớp nguồn mở gọi import <MyFramework.MyFramework.h> để có thể sử dụng các thành phần của MyFramework trong việc triển khai. Nhưng vì điều này, tôi gặp khó khăn khi nhận podspec để vượt qua bài kiểm tra lint spec (pod spec lint MyCocoapod.podspec). Khi tôi chạy xác nhận đặc tả lint, nó nói:

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

Trong khi điều tra, tôi nhận thấy rằng podspec không vượt qua xác nhận đặc tả lint nếu tôi loại bỏ lớp mã nguồn mở trong phần source_files của podspec, s.source_files = 'MyFiles.{h,m}'. Bất kỳ ý tưởng tại sao lớp của tôi không thể nhập khung tùy chỉnh của tôi trong quá trình xác thực lint cụ thể?

Mã liên quan trong podspec trông như thế này:

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 

Trả lời

21

EDIT Quá trình này hiện nay hoàn toàn xử lý bởi các tùy chọn vendored_frameworks. Điều này xử lý bảo quản các đường dẫn, các đường dẫn tìm kiếm khung và liên kết đến dự án.

+1

Cảm ơn trả lời của bạn. Vì vậy, nếu cocoapod của tôi đã được ** chỉ ** một khuôn khổ, điều này hoạt động. Nhưng pod cũng có một số source_code (.m & .h files) để được phân phối. Bên trong source_code (.m) của pod của tôi, '#import ' xảy ra, và đó là nơi spec lint không xác thực. – johngraham

+0

Việc thêm 'source_files' vào podspec cũng không ảnh hưởng đến việc nhập khung công tác của bạn. Lỗi CocoaPods hiển thị trong lint là gì? (Ngoài ra hãy chắc chắn rằng bạn đang sử dụng phiên bản mới nhất 'gem update') –

+0

Hmm, lỗi ở trên trong trường câu hỏi ...' ERROR | ... '. (Tôi chỉ cần thêm mã có liên quan từ podspec của tôi) Có lẽ tôi không nhập khung chính xác ngay từ đầu, đó là lý do tại sao source_files không thể nhập khung đúng cách. Tôi sẽ điều tra điều này và lấy lại cho bạn. – johngraham

4

Để đưa ra một khuôn khổ, bạn có thể sử dụng:

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

Để đưa file bó làm:

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