問題タブ [xcframework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
7741 参照

swift - エラー: xcframeworks の使用は、レガシー ビルド システムではサポートされていません

.xcframework を作成し、.xcframework を xcode プロジェクトに埋め込んで別のアプリで使用しようとしましたが、「エラー: xcframeworks の使用はレガシー ビルド システムではサポートされていません」というエラーが表示されます。これをxcode 11.3でテストしています

0 投票する
1 に答える
1072 参照

ios - サードパーティに依存する iOS コンパイル済み SDK を迅速に作成する (CocoaPods を使用)

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 とアプリです)。

何か提案はありますか?どうやってそれをしますか?

ありがとうございました!