Android Native Development Kit(NDK)とは何ですか?


回答:


93

NDK(Native Development Kit)は、Androidデバイス用のC / C ++でプログラミングできるツールです。SDK(「コンパニオンツール」と呼ばれます)との統合を目的としており、プロジェクトのパフォーマンスが重要な部分にのみ使用されます。詳細については、こちらをご覧ください。


11
@ YoushaAleayoub-Androidデバイスでは、Javaで記述されたコードは、Javaバイトコードを解釈するシステム提供のプログラムであるJava仮想マシンで実行されます。C / C ++で記述されたコードは、CPUによって直接実行されるマシン命令にコンパイルされます。この後者のコードは、CPUにネイティブであるため、「ネイティブ」コードと呼ばれます。CPUが異なれば、必要なネイティブコード命令も異なることに注意してください。したがって、NDKを使用する場合、単一のハードウェアタイプまたはさまざまなCPUのコードを生成するオプションがあり、それらはすべて、アプリケーションの.apkファイルにパッケージ化されます。
テッドホップ2017

それで、AndroidでOpenCVを使用したい場合は、C ++バージョンを使用する方が良いですか?
user8663682 2018年

@ user8663682- Androidバージョンの使用をお勧めします。それでもNDKを使用する必要がありますが、Androidアプリに機能を公開する作業はすべて完了しています。
テッドホップ

56

NDKはアプリケーションのパフォーマンスを向上させる可能性があります。これは通常、多くのプロセッサにバインドされたアプリケーションに当てはまります。多くのマルチメディアアプリケーションやビデオゲームは、プロセッサを集中的に使用するタスクにネイティブコードを使用します。パフォーマンスの向上は、3つの原因からもたらされます。まず、ネイティブコードはバイナリコードにコンパイルされてOSで直接実行されますが、JavaコードはJavaバイトコードに変換され、Dalvik仮想マシン(VM)によって解釈されます。Android 2.2以降では、Just-In-Time(JIT)コンパイラがDalvik VMに追加され、プログラムの実行中にJavaバイトコードを分析および最適化します(たとえば、JITはバイトコードの一部を次のようにコンパイルできます)。実行前のバイナリコード)。ただし、多くの場合、ネイティブコードはJavaコードよりも高速に実行されます。

Javaコードは、Android上のDalvikVMによって実行されます。Dalvik VMは、ハードウェアリソース(メモリスペース、プロセッサ速度など)が制限されているシステム向けに特別に設計されています。

NDKのパフォーマンス向上の2つ目のソースは、ネイティブコードにより、開発者がAndroid SDKではアクセスできない一部のプロセッサ機能 NEON、単一命令複数データ(SIMD)テクノロジーなど)を利用できるようになり、複数のデータ要素を処理できるようになることです。並行して。特定のコーディングタスクの例の1つは、ビデオフレームまたは写真の色変換です。1920x1280ピクセルの写真をRGB色空間からYCbCr色空間に変換するとします。素朴なアプローチは、すべてのピクセル(つまり、200万ピクセル以上)に変換式を適用することです。NEONを使用すると、一度に複数のピクセルを処理して、処理時間を短縮できます。

3番目の側面は、重要なコードをアセンブリレベルで最適化できることです。これは、デスクトップソフトウェア開発の一般的な方法です。

不利益

NDKは、Android SDKで利用可能な多くのAPIに直接アクセスすることはできません。また、NDKで開発すると、アプリケーションが常に複雑になります。


19

Android NDKは、Android SDKと組み合わせてのみ使用されるコンパニオンツールであり、アプリケーション開発者はネイティブ(C / C ++)コードを使用してアプリのパフォーマンスが重要な部分を構築できます。

これにより、既存のコードの再利用と速度の向上という形でメリットが得られます。

以下のリンクをご覧ください。

リンク-1

リンク-2

リンク-3


8

AndroidのNDKはへのコンパニオンツールであるAndroidのSDKあなたはネイティブコードでアプリのパフォーマンスが重要な部分を構築することができます。CまたはC ++でプログラミングするときに、アクティビティの構築、ユーザー入力の処理、ハードウェアセンサーの使用、アプリケーションリソースへのアクセスなどを可能にするヘッダーとライブラリを提供します。ネイティブコードを記述した場合でも、アプリケーションは.apkファイルにパッケージ化され、デバイス上の仮想マシン内で実行されます。基本的なAndroidアプリケーションモデルは変更されません。

次のリンクもあなたの質問に答えます:

NDKとは何ですか?

ネイティブコードで開発する場合

NDKダウンロード

NDKアプリの作成方法

NDKの操作方法

AndroidNDKの10のヒント


3

Android NDKは、Androidアプリケーションにネイティブコードを利用するコンポーネントを埋め込むことができるツールセットです。

AndroidアプリケーションはDalvik仮想マシンで実行されます。NDKを使用すると、CやC ++などのネイティブコード言語を使用してアプリケーションの一部を実装できます。これにより、既存のコードの再利用や、場合によっては速度の向上という形で、特定のクラスのアプリケーションにメリットがもたらされます。

ソース:http//developer.android.com/sdk/ndk/overview.html

Android NDKは、Android SDKのコンパニオンツールであり、アプリのパフォーマンスが重要な部分をネイティブコードで構築できます。CまたはC ++でプログラミングするときに、アクティビティの構築、ユーザー入力の処理、ハードウェアセンサーの使用、アプリケーションリソースへのアクセスなどを可能にするヘッダーとライブラリを提供します。ネイティブコードを記述した場合でも、アプリケーションは.apkファイルにパッケージ化され、デバイス上の仮想マシン内で実行されます。基本的なAndroidアプリケーションモデルは変更されません。

ソース:http//developer.android.com/sdk/ndk/index.html


3

NDKは、アプリケーションのC / C ++コードを記述できるツールのセットです。たとえば、アプリケーションに重要な機能/パフォーマンスを追加し、それをC / C ++で記述してから、Eclipseなどを記述したいとします。 IDEではC / C ++を記述できません。その場合、NDKを使用してアプリに統合する必要があります。



2

Android NDK(ネイティブ開発キット)

Android Native Development Kit(NDK)は、ネイティブコードにコンパイルされるC / C ++でコードを作成する開発者です

なぜそれを使うべきなのでしょうか?

ソースコードはCPUのマシンコードに直接コンパイルされ(Javaのように中間言語ではなく)、開発者は最高のパフォーマンスを得ることができます

どうすれば使えますか?

ここで最高のチュートリアル

https://developer.android.com/ndk/index.html

https://www.androidauthority.com/android-ndk-everything-need-know-677642/

https://www.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html

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