私はゲームをAndroidに開発/移植しようとしていますが、それはCであり、AndroidはJavaをサポートしていますが、Cアプリを入手する方法があるはず?
ありがとうございます。
グーグルを介してこれに来ている人のために、SDK 1.6 Androidから始めて今公式のネイティブSDKがあることに注意してください。
あなたはここからAndroid NDK(ネイティブ開発キット)をダウンロードすることができます。 https://developer.Android.com/ndk/downloads/index.html
NDKに関するブログ記事もあります。
http://Android-developers.blogspot.com/2009/06/introducing-Android-15-ndk-release-1.html
Android NDK は、CやC++などの言語を使用して、アプリの一部をネイティブコードで実装できるツールセットです。特定の種類のアプリでは、これらの言語で書かれたコードライブラリを再利用するのに役立ちます。
ネイティブ開発を開始する方法については、 this link を参照してください。
サンプルアプリケーションは here にあります。
通常、あなたはしなければなりません:
あなたがアプリを販売しようとしているなら:
Googleはネイティブ開発キット(NDK)をリリースしました(によると http://www.youtube.com/watch?v=Z5whfaLH1-E :07:30)。
うまくいけば、情報はそれが言うように、グーグルグループのページ( http://groups.google.com/group/Android-ndk )に更新されますまだリリースされていません。
どこで簡単にダウンロードできるのかはわかりませんが、GoogleのGitリポジトリからドーナツブランチの下でNDKのコピーを入手できると聞きました。
公式の立場は、これはあなたが「やりたい」ことではないということです。 Android Developersリストの このスレッド を参照してください。 Googleは、Androidがさまざまなデバイス(CPU、ディスプレイなど)で動作することを想定しています。したがって、開発を可能にする最善の方法は、Dalvik VMをターゲットとする(移植可能な)マネージコードを使用することです。このため、Android SDKはC/C++をサポートしません。
しかし、このページを見てください:
Androidには、Androidシステムのさまざまなコンポーネントによって使用されるC/C++ライブラリのセットが含まれています。これらの機能は、Androidアプリケーションフレームワークを通じて開発者に公開されています。
マネージドアプリケーションフレームワークは、これらのライブラリの上に重なっているように見えます。このページには、C/C++ライブラリ(標準Cライブラリ、メディア、3D、SQL Liteなど)のリストが続きます。
したがって、必要なのはC/C++を適切なCPU(G1の場合はARM)にコンパイルするコンパイラチェーンだけです。これを行う方法についてのいくつかの簡単な説明はここ です 。
私が知らないのは、これらのライブラリが提供するAPIの説明がどこにあるかということです。 SDKのどこかにヘッダーファイルが埋め込まれている可能性がありますが、ドキュメントは大ざっぱ/欠けている可能性があります。しかし、私はそれができると思います!
それが役に立つことを願っています。記録のために、私はネイティブのAndroidアプリを書いたことはない - ほんの数個の単純な管理されたもの。
アンディ
グーグルはすでにグーグルI/O 2011を立ち上げました:C/C++ゲームをアンドロイド sessionに持ってきます。 http://www.youtube.com/watchで利用可能ですか? v = 5歳SPFG4
これは、Android用のCおよびC++でアプリケーションを作成するためのNDKの使用方法を理解するのに役立ちます。
コンソールベースのネイティブゲームをクロスコンパイルしてAndroidで実行したい場合は、 この記事 で同じ方法が3つ示されています。
1:スタンドアロンツールチェーンを使用した静的コンパイル
2:Android NDKのツールチェーンを使用したクロスコンパイル
3:AOSPソースコードを使ったクロスコンパイル
nestedvm を使ってC(または他のGCC言語)をJavaのバイトコードに変換し、それをあなたの移植の基礎として使うことができます。たとえば、 Android版Simon Tathamsポータブルパズルコレクション を参照してください。
私はこの方法がNDKによって時代遅れにされることを期待しています、しかしそれはいくつかのネットワークか何かが人々が彼らの電話をアップグレードすることを許さないならばではないかもしれません。
これを見てそれは可能であるようです:
「Java言語のみがサポートされているという事実は、他の言語でアプリケーションを開発できないという意味ではありません。これは、モバイル向けアプリケーション開発の多くの開発者、ハッカー、専門家によって証明されています。このライブラリは、S-Tris2ゲームやEdgelibの3Dアニメーションデモなど、Androidプラットフォーム上でネイティブC++アプリケーションを実行することに成功しました。
2009年以来、この問題に関する進展があります。
Android用Qt(C++フレームワーク)
はじめに 動画 。
NDKが公式のJava APIを完全に網羅しているかどうかはわかりません。
http://developer.Android.com/sdk/ndk/index.html#overview から:
NDKでは、ネイティブ専用のアプリケーションを開発することはできません。 Androidの主要ランタイムは、依然としてDalvik仮想マシンです。
google ndk group を見てください。それは、NDKの最初のバージョンが2009年1月に利用可能になるでしょう。
更新日:そしてリリースされました http://Android-developers.blogspot.com/2009/06/introducing-Android-15-ndk-release-1.html
Googleはちょうどそれを可能にするNDKをリリースしました。
ここで見つけることができます: http://developer.Android.com/sdk/ndk/1.5_r1/index.html
C4droidをダウンロードしてからGCCプラグインをインストールしてSDにインストールすることができます。シェルからGCCバイナリがあるディレクトリに行き、それを呼び出してオンボード実行可能ファイルを作成します。
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
こんにちは腕!
このブログ記事は良いスタートかもしれません: http://benno.id.au/blog/2007/11/13/Android-native-apps 残念ながら、重要なことの多くは「読者への課題として残されています」。
ネイティブC/c ++ファイルあなたのUbuntuからのlibstdc ++。*はx86(またはx86_64)バイナリですが、AndroidデバイスとエミュレータはARMです。もちろん、正しいソナメを設定したとしても、これはとにかくうまくいきません。これはどこにも行かない非常に素朴な方法です。 AndroidはC++のサポートが非常に限られており、例外、標準C++ライブラリ(STLを含む)、RTTIはありません。そのような機能が必要な場合は、私のカスタムNDKディストリビューションを使ってください。
http://crystax.net/Android/ndk.php - 上記のC++の完全機能をサポートします。
なぜエラーがあるのですか: '__cxa_end_cleanup'リンクエラーへの未定義の参照。 Androidのstlport
時間。 libstdc + +へのリンクがないため。 A.間違っています。
静的ライブラリを使用しているため、完全なlibstdc ++をリンクする必要があります。 A.できます
http://crystax.net/Android/ndk.php ここからパッケージをダウンロードしてください
sources\cxx-stl\gnu-libstdc + +\libs\armeabiディレクトリ。
それ自身のlibstdc ++サポート上のAndroidは制限されています、それは完全なlibstdc ++にリンクされなければなりません。仕事です。
Android.mkにファイルを追加するLOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
そしてLOCAL_CPPFLAGS + =-lstdc + +-fexceptions
はコンパイルすることができます
チュートリアルはわかりませんが、優れた開発ツールであるIdeaworks LabsのAirplay SDKです。 (最近ブランド変更された " Marmelade ")C/C++を使用すると、Windows Mobile、iPhone、Android用のアプリを作成できます。私が気に入らなかった唯一のコンポーネントは、GUIコンポーザー - バグのあるもの - でしたが、あなたはいつでもそれをメモ帳に置き換えることができます。
次期SDKバージョンのAndroid(コードネームEclair?)でC/C++ライブラリを使用できるようにする計画があります。現在のところ、Android Java SDKでは不可能です。しかし、巨大なオープンソースプロジェクトを手に入れ、あなた自身のライブラリを転がし、そしてあなた自身のデバイスをフラッシュすることはできます...しかしあなたのライブラリを使用したい人はあなたのカスタムビルドもフラッシュしなければならないでしょう。