私は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. MSVCP140.dllはOS /バージョンに依存しますか?
- 2. のOS Xは、迅速なビルドパッケージマネージャは、OS XエルキャピタンにunixODBCのC依存性
- 3. PHPのMAC OS上の2つのdiffenrentバージョンはX
- 4. Jarの2つのバージョンへの依存
- 5. scipy convolveはxに依存します
- 6. アプリケーションは2つの異なるバージョンのlibstdC++に依存できますか?
- 7. 既存のプロジェクトをフレームワークにするiOS
- 8. メモリの使用状況はiOSのバージョンに依存しますか?
- 9. ormLite createOrUpdateはテーブルの2つの値に依存します
- 10. 2つのHTMLのドロップダウンリストはお互いに依存します
- 11. ReactiveCommandはお互いに2つのコマンドに依存します
- 12. ビルドアプリ、それはOS Xのさまざまなバージョンに
- 13. ダガー2つのモジュールはお互いに依存します
- 14. 2つのRubyクラスはお互いに依存します
- 15. apt-get installは、オペレーティングシステム(OS)のカーネルバージョンまたはOSの配布に依存しますか?
- 16. ウェブサイトのレンダリングはOSに依存していますか?
- 17. プロジェクトの依存関係Twilioは、フレームワークDNXCoreをサポートしていません。Version = v5.0
- 18. NEST 5.x NEST 2.xへの依存?
- 19. ログCocoapodの依存性とiOSのバージョン
- 20. Mac OS Xフレームワークは適切ですか?
- 21. 依存するフレームワークをiosプロジェクトに自動的にダウンロード/更新する
- 22. ユニットテスト:タイプ "ステータス"は2つのプロジェクトに存在します
- 23. OS XプロジェクトからiOS QuickBlox SDKをアンインストールする方法は?
- 24. UIViewController iOSフレームワークまたは従属プロジェクトのXIB
- 25. UrlRewriteFilterとCouchbaseClientは、httpclientの異なるバージョンに依存します
- 26. Mac OS XアプリケーションからiPod/iPhone iOSのバージョンを取得するには?
- 27. 依存関係プラグインは依存関係のバージョンを無視しますか?
- 28. 実行コマンドはOSとIFサービスに依存します。
- 29. バージョン依存のMaven依存
- 30. OS X Xcode 4プロジェクトに第三者フレームワークを追加
2つのフレームワークバージョンが共通の場所にあるデータベースに書き込もうとしたが、各バージョンで異なるスキーマが必要だった場合はどうなりますか?同じフレームワークの2つのバージョン(書いていないもの)が相互運用可能であることを保証することはできませんので、このようなフレームワークバージョンを混ぜ合わせてはいけません。どちらか一方を使用してください。 – par
@parご意見ありがとうございます。実際、私はAlamofire v3.xに依存するフレームワークを配布したいと思いますが、ユーザーがAlamofire v2.xをプロジェクトで使用している場合はどうなりますか? – ukim
それは同じ問題です。今、Alamofire *はバージョン間で互換性があるかもしれませんが(私には分かりません)、ライブラリにサードパーティの依存関係がある場合は、依存関係であればそのバージョンを使用する必要があることをユーザーに伝える必要があります。同じフレームワークの2つのバージョン間で共有されるリソースに関して考えると、必然的に(予期せぬ、厄介な方法で)ブレークすることになります。 – par