web-dev-qa-db-ja.com

Android開発のためのC / C ++を知ることは重要ですか?

Java(C++/NDKなし)のみを使用して、美しく、高速で美しいAndroidアプリ(3D開発を含む))を構築することは可能ですか?

Android開発者の職位要件(欠員))を探すと、C/C++/NDKの知識が非常に重要であることがわかります。C++(OpenGL)のみを使用してテストタスクを構築する必要がある企業もあります。 。

8
MyTitle

ほとんどの場合、Android用に開発するためにc/c ++は必要ありません。

Android NDKの概要による

II。 Android NDK非目標:

NDKはではありませんAndroidデバイスで実行される一般的なネイティブコードを書くための良い方法です。特に、アプリケーション「Javaプログラミング言語で記述し、Androidシステムイベントを適切に処理して、「アプリケーションが応答しません」ダイアログを回避するか、Androidアプリケーションのライフサイクル。

ただし、既存のc/c ++ライブラリを使用する場合は、c/c ++が重要です。

例: Androidには組み込みのmp3エンコーダーがありません が、 opensource lame library を使用できます。

同じことが3D画像処理にも当てはまるかもしれません

6
k3b

Javaには多くのアプリケーションがあります。 Java=での開発はより速く、デバイスは最近非常に強力であり、アプリケーションが主にクールなユーザーインターフェイスである場合、一部のデータがネットから取り出された場合、効率は重要ではありません。 。したがって、C++の知識がなくても、確かにAndroidアプリケーション開発で仕事を得ることができます。

ただし、より複雑なアプリケーションにC++を選択する理由はいくつかあります。

  1. 今日まで、C++は依然としてすべてのプラットフォームに移植可能な唯一の言語です。一部のモバイルプラットフォームにはJavaがあり、一部にはCLI/CLR(.NET)がありますが、それらすべてで利用できるものはありません。 C++で移植可能なアプリケーションを作成することは多くの作業ですが、実行可能であり、多くの例で実証されています。
  2. Javaには、言語に組み込まれたメモリの非効率性があります。さまざまな比較を見ると、同様のタスクは通常、Java C++の場合よりも3倍から10倍多くのメモリを必要とします。したがって、メモリ内に大量のデータを必要とする何かを実行している場合、Javaは良い選択ではありません(状況はCLI/CLRの方がはるかに良いことに注意してください)。
  3. AndroidのJVMであるDalvikは、HotSpotのような最高のJVMにかなり遅れています。したがって、実際のコンピューティング能力を本当に必要とする何かをしている場合、JavaはAndroidでは適切な選択ではありません。しかし、実際にそれだけの能力を必要とするアプリケーションはほとんどありません。ほとんどのアプリケーションは、ただそこに座ってユーザーが何かをクリックするのを待つ時間の99%とその種類のアプリケーションをいじるJavaで結構です(ほとんどの場合、Pythonでも結構です)。

最初の理由は断然最も重要だと思います。

3
Jan Hudec

これは、アプリがどの程度「ネイティブ」であることが期待されるかに依存します。現時点では、エンドユーザーが要求する完全なUx/UIを提供するために、多くのアプリがネイティブである必要があるようです。 HTML5とJavaベースのAPI抽象化は、これを今後必要としないほど十分にうまくなりますか?誰が知っているか:-)

2
Martijn Verburg

C/C++コード用に変更する場合は完全に機能しますが、Javaコードが変更されると自動的に再構築されません。Java変更はエミュレーターに送信されません。端末。

1
Brian Parker