Làm thế nào để xây dựng một khuôn khổ hoặc thư viện cho các nhà phát triển khác, một cách an toàn? [đóng cửa]


106

Chúng tôi có một ý tưởng về một khung hoặc thư viện sẽ rất hữu ích cho bất kỳ nhà phát triển iOS nào. Vì vậy, chúng tôi đang suy nghĩ nghiêm túc về việc chuyển từ phát triển ứng dụng sang phát triển khung / thư viện.

Nhưng khi chúng ta muốn tính phí cho thư viện / khuôn khổ, chúng ta phải bảo vệ mã bằng cách nào đó. Làm thế nào chúng ta có thể xây dựng một khuôn khổ theo cách mà người dùng khuôn khổ của chúng ta không thể nhìn thấy mã nguồn, tương tự như cách chúng ta không thể nhìn thấy mã nguồn của các khuôn khổ Táo khuyết? Họ chỉ gửi các tệp tiêu đề và một số tệp exe Unix kỳ lạ với khung đã biên dịch, tôi đoán vậy.

Hoặc nếu không thể tạo khung / thư viện đã biên dịch mà các nhà phát triển iOS khác có thể sử dụng mà không thể sao chép và dán mã nguồn của chúng tôi, thì có cách nào để làm xáo trộn mã target-c không?


22
Tệp exe Unix :-)
Besi

6
Nếu bạn thực sự muốn hữu ích cho các nhà phát triển iOS, hãy tạo mã nguồn mở!
Kaan Dedeoglu

4
@KaanDedeoglu - Có ưu và nhược điểm cho người dùng trong cả hai trường hợp. Cá nhân tôi thích một mã nguồn đóng có giá hợp lý, mọi thứ đều được tài liệu hóa tốt, được hỗ trợ và chỉ hoạt động với một khuôn khổ nguồn mở, không được hỗ trợ và không có tài liệu. Hiếm có khuôn khổ nguồn mở nào thực sự ở bất kỳ đâu gần như được ghi chép đầy đủ VÀ được duy trì tích cực.
ArtOfWarfare 19/09/13

Câu trả lời:


113

Có, có thể xây dựng các khuôn khổ để người dùng của khuôn khổ đó không thể nhìn thấy mã nguồn.

Hãy xem các bài viết này (trước đây tôi đã sử dụng thành công bài viết đầu tiên để tạo các khuôn khổ - các bài viết sau là các bản cập nhật cho bản gốc):

http://www.drobnik.com/touch/2010/04/making-your-own-iphone-frameworks/

http://www.drobnik.com/touch/2010/05/making-your-own-iphone-frameworks-in-xcode/

http://www.drobnik.com/touch/2010/10/embedding-binary-resources/

Để sử dụng khung, người dùng của bạn chỉ cần kéo gói .framework vào Xcode. Họ sẽ có thể thấy các tệp tiêu đề mà bạn sao chép vào gói (xem các bài viết ở trên), nhưng không thấy nguồn (vì nó không được bao gồm - chỉ đầu ra đã biên dịch mới có trong gói).

Đây cũng có thể là một cách tuyệt vời để phân phối mã được sử dụng cho nhiều dự án trong công ty của bạn.


Cập nhật:

Hãy xem liên kết không có lông được thêm vào bên dưới - nó gần đây hơn nhiều và tất cả trên một trang: http://github.com/jverkoey/iOS-Framework . Nó cũng đưa ra các vấn đề với một số cách tiếp cận khác. Đây là hướng dẫn bây giờ tôi làm theo khi cố gắng nhớ những việc cần làm khi thiết lập một khuôn khổ mới. :)

Update2 (với bản phát hành Xcode 6)

Có một tùy chọn, chính xác mà bạn đang tìm kiếm Universal Framework for iOS:!

Mã của tôi có hiển thị cho người khác không? A: Không. Khung này sẽ xuất một tệp nhị phân đã biên dịch, vì vậy bất kỳ ai cũng có thể xem bên trong nó. Bạn có thể tạo điều tương tự cho một số tệp khác, như XIB.

Tại sao tôi cần cái này? Đ: Điều này dành cho các nhà phát triển / nhóm muốn chia sẻ mã của họ mà không hiển thị toàn bộ mã (tệp .m / .c / .cpp). Bên cạnh đó, điều này dành cho những ai muốn tổ chức mã + tài nguyên đã biên dịch (hình ảnh, video, âm thanh, XIB, plist, v.v.) vào một nơi duy nhất. Và điều này cũng dành cho các nhóm muốn làm việc cùng nhau trên cùng một cơ sở (khuôn khổ).

(c) http://blog.db-in.com/universal-framework-for-ios/


1
Cảm ơn bạn đời! Apple sẽ không từ chối một ứng dụng vì thủ thuật này? Bạn có thực sự nhận được một Ứng dụng được phê duyệt trên App Store sử dụng khuôn khổ như vậy không?
Thành viên Tự hào

3
Chỉ để quay lại điều này, vì cờ trình liên kết Xcode 4 -all_load trong cài đặt xây dựng "Cờ trình liên kết khác" là không bắt buộc. -ObjC là lá cờ duy nhất bạn cần.
Daniel

Bạn nói đúng đấy Daniel, một trong những phiên bản gần đây hơn của LLVM / Clang đã sửa lỗi này. Cảm ơn!
Jay Peyer

Tình yêu liên kết github đến Khung iOS, 1
sbonami

Lưu ý: Nếu bạn có Xcode 4.5, bạn sẽ cần một sửa đổi nhỏ đối với hướng dẫn như được ghi lại ở đây: stackoverflow.com/questions/13571080/…
Lolo


9

Ngoài ra còn có một mẫu cho XCode 4 sẽ cho phép bạn tạo các dự án khung tĩnh iOS.


bạn có biết về các dự án đã được phát hành với phương pháp này?
Tomen

Không, tôi không. Tôi đang làm việc trên một cái mà chúng tôi đang nghĩ đến việc phát hành theo cách này, nhưng tôi không chắc liệu cuối cùng thì đó có phải là điều chúng tôi sẽ làm hay không.
Greg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.