NDK環境搭建(Native Code的編譯,不須要Cygwin)


分類: android   475人閱讀  評論(0)  收藏  舉報

本文將講述內容以下: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


System and Software Requirements

Required development tools

  • For all development platforms, GNU Make 3.81 or later is required. Earlier versions of GNU Make might work but have not been tested.
  • A recent version of awk (either GNU Awk or Nawk) is also required.
  • For Windows, Cygwin 1.7 or higher is required. The NDK will not work with Cygwin 1.5 installations.
實際上,通過測試,在 android-ndk-r8e-windows-x86.zip ( Revision 8e)的版本,就不須要

Cygwin環境了,咱們只須要解壓,在JNI的build.cm裏指定好NDK引用的目錄(或者經過ndk-build

去編譯)就好了。


這把我坑的真夠厲害的。。。。網上寫的不少環境搭建指南都是基於比較舊的NDK版本。

Android developers官方竟然也沒更正過來。。。


順便再網上找了下,終於找到了一點信息:( http://www.kuwanzu.net/xinwenzixun/xs/9876.html)

NDK可以讓開發者在Android SDK的開發環境下進行native code的編譯(即在Android中使用C++的代碼)。

Windows下Android新版本的NDK使用很是便捷,不須要安裝任何Cygwin之類的Linux環境工工具。

配置NDK開發環境:

1 確保已經安裝好Android SDK和配置好開發環境。

2 下載Windows版本NDK,連接:zip

3 解壓縮zip包到任意路徑(例:d:\android-ndk)

4.配置環境變量。在path後增長d:\android-ndk(XP系統下:右鍵點擊個人電腦->屬性->高級->環境變量,

在系統變量中找到Path,在後面增長;d:\android-ndk)

通過以上步驟,NDK開發環境部署完畢。


NDK的使用:

將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:

  • libc (C library) headers
  • libm (math library) headers
  • JNI interface headers
  • libz (Zlib compression) headers
  • liblog (Android logging) header
  • OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers
  • libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).
  • A Minimal set of headers for C++ support
  • OpenSL ES native audio libraries
  • Android native application APIS

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.

相關文章
相關標籤/搜索