Android NDK環境構築

3982 ワード

Android NDK環境構築
NDKは何してるの?
NDKはNative Development Kitの略称である.Androidのクロスコンパイル環境を統合したツールセットで、開発者がCまたはC++のダイナミックライブラリを迅速に開発し、soとjavaプログラムを自動的にapkにパッケージし、Android上で実行するのに役立つ便利なMakefileを提供しています.
ダウンロードNDKとCygwin
NDKダウンロードアドレス
公式文書にはこうある.
ダウンロードしてどこまで解凍してもいいです
Windows上でCygwin 1.7以上を要求して、ダウンロードした後にずっとぱちぱちすればいいです
Cygwinはwindowsプラットフォーム上で実行されるunixシミュレーション環境であり、unix/linux操作環境を学習したり、unixからwindowsへのアプリケーション移植に役立ちます.これにより、linuxをインストールせずにNDKを使用してC、C++コードをコンパイルできます.
WindowsシステムでのNDKとCygwin環境変数の構成
Path=D:\software\cygwin;D:\software\cygwin\bin;D:\software\android-ndk-r10

Cygwinのインストールが成功したかどうかをテストします
cmdを起動してpath環境変数を表示するかcygwinを開きます.bat、テストに成功すればほとんど問題ありません.
初めてだいたいこんなに長い
E:\NDK\cygwin>Cygwin.bat
Copying skeleton files.
These files are for the users to personalise their cygwin experience.

They will never be overwritten nor automatically updated.

`./.bashrc' -> `/home/Administrator//.bashrc'
`./.bash_profile' -> `/home/Administrator//.bash_profile'
`./.inputrc' -> `/home/Administrator//.inputrc'
`./.profile' -> `/home/Administrator//.profile'

さらなるテスト:
cygcheck -c cygwin 
gcc --version
g++ --version
make --version
gdb --version

発生する可能性のある問題
  • git bash衝突閨主の前にgitが装着、bashもあるのでcygwinを実行する.batの後に間違った部屋に入って、簡単な解決方法は環境変数Pathの中でgitの配置を削除することで、更に直接的にgitを削除することです......どのbashに入るかは私にはわかりませんが、これは重要ではありません......
  • Cygwin環境変数にNDKディレクトリを追加
    まずcygwinのインストールディレクトリを見つけて、home/<あなたのユーザー名>/.profileファイル、私のは/home/Administrator/.profileです
    現在のユーザーの.profileを修正し、PATHを追加
    NDK=E:\NDK\android-ndk-r10
    export NDK
    PATH=$NDK:$PATH
    export PATH
    

    その後、現在のユーザーをログアウトし、再ログインし、echo$PATH、PATHにNDKが含まれているかどうかを確認します.
    コンパイルhello-jni
    環境は組み立てて、プロジェクトをかき回してみて、自分で書くのが遅すぎて、直接NDKをコンパイルしてsampleの中のhello-jniを付属して、ここでE:\NDK\android-ndk-r10\samples\hello-jni
  • cygwinを実行する.bat
  • E:\NDK\android-ndk-r10\samples\hello-jniディレクトリ$cd/cygdrive/e/NDK/android-ndk-r 10/samples/hello-jni
  • にカット
  • 実行コマンドndk-build
  • libsディレクトリで生成されたsoファイルの表示
    付:NDK詳細
    http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html
    一、NDK発生の背景
    Androidプラットフォームは誕生以来、C、C++の開発をサポートしている.周知のように、AndroidのSDKはJavaに基づいて実現されており、これはAndroid SDKに基づいて開発されたサードパーティアプリケーションがJava言語を使用しなければならないことを意味している.しかし、これは「サードパーティアプリケーションではJavaしか使用できない」という意味ではありません.Android SDKが初めて発表された時、Googleは仮想マシンDalvikがJNIプログラミング方式をサポートしていると発表した.つまり、第三者アプリケーションはJNIを通じて自分のCダイナミックライブラリを呼び出すことができる.つまり、Androidプラットフォームでは「Java+C」のプログラミング方式がずっと実現されている.
    しかし、Googleも、Dalvik仮想マシンに比べて、オリジナルのSDKプログラミングを使用するのは劣勢で、Android SDKドキュメントにはJNIの助けが見つからないと明らかにした.サードパーティのアプリケーション開発者がJNIを使用して独自のCダイナミックリンクライブラリ(so)の開発を完了したとしても、soはどのようにアプリケーションとともにapkにパッケージ化して配布するのか?この中には技術的な障害もあります.例えば、プログラムがより複雑で互換性が保障されにくく、Framework APIにアクセスできず、Debugの難易度が高いなどです.開発者は自分で吟味して使用する必要があります.
    そこでNDKは運に応じて生まれた.NDKのフルネームはNative Development Kitです.
    NDKのリリースにより、「Java+C」の開発方式が本格化し、公式サポートの開発方式となった.NDKはAndroidプラットフォームがC開発をサポートするスタートです.
    二、なぜNDKを使うのか
    1.コードの保護.apkのjavaレイヤコードは逆コンパイルされやすいため、C/C++ライブラリの逆送金は難しい.
    2.既存のオープンソースライブラリを簡単に使用できます.ほとんどの既存のオープンソースライブラリはC/C++コードで記述されています.
    3.プログラムの実行効率を高める.高性能を要求するアプリケーションロジックはCを用いて開発され、アプリケーションの実行効率が向上する.
    4.移植しやすい.C/C++でライブラリを書くと、他の組み込みプラットフォームでの再利用が容易になります.
    三、NDK紹介
    1.NDKは一連のツールの集合である
    NDKは、開発者がC(またはC++)のダイナミックライブラリを迅速に開発し、soとjavaアプリケーションを自動的にapkにパッケージ化するツールを提供しています.これらのツールは開発者にとって大きな助けです.
    NDKはクロスコンパイラを統合し、対応するmkファイルを提供してCPU、プラットフォーム、ABIなどの違いを隔離し、開発者はmkファイルを簡単に修正するだけで(「どのファイルがコンパイルする必要があるか」、「コンパイル特性の要求」などを指摘する)、soを作成することができる.
    NDKはsoとJavaアプリケーションを自動的にパッケージ化することができ,開発者のパッケージ化作業を大幅に軽減した.
    2.NDKは安定で、機能が限られたAPIヘッダファイル宣言を提供した.
    Googleは、このAPIが安定していることを明確に宣言し、後続のすべてのバージョンで現在発表されているAPIを安定的にサポートしています.このバージョンのNDKから、これらのAPIがサポートする機能は非常に限られており、C標準ライブラリ(libc)、標準数学ライブラリ(libm)、圧縮ライブラリ(libz)、Logライブラリ(liblog)が含まれている.