他のオープンソース ライブラリに依存する iOS ライブラリを作成しています。どうやら同じ名前の 2 つのクラスを持つことはできないため、ライブラリがコンパイルされ、それを使用する可能性のあるプロジェクトもコンパイルされる可能性がありますが、(リンク段階で) 一緒にうまく動作しません。
このライブラリは多くのユーザーを対象としているため、これらの開発者が同じライブラリをインポートするかどうか、または同じライブラリの互換性のない別のバージョンを使用する可能性があるかどうかについて、私は推測できません。
私は周りを見回してきましたが、私の問題に対する明確な解決策を見つけることができませんでした (おそらくそうではありません)。これまでのところ、次のオプションを考えています。
- X ライブラリが既にプロジェクトに含まれているため、それらも含めないことをユーザーに通知します。これは、異なるバージョンの X ライブラリを使用できないことを意味します。
- 最初のものの洗練されたバージョンとして、依存関係が自動的に解決されるように CocoaPods を使用します。それでも、2 つのバージョンのライブラリが共存できないという欠点があります。
- 私のライブラリが依存するすべてのクラスをインポートして名前を変更し、それらにプレフィックスを付けて、名前が元のクラスと競合しないようにします。これは面倒な作業ですが、さらに重要なことに、コードが大きく変更されるため、元のライブラリとの間でコードをプル/プッシュすることができないという欠点があります。ユーザーの観点からは、依然として最良の選択肢のように思えます。
より良いアイデアを思いつくことができますか?私は図書館プロジェクトにかなり慣れていないので、明らかに欠けているものがあるかもしれません。
バイナリ形式で配布するか、ソース コード形式で配布するかはまだ決まっていません。どちらかを選択する理由があれば、あなたの意見も聞きたいです。