Android NDK 開發教程一:安裝NDK
Android OS 的基本框架為Linux-Java ,在介紹Android開發時用到的Android結構圖:
android 體系底層為Linux內核,之上提供一些C/C++函數庫,因此Android 應用開發也可以使用C /C++開發,這就是Android NDK開發包,但Android提供NDK開發包的主要目的並不是推薦開發人員使用C(Native 代碼)來編寫一般的Android應用,而是要使用Java代碼來編寫Android應用來更好的處理Android應用生命周期(Life-cycle)相關的事件以避免出現「應用程序不響應(ANR)」的對話框。
使用NDK主要是通過JNI 使用從Java代碼調用C代碼,也就是使用Native編程主要是為上層Java代碼提供庫函數(動態庫或是靜態庫的形式)而不是全部使用Native C代碼編寫整個Android應用(儘管藉助於少量Java代碼也是可以大部分使用C代碼來實現的)。使用NDK大部分情況是需要將一些已有的C函數庫移植到Android平台的所選擇的快捷方法,而不是作為提高代碼效率的手段。
安裝Android NDK的方法非常簡單:打開網頁http://developer.android.com/sdk/ndk/index.html
選擇合適的NDK開發包,下載解壓即可。註:安裝NDK之前需先安裝SDK開發包,參見Android簡明開發教程二:安裝開發環境。
Android NDK 的前兩級目錄如下:
.
├── build
│ ├── awk
│ ├── core
│ ├── gmsl
│ └── tools
├── docs
│ ├── ANDROID-ATOMICS.html
│ ├── ANDROID-MK.html
│ ├── APPLICATION-MK.html
│ ├── CHANGES.html
│ ├── CPLUSPLUS-SUPPORT.html
│ ├── CPU-ARCH-ABIS.html
│ ├── CPU-ARM-NEON.html
│ ├── CPU-FEATURES.html
│ ├── CPU-X86.html
│ ├── DEVELOPMENT.html
│ ├── HOWTO.html
│ ├── IMPORT-MODULE.html
│ ├── INSTALL.html
│ ├── LICENSES.html
│ ├── NATIVE-ACTIVITY.HTML
│ ├── NDK-BUILD.html
│ ├── NDK-GDB.html
│ ├── NDK-STACK.html
│ ├── openmaxal
│ ├── opensles
│ ├── OVERVIEW.html
│ ├── PREBUILTS.html
│ ├── sidenav.html
│ ├── STABLE-APIS.html
│ ├── STANDALONE-TOOLCHAIN.html
│ ├── system
│ └── SYSTEM-ISSUES.html
├── documentation.html├── GNUmakefile
├── ndk-build
├── ndk-build.cmd
├── ndk-gdb
├── ndk-stack
├── ndk.txt
├── platforms
│ ├── android-14
│ ├── android-3
│ ├── android-4
│ ├── android-5
│ ├── android-8
│ └── android-9
├── prebuilt
│ └── linux-x86
├── README.TXT
├── RELEASE.TXT
├── samples
│ ├── bitmap-plasma
│ ├── hello-gl2
│ ├── hello-jni
│ ├── hello-neon
│ ├── module-exports
│ ├── native-activity
│ ├── native-audio
│ ├── native-media
│ ├── native-plasma
│ ├── san-angeles
│ ├── test-libstdc++
│ └── two-libs
├── sources
│ ├── android
│ ├── cpufeatures
│ └── cxx-stl
├── tests
│ ├── awk
│ ├── build
│ ├── device
│ ├── README
│ ├── run-standalone-tests.sh
│ ├── run-tests.sh
│ └── standalone
└── toolchains
├── arm-linux-androideabi-4.4.3
└── x86-4.4.3
├── build
│ ├── awk
│ ├── core
│ ├── gmsl
│ └── tools
├── docs
│ ├── ANDROID-ATOMICS.html
│ ├── ANDROID-MK.html
│ ├── APPLICATION-MK.html
│ ├── CHANGES.html
│ ├── CPLUSPLUS-SUPPORT.html
│ ├── CPU-ARCH-ABIS.html
│ ├── CPU-ARM-NEON.html
│ ├── CPU-FEATURES.html
│ ├── CPU-X86.html
│ ├── DEVELOPMENT.html
│ ├── HOWTO.html
│ ├── IMPORT-MODULE.html
│ ├── INSTALL.html
│ ├── LICENSES.html
│ ├── NATIVE-ACTIVITY.HTML
│ ├── NDK-BUILD.html
│ ├── NDK-GDB.html
│ ├── NDK-STACK.html
│ ├── openmaxal
│ ├── opensles
│ ├── OVERVIEW.html
│ ├── PREBUILTS.html
│ ├── sidenav.html
│ ├── STABLE-APIS.html
│ ├── STANDALONE-TOOLCHAIN.html
│ ├── system
│ └── SYSTEM-ISSUES.html
├── documentation.html├── GNUmakefile
├── ndk-build
├── ndk-build.cmd
├── ndk-gdb
├── ndk-stack
├── ndk.txt
├── platforms
│ ├── android-14
│ ├── android-3
│ ├── android-4
│ ├── android-5
│ ├── android-8
│ └── android-9
├── prebuilt
│ └── linux-x86
├── README.TXT
├── RELEASE.TXT
├── samples
│ ├── bitmap-plasma
│ ├── hello-gl2
│ ├── hello-jni
│ ├── hello-neon
│ ├── module-exports
│ ├── native-activity
│ ├── native-audio
│ ├── native-media
│ ├── native-plasma
│ ├── san-angeles
│ ├── test-libstdc++
│ └── two-libs
├── sources
│ ├── android
│ ├── cpufeatures
│ └── cxx-stl
├── tests
│ ├── awk
│ ├── build
│ ├── device
│ ├── README
│ ├── run-standalone-tests.sh
│ ├── run-tests.sh
│ └── standalone
└── toolchains
├── arm-linux-androideabi-4.4.3
└── x86-4.4.3
在開發NDK之前,建議先看一下doc 子目錄下的文檔,後面的博客也會有所介紹。