回答:
Android APIはJavaです。2010年以降、GoogleはC / C ++開発者向けにNDK(SDK)を提供しています。
NDKには2つの方法があります。
NDKが提供するC / C ++ APIはほとんどありません。
ただし、多くのAPIはJavaのみです(JNIでも利用可能)。
NDK 5バージョンは、以下を提供するため、C ++開発者にとって最初に使用可能です。
最も痛みを伴う操作は、Androidデバイスでのデバッグです。そこで、最初にデスクトッププラットフォームで、次のiOSプラットフォーム(シミュレーターで)、最後(Android)でデバッグするために、独自のマルチプラットフォームフレームワーク(OS X、Windows、Linux、iOS、Android)を開発します。
Androidエミュレーター(シミュレーターではありません)のパフォーマンスは低く、OpenGL ES 2.xをエミュレートできません。開発には実際のデバイスをお勧めします。
多くの有用な情報を見つけることができます:
Android NDKを使用して、2つのSDL + OpenGLゲームをAndroidに移植することに成功しましたが、驚くほど簡単です。GLコンテキストを作成し、C ++コードがコールバックするための入力、サウンド、イメージのロードなどのユーティリティクラスを提供する200行のJavaラッパーがあります。NDKの「San-Angeles」サンプルプログラムは、優れた出発点です。
ちなみに、Javaを使用せずにC / C ++プログラムを作成することは可能ですが、時々JVMをコールバックしてOSレベルのメソッドにアクセスすると便利です。
あなたのゲームがすでにLinuxでコンパイルされているなら、あなたはくつろいでいると思うでしょう。私の現在のプロジェクトにある100以上のファイルのうち、#ifdef ANDROID_NDK
ディレクティブを持っているのは4つだけです(イメージとサウンドに関連するクラス)。
実際、ゲームの移植に費やされた時間のほとんどは、私が知らなかった既知のエミュレーターのバグのためでした。
ANDROID_NDK_ROOT
それがであることを、セットである$PATH
(と一緒に[sdk_location]/tools
して[sdl_location]/platform-tools
)。プロジェクトディレクトリに移動します。ndk-build
; を使用してNDKコードをコンパイルします。Javaコードをコンパイルし、ant compile
; を使用してパッケージをビルドします。を使用してエミュレータまたは接続されたデバイスにアップロードしますant install
。エンジンをopensourcingとして、私はまだ決めていないが、私はすでに上でコードを公開していますブログ
Androidは、Android 1.5からAndroid NDKまでのネイティブアプリケーションをサポートしており、対象ユーザーを非常によくカバーするはずです。それでも、JNIを介してアプリケーションのネイティブ側をロードし、たとえば入力呼び出しやレンダリング呼び出しを転送する単純なAndroid Javaアプリケーションが必要です。
NDKにはいくつかのバージョンがありますが、最新のNDKを使用して、サポートするターゲットAPIを選択できます。Androidバージョン2.3以降では、ネイティブ側でより多くのことができ、必要なJavaコードは少なくなりますが、2.3のデバイスサポートは現在非常に限られています。
ネイティブAndroid C / C ++開発は、少なくともフルスクリーンゲームには有効なソリューションであり、既存のC / C ++ OpenGL ESアプリケーションを移植するのに必要な労力はごくわずかです。