29

iOS および Android デバイス用の C++ コードを作成してコンパイルしたいと考えています。私はしばらくの間 Xcode を使用してきました (MacOS と Windows 用の C++ コードを書いていました)。だから私は自分の目的のためにXcodeを使いたいです。

問題は、Android デバイスと iPad/iPhone の両方で C++ コードをコンパイルする方法がわからないことです。iOS と Android のクロスプラットフォーム ソリューションを使用したいのですが、Marmalade (c++) などのフレームワークは使用したくありません。

それは本当ですか?:) チュートリアルやその他の役立つ資料はありますか?

4

1 に答える 1

65

iOS と Android では、間違いなく C++ を使用できます。私は両方のために独自のゲーム エンジンを作成しました。

Xcode は iOS 用の通常の IDE であり、"Objective-C++" 開発をネイティブにサポートします (コンパイラはObjective-CC++の両方をサポートします)。OS とやり取りするには、Objective-C でシン ラッパーを作成する必要がありますが、必要に応じて他のすべてを C++ で作成できます。Xcode コマンド ライン ツールをダウンロードすると、スクリプトからビルドすることもできます。

Eclipse は Android 用の通常の IDE であり、NDKをダウンロードすると、 JNIを利用して Java と C++ の間のインターフェースを取ることができます。iOS と同じように、OS と対話するには、少なくとも Java ラッパーが必要です。

ただし、Eclipse と Xcode に限定されるわけではありません。たとえば、emacsを使用したり、CMakeを使用したりして、プロジェクト設定を少し統合することができます。Emacs は非常に強力で柔軟な IDE ですが、学習曲線が非常に急で、インストールも簡単ではありません。Mac でこれを行う場合は、emacsformacosxをお勧めし、 ECBオートコンプリートをインストールすることをお勧めします同じように。CMake は基本的に、1 つのソース ツリーからさまざまなプロジェクト ファイル (Visual Studio、Xcode、Eclipse など) をビルドできるクロス プラットフォーム ビルド システムです。emacs と同じように、これは非常に強力ですが、学習曲線がやや急です。すぐに始めたい場合は、Xcode と Eclipse の両方から始めた方がよいでしょう。PC で開発している場合は、Android 用の NDK を使用するために Xcode と cygwin を使用する Mac VM または Hackintosh が必要です (Macbook Pro ユーザーは、ほとんど手間をかけずにすぐに楽しむことができます)。

ネイティブの Android 開発は間違いなくはるかに困難です。デバイスのセグメンテーションが増えるだけでなく、ネイティブ デバッグも簡単ではありません。デバイス上で GDB サーバーを実行し、それに接続してブレークポイントを設定する必要があり、多くの人がコマンド ラインからこれを実行します。GUI ベースの IDE が必要な場合、 Tegra Tools for Eclipseで成功した人もいると聞いています。

IDE からはより強力なツールを自由に使用できるため、まず iOS で開発することを強くお勧めします。メモリ リークを追跡したり、コードをプロファイルしたり、ブレーク ポイントを簡単に設定したりできます ;) など。iOS で機能を開発したら、.mk ファイルや Android ネイティブ開発のその他の利点に取り組むことができます。

iOS のコア オブジェクトとライフ サイクルに関する情報を次に示します。

Android の場合:

OS をうまく操作し、アプリケーションのライフサイクルを尊重する限り、C++ ロジックを自由に呼び出すことができます。これは iOS で直接行うことができますが、Android では JNI を介して呼び出しをマーシャリングする必要があります。プラットフォームの仕様をカプセル化すると、両方のプラットフォーム間で C++ ロジックを共有できます。

私は C++ を大いに支持していますが、それを使用するかどうかは、これらのプラットフォームの状況によって異なります。C++ は、これらのプラットフォームでは一般的な選択肢ではないため、それほど多くのドキュメントを見つけることはできません (多くの場合、自分で作成します)。C++ にあまり慣れていない場合は、複雑さが少し増す可能性があります ( RAII設計パターンSTLに精通していますか?)。

これが理にかなっている可能性があるいくつかの状況を次に示します。

  • C/C++ で作成されたライブラリを利用する必要がある場合
  • アプリやゲーム用に独自のプラットフォームに依存しないフレームワークを構築したい場合
  • ゲームなどのリアルタイム/パフォーマンスが重要なアプリケーションを使用している場合

多くの人が Objective-C でゲームを開発しているため、これらの状況で C++ を使用しなければならないと言っているわけではありません。ハードウェアを最大限に活用する必要がある場合、または単によりポータブルなものが必要な場合に検討する必要があると言っているだけです.

于 2013-03-04T21:29:12.377 に答える