2011-10-20 8 views
17

Androidアプリの開発を開始しようとしています。私は、以下の情報を抽出することができませんでしたWhat is NDK?ドキュメントからandroid ndk vs sdk - 機能が関係している場合

は、NDKが実際にSDKと比較した新機能を紹介使用していますか?

NDKを使用するとアプリケーションの複雑さが大幅に増加するため、パフォーマンスの向上に興味がない場合、NDKの他の理由はありますか?私が何を意味するか

は、例えば次のとおりです。

  • は(私はどちらもSDKを知っているか、NDKはこれを可能にする、私はちょうど私が何を意味するかの例として、それを使用する)は、Java SDKがないと言うことができます

    -restart電話これを許可しないが、いくつかのネイティブライブラリは - 私の質問に答えてはい、NDKはいくつかの機能を追加します。

Thanxは役に立ちました。

+0

これは意見に基づく質問ではありません。 – hendrix

答えて

9

私が知る限り、NDKを使用する唯一の理由は、アプリケーションから余分なパフォーマンスを絞り出し、ベアメタルに近づけることです。これらのことを行う必要がない場合は、おそらくNDKから離れるべきです。

また、Dalvik VMにはすでにかなり優れたパフォーマンスがあり、比較的簡単です。

+0

はJavaではありません.Dalvik VM – HaMMeReD

+0

@HaMMeReDはキャッチのおかげです。私の反応を編集しました。 –

+1

または今、ART VM! – CorayThan

13

NDKは、機能面でははるかに制限されています。

あなたがNDKから得たことは、あなたのアプリケーションをC++で書いてネイティブのARMコードにコンパイルすることです。 C++がJavaよりも好きな人は、Androidに移植したい既存のC++アプリケーションがある場合や、ネイティブコードだけが提供できる追加のパフォーマンスが必要な場合は、必ずNDKを使用する必要があります。

私はこれをやっていませんが、Javaコードから呼び出されたC++で書かれた選択された関数を使ってアプリが主にJavaで書かれたハイブリッドアプリを書くこともできます。

+4

この質問に遅れてコメントして申し訳ありませんが、NDKを使用するのは正当な理由ではないので、C++で記述することが明確であることを確認したかっただけです。 – DealerNextDoor

+1

@DealerNextDoor誰もC++を好むべきでないか、誰もNDKを使いたくないからです。 – CorayThan

+2

@CorayThanどちらもありません。純粋にあなたがJavaで書くことを望まないので、C++で書くのは悪い理由です。 NDKのダウンロードページに記載されているように、「NDKをダウンロードする前に、NDKがほとんどのアプリケーションに役立つわけではないことを理解する必要があります。 C/C++でのプログラミングを好むだけなので、アプリケーションに不可欠なものであればNDKを使うべきではありません。 – DealerNextDoor

17

NDKを使用する正当な理由がない限り、本当にSDKを使用する必要があります。理由は異なる場合がありますが、たとえば、あなたはNDKを使用することができます。

  • あなたはアンドロイド2.1(エクレア)のためのOpenGL ES 2.0を使用する場合、それはNDKを通じてのみ下盛です。 OpenGL ES 2.0のSDKサポートは、Froyoのバージョンから始まりました。あなたがのrenderScript

  • を使用したい場合、あなたは私のためにC/C++

9

で書かれた、アプリケーションのロジックの大部分を持っている場合は

  • は、私はそれがどのNDKを知ることが重要だと思いますモバイルアプリケーションの開発における強力なツールです。特にマルチプラットフォームアプリケーションを開発したい場合、NDKはこのドメインでは無敵です。 Android用のC + +で書かれた同じコードは、元のコードを変更することなく、iOS、Windows、または他のプラットフォームで簡単に移植して実行することができます。実際には複数のプラットフォーム上で動作するように開発されたアプリケーションの開発に多くの時間を節約します。ゲームやその他の古典的なアプリケーションとして。あなたはSDKではできません。

  • +1

    同意します。今日、Androidなどの1つのプラットフォームだけで良いアプリが欲しいと想像するのは難しいです。だから、一般的なプラクティスは、UIレイヤーを越えてすべてをネイティブコードにして、他のプラットフォームに簡単に移植できるようにすることです(いくつかはメーカー指定のものかもしれません)。 –

    1

    ネイティブメソッドはプラットフォーム固有のコードです。通常、CやC++などの言語で書かれ、ライブラリ(dll)に含まれています。このようなライブラリを利用するハイブリッドJavaアプリケーションを作成することは可能です。獲得お使いのデバイスまたはやAndroid OS

  • の特殊な機能へのアクセスを獲得余分な速度をネイティブメソッド

    1. を使用するための

      理由既存のレガシーコード

    2. の大きな体にアクセスする

    通常、NDKの優れた使用例は、CPU私のエンジン、信号処理、および物理シミュレーション

    ネイティブメソッドの大きな欠点あなたはクロスプラットフォーム機能を持っていないということです。

    ネイティブコードがわからない場合は、おそらくネイティブコードを使用する必要はありません。 Android NDKのドキュメントではこれについてよく説明しています。

    ... NDKはほとんどのアプリにとって有益ではないことにご理解ください。開発者の として、その利点とその欠点とのバランスをとる必要があります。 特に、Androidでネイティブコードを使用すると、一般的に のパフォーマンスが向上するとは限りませんが、アプリが常に複雑になります。 一般的には、NDKはアプリに不可欠である場合にのみ使用するようにしてください.C/C++でプログラムする方が簡単です。 ネイティブコードで開発する必要があるかどうかを調べる場合、要件については と考え、AndroidフレームワークAPIが必要な機能を に提供しているかどうかを確認してください。

  • 関連する問題