2015-10-26 26 views
8

Tôi đang phân phối thư viện để các nhà phát triển khác sử dụng (http://empiric.al). Tôi đã nhận thấy rằng giữa các phiên bản nhanh, thậm chí từ 2.0 đến 2.1, tôi sẽ nhận được Module file was created by a (newer/older) version of the compiler.Khả năng tương thích nhanh giữa các phiên bản cho thư viện

Tôi cần được phân phối theo cách tương lai.

Làm cách nào để đảm bảo rằng các khung được biên dịch của tôi có thể được sử dụng bởi các phiên bản mới hơn của Swift trong tương lai vì vậy tôi không phải biên dịch lại ngay khi Apple đưa ra bản beta mới?

Trả lời

11

Từ Apple's website:

Binary Compatibility và khung

Trong khi khả năng tương thích runtime của ứng dụng của bạn được đảm bảo, các Swift ngôn ngữ bản thân sẽ tiếp tục phát triển, và giao diện nhị phân cũng sẽ thay đổi. Để an toàn, tất cả các thành phần trong ứng dụng của bạn phải được xây dựng với cùng một phiên bản của Xcode và trình biên dịch Swift để đảm bảo rằng chúng hoạt động cùng nhau.

Điều này có nghĩa là cần phải quản lý cẩn thận các khuôn khổ. Ví dụ: nếu dự án của bạn sử dụng các khuôn khổ để chia sẻ mã với tiện ích mở rộng được nhúng , bạn sẽ muốn xây dựng các khung, ứng dụng và tiện ích mở rộng cùng nhau. Sẽ rất nguy hiểm khi dựa vào các khuôn khổ nhị phân mà sử dụng Swift - đặc biệt là từ các bên thứ ba. Khi Swift thay đổi, các khung công tác sẽ không tương thích với phần còn lại của ứng dụng của bạn. Khi giao diện nhị phân ổn định sau một hoặc hai năm, thời gian chạy Swift sẽ trở thành một phần của hệ điều hành máy chủ và giới hạn này sẽ không còn tồn tại nữa.

2

Cho đến khi Swift ABI (giao diện nhị phân ứng dụng) ổn định (tôi đoán một hoặc hai năm nữa) cách duy nhất để phân phối các thư viện sẽ hoạt động trên các phiên bản Xcode khác nhau là phân phối mã nguồn. Vỏ quả ca cao và Carthage là cả hai công cụ tốt để làm cho việc phân phối thư viện dễ dàng hơn nhưng đối với mã Swift, chúng sẽ vẫn dựa vào mã nguồn có sẵn. Có thể có một Cocoapod phát hiện phiên bản của Xcode mà nó chạy và sau đó tải xuống và cung cấp chính xác thư viện của bạn nhưng bạn vẫn cần xây dựng các thư viện cho tất cả các phiên bản Xcode mà bạn muốn hỗ trợ và biên dịch lại mỗi lần Apple phát hành một Xcode mới nhưng ít nhất người dùng sẽ không cần tải xuống phiên bản mới theo cách thủ công.

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