Swift 5.1の SDK を持っていますが、これをソースを提供するのではなく、コンパイル済みの SDK として配布 (販売) したいと顧客が考えています。
残念ながら、この SDK は CocoaPods (Alamofire、RealmSwift、ReachabilitySwift など) を使用して統合されたいくつかのサードパーティ ライブラリに依存しています。フレームワーク/ライブラリにサードパーティの依存関係を持たないようにする必要があることはわかっていますが、残念ながら、別の機関が開始した後にこのプロジェクトに取り組み始めました。この SDK は実際には cocoapod の Pod ですが、コンパイルされた Pod ではありません。
この SDK をコンパイル済みの SDK として配布するための最善の方法は何ですか?
私が理解している限り、サードパーティの依存関係でSDKをコンパイルする場合、コンパイルされたSDKで使用されるものと同じパブリックAPIで同じライブラリを使用するアプリを確認する必要があります。そうしないと、アプリがクラッシュしますランタイム。私が理解している限り、そうする唯一の方法は、コンパイルされた sdk podspec で各サードパーティの依存関係の非常に厳密なバージョンを指定することです。たとえば、Alamofire、「~> 4.2.0」。しかし、この方法では、コンパイルされた sdk がそのバージョンでコンパイルされているという理由だけで、アプリが新しいバージョンの Alamofire (または他の依存関係) を使用できないため、このアプローチは好きではありません。
私は XCFramework を作成し、次にその XCFramework が vendored_framework としてベンダー化された podspec を作成しています (現在 XCFrameworks を vendored_framework としてサポートしている唯一の CocoaPods 1.9.0-beta2 を使用しています)。
コンパイルされたSDKを静的ライブラリとして構築しようとしたり、サードパーティの依存関係を静的ライブラリとしてリンクしたりするなど、さまざまなアプローチを試しましたが、この場合、同じ依存関係(Alamofireなど)とともにアプリで使用すると、コンソールでは、「クラス X は Y と Z の両方に実装されています。どちらを使用するかは未定義です」(Y と Z は SDK とアプリです)。
何か提案はありますか?どうやってそれをしますか?
ありがとうございました!