2015-10-12 12 views
18

Tôi có một dự án Xcode tạo thư viện tĩnh. Nhóm của tôi lên kế hoạch cho tất cả sự phát triển mới trong Swift. It is not possible to add Swift files to the static library project. Chúng tôi đang giảm hỗ trợ cho iOS 7, do đó, bây giờ có thể bao gồm các khung trong ứng dụng iOS của chúng tôi. Vì vậy, tôi dự định chuyển đổi dự án thư viện tĩnh của tôi thành một dự án khung công tác.Chuyển đổi mục tiêu thư viện tĩnh thành mục tiêu khung trong dự án Xcode

Tôi đã xem nhưng tôi không thể tìm thấy bất kỳ công cụ hoặc lời khuyên nào về cách thực hiện chuyển đổi này. Thư viện tĩnh lớn (hơn 100 tệp .m).

Tôi hy vọng có câu trả lời hay hơn là tạo mục tiêu khung song song mới. Tôi đã thử điều này hai lần. Lần đầu tiên như là một mục tiêu nhanh chóng, nhưng tôi đã không thể dễ dàng nhập tất cả các tệp mục tiêu C. Tiếp theo, như một mục tiêu C mục tiêu, nhưng không có .pch nữa.

+0

Tôi đã gặp phải vấn đề tương tự, tạo một khung mã hỗn hợp objC + nhanh. Bạn đã tìm thấy bất kỳ giải pháp @Jeffery Thomas? –

+1

@LouWeed No. Đó chỉ là một ngày làm việc. Tôi tạo ra một mục tiêu C mục tiêu mới, sau đó tái tạo tất cả các thiết lập mục tiêu (bao gồm cả .pch). –

+1

Câu hỏi hay, rất buồn khi biết rằng không tìm thấy giải pháp phi thủ công nào. :( –

Trả lời

1

Tôi thấy rằng ai đó đã tạo khung theo cách thủ công, tạo tệp module.framework và sao chép tất cả tệp tiêu đề trong thư mục module.framework/Headers. Giải pháp này dường như hoạt động, dự án có thể nhập chính xác các tệp và xem chúng dưới dạng khung chính xác.

Tôi không chắc đây là cách tốt nhất để làm điều đó một cách khó khăn, tôi đang thử nó trên một dự án lớn mà ATM đang nhập thư viện tĩnh qua cocoapod, nhưng có vẻ như tôi có vấn đề với khả năng hiển thị một số lớp sử dụng khung công tác.

+0

Tôi có thể đưa các tệp tiêu đề từ các khung công tác khác vào khung của riêng mình để người dùng cuối sẽ thấy khung của tôi và có thể truy cập các lớp từ khung của người khác từ tôi không? – Saty

+0

Bạn có nhớ cách anh ấy dán tất cả vào phần Biên dịch của Tôi đã có vài nghìn tệp cần xử lý –

4

Để chuyển đổi khuôn khổ liên kết tĩnh/động từ thư viện liên kết tĩnh,

  1. Thêm một khung cacao cảm ứng mới như một mục tiêu trong dự án thư viện liên kết tĩnh hiện tại của bạn.
  2. Trong giai đoạn xây dựng, thêm tất cả các .m, .mm, .c, .cpp, .metal, v.v ... vào giai đoạn "\ Build Phases \ Compile Sources" của mục tiêu khung được liên kết tĩnh của bạn.
  3. Đặt tiêu đề bạn muốn hiển thị trong "\ Build Phases \ Headers".
  4. Đối với khung được liên kết động, hãy nhớ kiểm tra cài đặt Loại Mach-O trong Cài đặt Xây dựng của bạn. Nếu bạn định sử dụng nhanh, bạn cần đảm bảo rằng kiểu Mach-O được đặt làm thư viện động để nó trở thành một khung công tác được liên kết động. Đối với khung công tác liên kết tĩnh, bạn cần đặt kiểu Mach-O là thư viện tĩnh, nhưng bạn không thể sử dụng nhanh trong khung công tác liên kết tĩnh được chuyển đổi (chỉ có mục tiêu-c, mục tiêu-C++, C++, C, v.v.) .

Sau đó, đối với ứng dụng muốn sử dụng khung này, chỉ cần bao gồm tiêu đề như #import và thêm khung vào "Xây dựng giai đoạn \ Liên kết nhị phân với thư viện" của Mục tiêu ứng dụng của bạn. Nếu khung công tác được chuyển đổi là khung công tác được liên kết động, bạn sẽ cần phải đặt nó vào "Các tệp nhị phân được nhúng".

+0

Chẳng bao lâu tôi thêm một tệp nhanh vào dự án mới của mình, tôi nhận được 'Swift không được hỗ trợ cho các thư viện tĩnh' – lostintranslation

+0

Cách được đề xuất là chuyển đổi "thư viện liên kết tĩnh" Trong khi Swift không hỗ trợ thư viện tĩnh tại thời điểm này, bạn không thể thêm nhanh vào khung công tác liên kết "tĩnh" mới được tạo ra. – joseph

+0

Tôi đang bối rối về câu trả lời của bạn ở trên @ joseph, bạn nói "bạn không thể chỉ thêm nhanh vào khung được liên kết" tĩnh "mới được tạo ra.", Điểm của các bước trong câu trả lời của bạn là gì nếu kết quả vẫn là không tương thích với Swift? Có lẽ bạn muốn nói "có thể" thay vì "không thể"? Ngoài ra, nếu điều này thực sự làm việc cho Swift, bạn có thể đặt các bước chi tiết hơn không? Tôi đang gặp vấn đề tương tự và dường như tôi không hiểu đầy đủ các bước trên (tôi khá mới trong việc phát triển iOS) – Franco

Các vấn đề liên quan