(おそらく次の質問は、私たちがそうでなければフレームワークまたは動的ライブラリを使用する可能性が高いという事実は別に、iPhone特有の問題ではありません。)静的(iPhone)ライブラリ、配布、および依存関係
私は独自のiPhoneを構築していますクライアント用のSDK、Webバックエンドとの統合ソースコードを顧客に配布したくないので、SDKを静的ライブラリとして配布する必要があります。これはうまくいきます。新しいiPhoneアプリをライブラリにリンクして、デバイスにインストールできることを確認しました。
私の懸念事項は、私たちのSDKが依存する第三者のライブラリです。たとえば、現在HTTPRiotとThree20を使用しています(正確なライブラリは変更されるかもしれませんが、それは重要ではありません)。顧客がこれらのライブラリ(およびおそらく異なるバージョン)のいずれかを自分のアプリでも使用している場合、これによって競合が発生する可能性があると私は心配しています。
これに関するベストプラクティスは何ですか?独自の静的ライブラリから依存ライブラリのシンボルを除外する方法はありますか?その場合、顧客はSDKとHTTPRiotおよびThree20の両方に手動でリンクする必要がありますか?または、他に確立されたメカニズムがいくつかありますか?
私は使いやすさと柔軟性/互換性のバランスを取ろうとしています。理想的には、独自のSDKをプロジェクトにドロップし、ビルド設定の変更を最小限に抑えるだけで済みますが、状況がより堅牢なものになると、顧客が複数のライブラリを個別にリンクするようになる可能性があります。あるいは、第三者依存の有無にかかわらず、複数のバージョンのSDKを配布して、両方のケースをカバーできるとします。
私は私の質問は意味をなさない... RubyとJavaの背景から主に来て、私は長い間(伝統的な意味で)コンパイルされたライブラリに対処しなければならなかったではないと思っている...;)
妥当なアプローチのようです。第三者のライブラリのいくつかはソース形式で配布されており、明示的なバージョン管理をしていないため、バージョン管理はややこしいことです。しかし、特定のGithubコミットまたは日付を指すことができると思います。 お客様は、サードパーティのライブラリをアップグレードするための(サポートされていない)プロセスを含めることができると述べました。どのように私は実際にこれについて行くだろうか?サードパーティのシンボルが効果的に私たち自身のSDKの一部になるので、これは矛盾しているようです。 –
これについて考える時間はありませんでしたが、「弱いつながり」はまったく助けになりますか? http://developer.apple。com/iphone/news/archives/november2009 /#adding3xto2x –
全体の製品(ライブラリや他のサードパーティのものを含む)を再構築するスクリプトをスクリプトに付けることができると思いますか?彼らは(> 2GBの)iPhone SDKがインストールされている限り、すべてを一緒に保持する単純なXcodeプロジェクトのためにxcodebuildを呼び出すスクリプトを与えることができますか?しかし、混乱のビット。最も簡単なことは、バージョンを強制し、アップグレードされたライブラリに対する新しいリリースのためにあなたに連絡して(そして支払う)と主張することです。あなたは価格で受け入れテストのビットを含めることもできます...それはあなたがそれを行うことはまったく合理的です。 –