14

主にcocos2dを使用して構築された、かなり豊富なeラーニングアプリがあります。現在、アルファ版であり、プロジェクト構造をセットアップして、MacAppStoreをターゲットとするMacバージョンをビルドできるようにしたいと考えています。これは約80%cocos2dで、UIKitにいくつかの初期画面があり、Macに移植(書き直し)する必要があります。

単一のコードベースからMacとiOSの両方のアプリストアをターゲットにするための推奨セットアップは何ですか?選択肢は次のとおりです。

  1. 同じアプリケーションソースコードルートフォルダーに2つのxCodeプロジェクトを作成し、各プロジェクトを使用して単一のターゲットを構築します。これは次のようになります:Project.xcodeprojおよびProjectMac.xcodeproj
  2. 新しいMacターゲットを既存のiPadアプリケーションプロジェクトに追加し、ターゲットメンバーシップをいじって、目的の結果を取得します。これは次のようになります:Project.xcodeproj

さらに状況を複雑にしているのは、現在、iOSアプリの静的ライブラリとしてcocos2dを使用していることです。また、CoreInfrastructureというライブラリがあり、すべてのプロジェクトで使用する多くのコードが含まれています。最近、同じコードベースからMacをターゲットにしたフレームワークとiOSをターゲットにしたライブラリを同時に構築するプロジェクトを作成できることがわかりました。これは、フレームワークプロジェクトから開始し、iOS用の静的ライブラリを構築するためのターゲットを追加することによって行われます。

だから、みんなの意見と洞察を得たかっただけです。上記の選択肢で注意すべき注意点を知っている人はいますか?MacとiOSのアプリストア向けに構築している人は、同時にそれらの構造を共有したいと思っていますか?私たちのライブラリコードで機能するターゲットを追加する...それはアプリケーションにも行く方法ですか?

どちらの選択肢でもアーカイブと配布のビルドを行う際に問題はありますか?

前もって感謝します。

4

4 に答える 4

19

WWDCセッション「iOSとOSX間のコードの共有」は、このトピックのすべての基本的な質問に答えます。iWorkチームは、iOSとOS Xの両方で共有コードベースを使用してページ、基調講演、番号を作成する方法を紹介しました。

彼らのプロジェクトの鍵は、以下を使用することでした。

  • iOSとOSX用の個別のXcodeターゲット
  • .frameworkの形式の共有コード用の個別のプロジェクト
  • 上記のポイントからのフレームワークへのターゲット依存

ビデオを見るか、このセッションのトランスクリプトを読むことをお勧めします。

WWDC2014iOSとOSX間でコードを共有する

ASCIIWWDCトランスクリプト

于 2015-07-20T10:55:16.637 に答える
4

最近、kstenerudのiOS Universal Frameworkを使用して、iOSアプリとMacアプリの両方で機能する共有フレームワークコードベースを構築しました。iOSフレームワークのプロジェクトを作成した後、Cocoaフレームワークのターゲットを手動で追加する必要がありました。そうすれば、共有可能なコードをフレームワークで一度開発し、iOSアプリとMacアプリの両方でリンクすることができます。フレームワークにiOSアプリ用のUIKit固有のコードとMacアプリ用のAppKit固有のコードを含めることもできます。興味があればブログに書きました。

于 2013-04-16T16:29:23.830 に答える
3

共有ソースにマルチプラットフォームの静的ライブラリターゲットを使用しています。ただし、それを依存関係に拡張する必要があります。プラットフォームに依存する実装がある場合は、それらのシンボルの補足エクスポートライブラリを作成することをお勧めします。

したがって、構造は次の形式になる可能性があります。

  • CoreInfrastructure-クロスプラットフォームの静的ライブラリ。
  • PlatShared-クロスプラットフォームの静的ライブラリ。
  • PlatSpecific-OS X -OS X静的ライブラリ(またはフレームワーク)。
  • PlatSpecific-iOS -iOS静的ライブラリ。

OS Xアプリは、CoreInfrastructure、PlatShared、PlatSpecific-OSX、Cocos for OS X、およびシステムライブラリにリンクしています。

iOSアプリは、CoreInfrastructure、PlatShared、PlatSpecific-iOS、Cocos for iOS、およびsyslibsにリンクしています。

問題(私が見つけた)は、Xcodeで複雑なプロジェクト構造を開発および保守した経験があまりない/まったくない人がたくさんいることです。重複するターゲットを設定し、それらがすべて同じソースファイルを参照している場合でも、ターゲットが大きくなるにつれてそれらを適切に維持するのは面倒です(IMO)。そのため、最小限のターゲットと適切な依存関係構造を好みます。

于 2012-08-01T22:49:40.830 に答える
3

アプリケーションには、2つの別々のプロジェクトを使用します。1つのプロジェクトでiOSとMacの複数のターゲットを使用することは、それらがライブラリまたはフレームワークを共有している場合に非常に役立ちます。ただし、最上位のアプリケーションでは、ほとんど何も共有されません。AppKitを使用するには、UIKitコードを完全に書き直す必要があります。依存関係は異なり、ほとんどのプロジェクト設定も異なります。

もちろん、本当にすべてを一度に表示したい場合は、プラットフォーム固有のアプリケーションプロジェクトとすべての共有依存ライブラリ/フレームワークプロジェクトの両方を単一のワークスペースに配置できます。これはもっと働き方の問題です。2つを頻繁に切り替えたい場合は、これが最も理にかなっています。見ているものを単純化したい場合は、同じプロジェクトの多くを共有する別々のワークスペースにそれらを配置できます。個別のワークスペースには、プロジェクトを一度に1つのワークスペースでしか開くことができないため、効果的に一度に1つのワークスペースでしか作業できないという欠点があります。

于 2012-08-01T22:56:29.973 に答える