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環境変数の構成
Cygwinのインストールが成功したかどうかをテストします
cmdを起動してpath環境変数を表示するかcygwinを開きます.bat、テストに成功すればほとんど問題ありません.
初めてだいたいこんなに長い
さらなるテスト:
発生する可能性のある問題 git bash衝突閨主の前にgitが装着、bashもあるのでcygwinを実行する.batの後に間違った部屋に入って、簡単な解決方法は環境変数Pathの中でgitの配置を削除することで、更に直接的にgitを削除することです......どのbashに入るかは私にはわかりませんが、これは重要ではありません...... Cygwin環境変数にNDKディレクトリを追加
まずcygwinのインストールディレクトリを見つけて、home/<あなたのユーザー名>/.profileファイル、私のは
現在のユーザーの
その後、現在のユーザーをログアウトし、再ログインし、echo$PATH、PATHにNDKが含まれているかどうかを確認します.
コンパイルhello-jni
環境は組み立てて、プロジェクトをかき回してみて、自分で書くのが遅すぎて、直接NDKをコンパイルしてsampleの中のhello-jniを付属して、ここで cygwinを実行する.bat にカット実行コマンド 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)が含まれている.
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
発生する可能性のある問題
まず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
E:\NDK\android-ndk-r10\samples\hello-jni
ディレクトリ$cd/cygdrive/e/NDK/android-ndk-r 10/samples/hello-jni ndk-build
付: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)が含まれている.