次の機能に興味があります。
- 完全に C++ で記述された Android マーケット向けのアプリを作成します (実際には既存の製品のポート)。
- 高速なスクリーン バッファ ピクセルのプッシュを使用します (または、これには OpenGL ES を使用します)。
- ユーザー入力を取得して C++ コードに送信します。
このようなアプリを Market 向けに作成することは合法ですか? 市場のポリシーは、そのようなことに対してどういうわけか厳格ですか?
Android 2.3 (Gingerbread) を搭載した NDK r5 の時点で、これは可能ですが、ネイティブ アプリをサポートするデバイスのみに Gingerbread が必要であると想定しています。
ネイティブ アクティビティのサンプルから:
Android SDK には、完全にネイティブなアクティビティを作成できるヘルパー クラス NativeActivity が用意されています。ネイティブ アクティビティを使用すると、完全にネイティブなアプリケーションを作成できます。NativeActivity は、Android フレームワークとネイティブ コード間の通信を処理するため、それをサブクラス化したり、そのメソッドを呼び出したりする必要はありません。AndroidManifest.xml ファイルでアプリケーションをネイティブとして宣言し、ネイティブ アプリケーションの作成を開始するだけです。
それは本当に私のお茶ではありませんが、Cでプログラムを書きたい場合に使用するAndroid NDK(ネイティブ開発キット)と呼ばれるものがあります.C++コンパイラのサポートがどのようになっているのかわかりません.
私が知る限り、あなたのアプリはほぼ 100% ネイティブ コードである可能性がありますが、そのように歩くと、おそらく Android ハードウェアでさまざまな CPU をサポートするのに苦労することになるでしょう。Java から開始されるようにネイティブ コードをブートストラップする必要がある場合、それはおそらくそれほど大きな問題ではありません。
「Android NDK」をグーグルで検索すると、いくつかの異なるチュートリアルが見つかりました。これは非常にミニマルな Hello Worldです。明らかに、Java に文字列を返すライブラリよりもはるかに多くのものが必要ですが、それは最初の出発点として適切であり、おそらく説明されているすべてのことを行う必要があります。NDK と Android をキーワードとして検索すると、適切な選択肢が表示されます。このようなリストは 1 年ほどで古くなり壊れる傾向があるため、ここにリストする理由はありません。
Google の公式Android 開発者サイトは、プラットフォームの新しいリリースに合わせて更新される予定であり、現在の NDK へのリンクがあると思います。
Gingerbread (Android 2.3) では、アプリ全体を C++ でビルドできるようです。
参照: http://phandroid.com/2011/01/11/android-developers-blog-awesome-ndk-leads-to-awesome-apps/
" NDK の最新バージョンである r5 では、Gingerbread のリリースに合わせて多くの大きな改善が行われました。最も重要なのは、Android 2.3 のネイティブ アプリケーションを完全に C++ でコーディングできることです。これは、プログラマーや開発者でさえ、 Java の知識がなくても、そのコードを 1 行も実装する必要はありません...」
このブロガーの信憑性を保証することはできませんが、私が読んだことから、これを行うことができるようです
There is no 100% native solution but what I think you are looking for is the Android NDK (Native Development Kit)
From their site "Please note that the NDK does not enable you to develop native-only applications. Android's primary runtime remains the Dalvik virtual machine."
I believe it lets you make calls to your own native code from an Android application
I have personally never used it for my games, but I am sure it would help on a lot of things (like being able to manage my own memory and not have "lag" do to the garbage collector)
このスレッドの会話が役に立ちます。 http://groups.google.com/group/android-ndk/browse_thread/thread/50362904ae0574cf
本質は、ネイティブのみのアプリを作ることができ、Androidマーケットもあなたを制限しません. ただし、ネイティブ開発のサポートが制限されているため、将来のリリースで壊れる可能性のある非標準機能の一部を使用する可能性が高くなります。
http://developer.android.com/guide/basics/what-is-android.html
「Android SDK は、Java プログラミング言語を使用して Android プラットフォームでアプリケーションの開発を開始するために必要なツールと API を提供します。」
http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars
一般的に、あなたはしません。JNI による限定的な C++ サポートもありますが、ほとんどの場合、Java コードを置き換えるのではなく、補完することを目的としています。C++ にはフレームワーク/API サポート (AFAIK) がないため、これを行うことは実際にはオプションではありません。