ゲームを開発/ Androidに移植しようとしていますが、それはCで行われ、AndroidはJavaをサポートしていますが、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はネイティブ開発キット(NDK)をリリースしました(http://www.youtube.com/watch?v=Z5whfaLH1-Eに従って)に 00:07:30)。
うまくいけば、情報はグーグルグループのページ(http://groups.google.com/group/android-ndk)で更新されますまだリリースされていない)でいます。
簡単なダウンロードの入手先はわかりませんが、ドーナツブランチの下のGoogleのGitリポジトリからNDKのコピーを取得できると聞きました。
公式見解では、これはあなたが「やりたい」と思ったことではないようです。Android開発者リストのこのスレッドを参照してください。Googleでは、さまざまなデバイス(CPU、ディスプレイなど)で実行されるAndroidを想定しています。したがって、開発を可能にする最良の方法は、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アプリを何も書いていない-ほんのいくつかのシンプルな管理アプリ。
アンディ
nestedvmを使用してC(または他のGCC言語)をJavaバイトコードに変換し、それを移植の基礎として使用できます。たとえば、Simon TathamsポータブルパズルコレクションのAndroidポートをご覧ください。
この方法はNDKによって廃止されると思いますが、一部のネットワークまたは何かが人々に自分の電話をアップグレードすることを許可しない場合は、そうではないかもしれません。
GoogleはすでにGoogle I / O 2011:CおよびC ++ゲームをAndroidセッションに導入しています。これはhttp://www.youtube.com/watch?v=5yorhsSPFG4から入手できます。
これは、Android用のcおよびc ++でアプリケーションを作成するためのNDKの使用を理解するのに適しています。
コンソールベースのネイティブゲームをクロスコンパイルしてAndroidで実行したいだけの場合、この記事では同じ方法を3つ示しています。
1:スタンドアロンツールチェーンを使用した静的コンパイル
2:Android NDKのツールチェーンを使用したクロスコンパイル
3:AOSPソースコードを使用したクロスコンパイル
これを見て、それは可能であるようです:
「Java言語のみがサポートされているという事実は、他の言語でアプリケーションを開発できないことを意味するものではありません。これは、モバイル向けアプリケーション開発の多くの開発者、ハッカー、専門家によって証明されています。Edgelibの背後にある会社、Elements Interactive BVのメンバーライブラリは、AndroidプラットフォームでネイティブC ++アプリケーションを実行することに成功しました。それでも、現時点ではディスプレイやサウンドなどにまだ多くの問題があります。これには、S-Tris2ゲームやEdgelibの3Dアニメーションデモが含まれます。」
2009年以降、この問題は進展しています。
Necessitas - Android用のQt(C ++フレームワーク)を
はじめ、ビデオを。
見てみましょうグーグルNDKグループ、それは有望に見えるが、NDKの最初のバージョンは1H2009で利用できるようになります。
更新:リリースされました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
このブログ投稿は良いスタートかもしれません:http : //benno.id.au/blog/2007/11/13/android-native-apps 残念ながら、多くの重要なものは「読者への課題として残されています」。
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;
}
こんにちは!
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こちら
ソース\ 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
コンパイルすることができます
短い答え:できません。
@ Backslash17:記事とインストール手順の次のリンクを確認すると、すべての会社は、Androidフレームワークをバイパスして、エミュレーターで自己コンパイルされた実行可能ファイルを起動するだけです。エミュレータを入手したら、telnetを実行してLinuxシェルを作成できます。もちろん、Linuxプログラムを実行するのは簡単です。しかし、それはジェイルブレイク(別名ルートアクセス)のない電話では機能せず、市場に出回れません。
Googleが他の機会を開くか、誰かが言語XをDalvikバイトコード(DalvikはAndroidプログラムを実行するVM)にコンパイルするカスタムコンパイラを作成しない限り、ネイティブコードを作成することはできません。