Android用のCまたはC ++でアプリケーションを作成しますか? [閉まっている]
質問
ゲームをAndroidに開発/移植しようとしていますが、それはCであり、AndroidはJavaをサポートしていますが、そこにCアプリをインストールする方法があるはずです、誰でも良いチュートリアルを知っています件名について
ありがとう!
解決
Googleを介してこれにアクセスする場合は、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 ++などの言語を使用したネイティブコード。特定の種類のアプリでは、これらの言語で記述されたコードライブラリを再利用できます。
ネイティブ開発の開始方法の詳細については、このリンク。
サンプルアプリケーションは、こちらにあります。
通常、次のことを行う必要があります:
- Google Android NDKをインストールします。それ ライブラリ、ヘッダー、makfileを含む 例とgccツールチェーン
- Cコードから実行可能ファイルをビルドする ARMの場合、最適化してリンクします 必要に応じてライブラリを提供
- 提供されているを使用して電話に接続する adbインターフェイスとテスト 実行可能
アプリを販売する場合:
- Cコードからライブラリを構築
- シンプルなJavaコードを作成します このライブラリを使用
- このライブラリをアプリケーションに埋め込みます パッケージファイル
- アプリをテストする
- 販売または無料で配布
GoogleはNative Development Kit(NDK)をリリースしました( http:// wwwに準拠) .youtube.com / watch?v = Z5whfaLH1-E at 00:07:30)。
願わくは、Googleグループページ( http://groups.googleで情報が更新されます。 com / group / android-ndk )、まだリリースされていないということです。
簡単にダウンロードできる場所がわかりませんが、ドーナツブランチの下にあるGoogleのGitリポジトリからNDKのコピーを入手できると聞きました。
公式の立場では、これはあなたが「やりたい」ことではないようです 。 Androidデベロッパーリストのこのスレッドをご覧ください。 Googleは、さまざまなデバイス(CPU、ディスプレイなど)でAndroidを実行することを想定しています。したがって、開発を可能にする最良の方法は、Dalvik VMを対象とする(ポータブル)マネージコードを使用することです。このため、Android SDKはC / C ++をサポートしていません。
しかし、このページをご覧ください:
AndroidにはC / C ++のセットが含まれています さまざまなコンポーネントで使用されるライブラリ Androidシステムの。これら 機能は開発者に公開されています Androidアプリケーションから フレームワーク。
マネージアプリケーションフレームワークは、これらのライブラリの上に階層化されているようです。このページでは、標準Cライブラリ、メディア、3D、SQL liteなどのC / C ++ライブラリを一覧表示しています。
必要なのは、C / C ++を適切なCPU(G1の場合はARM)にコンパイルするコンパイラチェーンだけです。これを行う方法に関する簡単な説明は、こちらです。
私が知らないのは、これらのライブラリが提供するAPIの説明の入手先です。 SDKのどこかにヘッダーファイルが埋もれている可能性があると思いますが、ドキュメントが不完全/欠落している可能性があります。しかし、私はそれができると思います!
希望があります。記録のために、私はネイティブのAndroidアプリを書いていません-ほんのいくつかのシンプルなマネージドアプリです。
アンディ
nestedvm を使用して、C(または他のGCC言語)をJavaバイトコードに変換し、あなたのポートの基礎。たとえば、サイモンタサムズポータブルパズルコレクションのAndroidポートを参照してください。
この方法はNDKによって廃止されることを期待していますが、一部のネットワークまたは何かが人々の携帯電話のアップグレードを許可しない場合は、この方法は含まれない可能性があります。
Googleはすでに Google I / O 2011:AndroidにCおよびC ++ゲームを導入セッションを開始しています。 http://www.youtube.com/watch?v=5yorhsSPFG4
これは、cでアプリケーションを作成するためのNDKとAndroidのc ++の使用を理解するのに適しています。
コンソールベースのネイティブゲームをクロスコンパイルしてAndroidで実行する場合は、この記事では、同じ3つの方法が示されています。
1:スタンドアロンツールチェーンを使用した静的コンパイル
2:Android NDKのツールチェーンを使用したクロスコンパイル
3:AOSPソースコードを使用したクロスコンパイル
これを見ると、可能だと思われます:
- http://openhandsetmagazine.com/2007/11/running-c-native-applications-on-android-the-final-point/ (現在はWayBack Machine)
" Java言語のみがサポートされているという事実は、他の言語でアプリケーションを開発できないという意味ではありません。これは、モバイル向けアプリケーション開発の多くの開発者、ハッカー、および専門家によって証明されています。 Edgelibライブラリの背後にある会社であるElements Interactive B.V.の社員は、AndroidプラットフォームでネイティブC ++アプリケーションを実行することに成功しました。この時点でも、ディスプレイとサウンドにはまだ多くの問題があります…これには、S-Tris2ゲームとEdgelibの3Dアニメーションデモが含まれます。"
2009年以降、この問題に関する進展があります。
Necessitas -Android向けQt(C ++フレームワーク)
はじめにビデオ。
google ndkグループをご覧ください。有望な最初のバージョンNDKは2009年上半期に利用可能になります。
更新: そして、 http://がリリースされます。 android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
NDKが公式のJava APIを完全に網羅しているとは思いません。
http://developer.android.com/sdk/ndk/indexから.html#overview :
NDKは ネイティブのみの開発を可能にします アプリケーション。 Androidのプライマリ ランタイムはDalvik仮想のままです マシン。
Googleはまさにそれを可能にするNDKをリリースしました。
ここにあります: http://developer.android.com/sdk/ndk/1.5_r1/ index.html
c4droidをダウンロードしてからGCCプラグインをインストールし、SDにインストールできます。シェルから、GCCバイナリがあるディレクトリに移動し、それを呼び出してオンボード実行可能ファイルを作成します。
find / -name gcc
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
cat> test.c
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
./ arm-linux-androideabi-gcc test.c -o test
./ test
hello arm!
このブログ投稿は良いスタートかもしれません: http: //benno.id.au/blog/2007/11/13/android-native-apps 残念ながら、重要なものの多くは「読者の練習問題として残されています」。
チュートリアルは知りませんが、優れた開発ツールです。IdeaworksLabsのAirplay SDK。 (最近ブランド変更&quot; Marmelade &quot;)C / C ++を使用して、 Windows Mobile、iPhone、Android。気に入らなかった唯一のコンポーネントはGUIコンポーザーでした。バグの多いコンポーザーですが、いつでもメモ帳に置き換えることができます。
UbuntuのネイティブC / c ++ファイルlibstdc ++。*はx86(またはx86_64)バイナリですが、AndroidデバイスとエミュレーターはARMです。もちろん、正しいsonameを設定しても、これはとにかく機能しません。これは非常に単純な方法で、どこにもつながりません。 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ディレクトリ
Androidは独自のlibstdc + +サポートに制限があり、完全なlibstdc +にリンクする必要があります+ +。 A the job。
Android.mkにファイルを追加 LOCAL_LDFLAGS = $(LOCAL_PATH)/ libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
および LOCAL_CPPFLAGS + = -lstdc + + -fexceptions
をコンパイルできます
Androidの次のSDKバージョン(コードネームEclair?)でC / C ++ライブラリを許可する計画があります。これまで、Android Java SDKを介しては不可能です。ただし、巨大なオープンソースプロジェクトを取得し、独自のライブラリをロールして、独自のデバイスをフラッシュすることはできます...しかし、ライブラリを使用する場合は、カスタムビルドもフラッシュする必要があります。
簡単な答え:できません。
@ Backslash17:記事とインストール手順を含む以下のリンクを見ると、会社が取り組んできたのは、Androidフレームワークをバイパスして、エミュレーターで自己コンパイルされた実行可能ファイルを起動することだけです。エミュレータを入手したら、Telnetで接続してLinuxシェルを作成できます。もちろんLinuxプログラムを実行するのは簡単です。 しかし、ジェイルブレイク(ルートアクセスとも呼ばれます)を持たない携帯電話では機能せず、市場では提供できません。
Googleが他の機会を開いたり、誰かが言語XをDalvikバイトコード(DalvikはAndroidプログラムを実行するVM)にコンパイルするカスタムコンパイラを書かない限り、ネイティブコードを書くことはできません。