Tôi đang làm việc trên một thư viện tĩnh, được gọi là Silicon, mà tôi sử dụng cho tất cả các ứng dụng iOS của mình.Quy trình chính xác để liên kết các thư viện tĩnh có các thư viện tĩnh phổ biến là gì?
Vì tôi không muốn tạo một thư viện tĩnh lớn có thể trở nên khó khăn để duy trì, tôi tạo nhiều thư viện tĩnh nhỏ hơn mà tôi đính kèm dưới dạng mô-đun con.
Tính đến thời điểm này bằng văn bản cho cây phụ thuộc cho Silicon là như sau:
Silicon
|
| ==>FDKeychain
| ==>FDDataClient
|
| =>FDRequestClient
|
| =>FDFoundationKit
| ==>FDSQLiteDatabase
|
| =>FDFoundationKit
Như bạn có thể nhìn thấy cả hai FDRequestClient và FDSQLiteDatabase có FDFoundationKit như một thư viện tĩnh chung.
Điều có vẻ xảy ra là khi một dự án sử dụng Silicon được xây dựng, nó xây dựng tất cả các phụ thuộc mục tiêu của Silicon vào thư mục xây dựng dự án. Điều tương tự cũng xảy ra đối với FDDataClient và FDSQLiteDatabase. Vì vậy, tại một số điểm FDFoundationKit từ FDRequestClient được xây dựng và sao chép vào thư mục xây dựng cũng như FDFoundationKit từ FDSQLiteDatabase. Cho dù ai được xây dựng cuối cùng chỉ cần ghi đè lên trước đó.
Chỉ cần bởi may mắn FDFoundationKit đã không được thay đổi trong bất kỳ cách nghiêm trọng như vậy mà FDRequestClient và FDSQLiteDatabase không thể luôn luôn được sử dụng cùng một phiên bản nhưng tôi không thể đảm bảo nó sẽ như thế này mãi mãi.
Tôi đang cố gắng tìm hiểu xem có cách nào để Silicon chỉ định phiên bản FDFoundationKit nào sử dụng để đảm bảo rằng phiên bản được sử dụng sẽ hoạt động cho cả FDRequestClient, FDSQLiteDatabase và bất kỳ phụ thuộc nào khác thêm trong tương lai.
Tôi biết CocoaPods cố gắng giải quyết vấn đề này nhưng tôi không muốn khiến ai đó phải thiết lập tất cả những điều đó chỉ để thư viện của tôi hoạt động. Nếu tôi chỉ có thể tìm thấy một cách nào đó có Silicon xác định phiên bản của FDFoundationKit để sử dụng tất cả mọi thứ sẽ làm việc hoàn hảo.
Bạn không muốn sử dụng CocoasPods vì bạn "không muốn làm cho ai đó phải thiết lập tất cả điều đó chỉ để làm cho thư viện của tôi hoạt động". Tôi khá chắc chắn rằng hầu hết các gợi ý mà người dùng khác sẽ thực hiện ở đây sẽ đưa bạn nhiều thời gian hơn để thiết lập và quản lý điều đó nếu bạn thực hiện thiết lập một lần của một CocoaPods riêng. – Emilie
Nhưng đối với người dùng Silicon sẽ không có thiết lập. Họ chỉ liên kết thư viện tĩnh và mọi thứ hoạt động. Nếu tôi chuyển sang CocoaPods thì mọi người muốn sử dụng thư viện này sẽ cần phải có nó. Tôi đang cố gắng làm việc với thư viện này để đảm bảo rằng nếu bạn liên kết nó, nó sẽ xây dựng chính xác. –