Android用のCまたはC ++でアプリケーションを作成しますか?[閉まっている]


286

ゲームを開発/ Androidに移植しようとしていますが、それはCで行われ、AndroidはJavaをサポートしていますが、Cアプリをそこにインストールする方法があるはずだと確信しています。これを達成する方法を知っている人はいますか?


あなたが電話AFAIKを脱獄した場合にのみ。
Cogsy、2009年

64
iPhoneの脱獄ではないですか?
ロバート・グールド、

1
G1はデフォルトでrootアクセスを許可していません。また、「Android」環境以外で実行できるものに関しては多くの制限があります。Android内からネイティブコードを実行する方法を見つけることはあまり望みません。
Cogsy、2009年

2
しかし、私は市場からAndroid用のDOOMをダウンロードしました。したがって、それは実行可能である必要があります
Robert Gould

回答:


247

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


5
では、C#と.Netについてはどうでしょうか?-)
Avi

4
.netサポートが行われているのが見えない
vickirk


2
このリンクを参照してくださいandroidsnippets.wordpress.com/2012/08/30/...
KK_07k11A0585

2
.net / c#コードとandroidの場合は、xamarinをチェックしてください
bbqchickenrobot

41

AndroidのNDKあなたがそのようなCやC ++などの言語を使用して、ネイティブコードでアプリの部品を実装することができますツールセットです。特定の種類のアプリでは、これらの言語で記述されたコードライブラリを再利用するのに役立ちます。

ネイティブ開発を始める方法の詳細については、このリンクをクリックしてください

サンプルアプリケーションはここにあります


1
または2009、2010、2011、2012、2013
クリストファー・バーマン

19

通常、次のことを行う必要があります。

  1. Google Android NDKをインストールします。libs、ヘッダー、makfileの例、gccツールチェーンが含まれています
  2. ARMのCコードから実行可能ファイルを構築し、必要に応じて最適化し、提供されたライブラリにリンクします
  3. 提供されたadbインターフェースを使用して電話に接続し、実行可能ファイルをテストします

アプリの販売を検討している場合:

  1. Cコードからライブラリを構築する
  2. このライブラリを使用する単純なJavaコードを作成する
  3. このライブラリをアプリケーションパッケージファイルに埋め込む
  4. アプリをテストする
  5. 無料で販売または配布する

私はNDKの新人であり、AndroidでC lanを実行したいのですが、参照リンクがありますか?
Parag Chauhan、2012年

14

Googleはネイティブ開発キット(NDK)をリリースしました(http://www.youtube.com/watch?v=Z5whfaLH1-Eに従って)に 00:07:30)。

うまくいけば、情報はグーグルグループのページ(http://groups.google.com/group/android-ndk)で更新されますまだリリースされていない)でいます。

簡単なダウンロードの入手先はわかりませんが、ドーナツブランチの下のGoogleのGitリポジトリからNDKのコピーを取得できると聞きました。


12

公式見解で、これはあなたが「やりたい」と思ったことではないようです。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アプリを何も書いていない-ほんのいくつかのシンプルな管理アプリ。

アンディ


4
反対投票。現在、NDKはAndroidネイティブコードの公式コンパイラのようです。この答えは時代遅れです。
unixman83 2012

8

nestedvmを使用してC(または他のGCC言語)をJavaバイトコードに変換し、それを移植の基礎として使用できます。たとえば、Simon TathamsポータブルパズルコレクションのAndroidポートをご覧ください。

この方法はNDKによって廃止されると思いますが、一部のネットワークまたは何かが人々に自分の電話をアップグレードすることを許可しない場合は、そうではないかもしれません。


1
NDKが廃止されたとしても、NDKの代替として+1。
tobsen 2010年

nestedvmは他のデバイスと互換性がありませんか?
charo 2017年

8

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ソースコードを使用したクロスコンパイル


7

多分あなたはこれを探していますか?

http://www.mosync.com/

これは、c ++を使用するいくつかのモバイルプラットフォーム用に開発するための中間層です。


2
リンクが404見つかりません。サイトの所有者が宝くじに当選し、妻と離婚してバハマに引っ越す場合に備えて、元の投稿のコンテンツを回答に含めることは常に良い考えです。
Zuzlx

7

これを見て、それは可能であるようです:

「Java言語のみがサポートされているという事実は、他の言語でアプリケーションを開発できないことを意味するものではありません。これは、モバイル向けアプリケーション開発の多くの開発者、ハッカー、専門家によって証明されています。Edgelibの背後にある会社、Elements Interactive BVのメンバーライブラリは、AndroidプラットフォームでネイティブC ++アプリケーションを実行することに成功しました。それでも、現時点ではディスプレイやサウンドなどにまだ多くの問題があります。これには、S-Tris2ゲームやEdgelibの3Dアニメーションデモが含まれます。」







2

チュートリアルはわかりませんが、優れた開発ツール、Ideaworks LabsのAirplay SDKがあります。(最近、「Marmelade」に名称が変更されました)C / C ++を使用して、Windows Mobile、iPhone、Android向けのアプリを構築できます。私が気に入らなかった唯一のコンポーネントはGUIコンポーザーでした-バグの多いコンポーネントですが、いつでもメモ帳で置き換えることができます。


2

c4droidをダウンロードしてGCCプラグインをインストールし、SDにインストールできます。シェルから、GCCバイナリが存在するディレクトリに移動し、それを呼び出してオンボードで実行可能にします。

find / -name gcc

/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc

猫> test.c

#include<stdio.h>
int main(){ 
 printf("hello arm!\n");
return 0;
}

./arm-linux-androideabi-gcc test.c -o test

。/テスト

こんにちは!



2

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コンパイルすることができます


1

Androidの次のSDKバージョン(Codename Eclair?)でC / C ++ライブラリを許可する計画があります。これまでのところ、Android Java SDKを使用することはできません。ただし、巨大なオープンソースプロジェクトを取得し、独自のライブラリをロールして、独自のデバイスをフラッシュすることはできますが、ライブラリを使用したい人は、カスタムビルドもフラッシュする必要があります。


-7

短い答え:できません。

@ Backslash17:記事とインストール手順の次のリンクを確認すると、すべての会社は、Androidフレームワークをバイパスして、エミュレーターで自己コンパイルされた実行可能ファイルを起動するだけです。エミュレータを入手したら、telnetを実行してLinuxシェルを作成できます。もちろん、Linuxプログラムを実行するのは簡単です。しかし、それはジェイルブレイク(別名ルートアクセス)のない電話では機能せず、市場に出回れません。

Googleが他の機会を開くか、誰かが言語XをDalvikバイトコード(DalvikはAndroidプログラムを実行するVM)にコンパイルするカスタムコンパイラを作成しない限り、ネイティブコードを作成することはできません。


そうです、そういうふうに書いてみました。信じてください!
backslash17
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.