本文將講述內容以下:java
1. 什麼是NDKandroid
2.何時要用NDK編程
3.NDK環境該如何搭建windows
1. 什麼是NDKapp
NDK,我想應該是Native Development Kit的簡稱吧。NDK 提供了一系列的工具,ide
幫助開發者快速開發 C (或 C++ )的動態庫,並能自動將 so 和java 應用一塊兒打包工具
成 apk 。NDK 集成了交叉編譯器,並提供了相應的 mk 文件隔離 CPU 、平臺、 ABI post
等差別,開發人員只須要簡單修改 mk 文件(指出 「 哪些文件須要編譯 」 、 「 編譯特性性能
要求 」 等),就能夠建立出 so 。
2.何時要用NDK
使用NDK,並不會給咱們程序提升執行性能,反而會使程序複雜化。所以,儘可能避免使用NDK,
除非你真的須要使用本地庫(一般是C/C++庫),不要由於擅長使用C/C++編程而使用NDK。
Android Framework提供了兩種使用本地代碼的方式 :
1.經過JNI調用本地代碼
2.經過NativeActivity類調用本地代碼(從2.3版本開始支持)
3.NDK環境該如何搭建
搜索網上各路資料,會發現都提到了安裝Cygwin,以提供支持make 和 gcc的MinGNU環境。
就連官方的網站上,也是這麼說:
http://developer.android.com/tools/sdk/ndk/index.html#Contents
Cygwin環境了,咱們只須要解壓,在JNI的build.cm裏指定好NDK引用的目錄(或者經過ndk-build
去編譯)就好了。
這把我坑的真夠厲害的。。。。網上寫的不少環境搭建指南都是基於比較舊的NDK版本。
Android developers官方竟然也沒更正過來。。。
順便再網上找了下,終於找到了一點信息:( http://www.kuwanzu.net/xinwenzixun/xs/9876.html)
將C++源碼放入 <project>/jni/... 建立<project>/jni/Android.mk文件,文件中描述C++源碼相關的編譯配置 使用ndk-build命令進行編譯: cd <project> ndk-build 經過SDK對工程進行編譯,生成 .apk 文件.
The NDK includes a set of cross-toolchains (compilers, linkers, etc..) that can generate native ARM binaries on Linux, OS X, and Windows (with Cygwin) platforms.
It provides a set of system headers for stable native APIs that are guaranteed to be supported in all later releases of the platform:
The NDK also provides a build system that lets you work efficiently with your sources, without having to
handle the toolchain/platform/CPU/ABI details. You create very short build files to describe which sources
to compile and which Android application will use them — the build system compiles the sources and places
the shared libraries directly in your application project.