2015-10-26 18 views
8

他の開発者向けにライブラリを配布しています(http://empiric.al)。私は迅速なバージョンも2.0〜2.1の間、私は将来性の方法で配布する必要がModule file was created by a (newer/older) version of the compiler.ライブラリのバージョン間のスウィフト互換性

を買ってあげることに気付きました。

私はコンパイルされたフレームワークを今後新しいバージョンのSwiftで使用できるようにするため、Appleが新しいベータ版を出したらすぐに再コンパイルする必要はありませんか? Apple's websiteから

答えて

11

バイナリ互換性と、アプリケーションの実行時の互換性が確保されている間

をフレームワーク、スウィフト言語 自体は進化し続け、およびバイナリインタフェースうも 変更します。安全のために、あなたのアプリのすべてのコンポーネントは XcodeとSwiftコンパイラの同じバージョンで構築されて、 が確実に動作するようにする必要があります。

これは、フレームワークを慎重に管理する必要があることを意味します。たとえば、 プロジェクトでフレームワークを使用して、埋め込みコード が共有されている場合は、フレームワーク、アプリ、および拡張子 を一緒にビルドする必要があります。 Swiftを使用するバイナリフレームワークに頼るのは危険です - 特に第三者から。 Swiftが変更されると、それらの フレームワークは残りのアプリケーションと互換性がありません。 バイナリインターフェイスが1年または2年で安定すると、Swiftランタイムは がホストOSの一部になり、この制限はもう存在しなくなります。

2

Swift ABI(アプリケーションバイナリインターフェイス)が安定するまで(1年または2年を推測している)、別のXcodeバージョンで動作するライブラリを配布する唯一の方法は、ソースコードを配布することです。 CocoaポッドとCarthageはどちらもライブラリの配布を容易にするための優れたツールですが、Swiftコードではソースコードが利用可能になっています。

実行されているXcodeのバージョンを検出して、ライブラリの正しいビルドを提供するCocoapodを持つことは可能かもしれませんが、あなたが望むすべてのXcodeバージョンのライブラリを構築する必要がありますAppleが新しいXcodeをリリースするたびにサポートし、再コンパイルしますが、少なくとも新しいバージョンを手動でダウンロードする必要はありません。