私はAlamofire v3.xに依存する、迅速なフレームワークを作成しています。今私はフレームワークをAlamofire v2.xに依存するプロジェクトに追加したいと思っています。私はCarthageを使って私のプロジェクトを管理しています。同じフレームワークの2つのバージョンをプロジェクトに追加することはできないようです。このような状況を解決する方法はありますか?iOS(またはOS X)プロジェクトはフレームワークの2つのバージョンに依存します
2
A
答えて
1
あなたが遭遇したことは、依存性地獄と呼ばれます。 .NET,Nodeなどのランタイムはこの問題を解決しました。少なくとも8までのJavaは、実行時に最初に見つかったバージョンを選択し、他のすべてのパッケージがそれと共に動作することを願っています。彼らはしません。
CocoaPodsはあなたのために依存性hellを検出し、pod install
の間にエラーを検出できますが、それだけです。カーセージは同じことをすると思いますか?そして、あなたのフレームワークのユーザは、あなたのフレームワークと他の依存しているフレームワークがすべて同じバージョンの共有依存関係を使用するまで、ここでは依存関係のダウングレードを行います。現時点では、AFAIKが利用できる唯一のオプションです。
アップルはFramework versioningで依存関係の地獄を解決しました。フレームワークは複数のバージョンのバンドルをバンドルし、フレームワークとリンクするとき、リンカーは完全なパス(バージョンはパスにあります)を必要なバージョンに記録します。しかし、それ自体の複数のバージョンを束ねるフレームワークは、信じられないほど馬鹿げたアイデアであり、決して脱皮しませんでした。
関連する問題
- 1. のOS Xは、迅速なビルドパッケージマネージャは、OS XエルキャピタンにunixODBCのC依存性
- 2. Jarの2つのバージョンへの依存
- 3. アプリケーションは2つの異なるバージョンのlibstdC++に依存できますか?
- 4. メモリの使用状況はiOSのバージョンに依存しますか?
- 5. 既存のプロジェクトをフレームワークにするiOS
- 6. ビルドアプリ、それはOS Xのさまざまなバージョンに
- 7. ユニットテスト:タイプ "ステータス"は2つのプロジェクトに存在します
- 8. プロジェクトの依存関係Twilioは、フレームワークDNXCoreをサポートしていません。Version = v5.0
- 9. ウェブサイトのレンダリングはOSに依存していますか?
- 10. Cocoapodの依存関係の2つのバージョンを使用する
- 11. UrlRewriteFilterとCouchbaseClientは、httpclientの異なるバージョンに依存します
- 12. 同じワークスペース内の2つのプロジェクト間のターゲット依存関係
- 13. Mac OS Xフレームワークは適切ですか?
- 14. UIViewController iOSフレームワークまたは従属プロジェクトのXIB
- 15. Mac OS XアプリケーションからiPod/iPhone iOSのバージョンを取得するには?
- 16. ExcelのSaveAs FileFormat引数はバージョンに依存しません
- 17. 2つの依存関係のためにGradleビルドが失敗しました
- 18. 1つのプロジェクトをXCodeに保存できますが、Mac OS X、Apple Mac Store、iOSデバイス用に構築することはできますか?
- 19. OS X Xcode 4プロジェクトに第三者フレームワークを追加
- 20. SBT - Play 2のプロジェクトの依存関係を正確にはできません
- 21. CPUソケットの数、またはOS X
- 22. バージョン非依存のPythonライブラリはどこに行きますか?
- 23. 可能なAndroidプロジェクトは、他の(非ライブラリ)Androidプロジェクトに依存しますか?
- 24. Angular2:2のサービスはお互いに依存します
- 25. どのようにGITにプロジェクトの2つのバージョンを開いたままにしますか
- 26. OS XのiOS風のアイコングリッド
- 27. リッチなGUI OS Xフレームワーク?
- 28. OS Xアプリケーション開発フレームワーク
- 29. CVS(またはRCS)に履歴の2つのバージョンを結合しますか?
- 30. SSL/TLSのバージョンがOS Xをサポートしているインフォグラフィックはありますか?
2つのフレームワークバージョンが共通の場所にあるデータベースに書き込もうとしたが、各バージョンで異なるスキーマが必要だった場合はどうなりますか?同じフレームワークの2つのバージョン(書いていないもの)が相互運用可能であることを保証することはできませんので、このようなフレームワークバージョンを混ぜ合わせてはいけません。どちらか一方を使用してください。 – par
@parご意見ありがとうございます。実際、私はAlamofire v3.xに依存するフレームワークを配布したいと思いますが、ユーザーがAlamofire v2.xをプロジェクトで使用している場合はどうなりますか? – ukim
それは同じ問題です。今、Alamofire *はバージョン間で互換性があるかもしれませんが(私には分かりません)、ライブラリにサードパーティの依存関係がある場合は、依存関係であればそのバージョンを使用する必要があることをユーザーに伝える必要があります。同じフレームワークの2つのバージョン間で共有されるリソースに関して考えると、必然的に(予期せぬ、厄介な方法で)ブレークすることになります。 – par