Android Studio2.2更好的支持NDK開發,並可以像開發java一樣的DEBUG程序,不需要添加gradle-experimental插件,就可調試代碼!
一,下載 NDK 和構建工具
要編譯和調試本地代碼(native code),你需要下面的組件:
(1)The Android Native Development Kit (NDK) : 讓你能在 Android 上面使用 C 和 C++ 代碼 的工具集。
(2)CMake 外部構建工具。如果你准備只使用 ndk-build 的話,可以不使用它。
(3)LLDB : Android Studio 上面調試本地代碼的工匠。
注意:要在 Android Studio 中 使用 CMake 或者 ndk-build,你需要使用 Android Studio 2.2 或更高的版本,同時需要
配合使用 Android Plugin for Gradle 2.2.0 及以上的版本。
安裝上述組件:
注:如SDK Tools 不顯示LLDB,CMake 和NDK,說明你配置了國內鏡像站點!!
要能上google官網才會顯示,之前也是通過國內鏡像,一直沒顯示出來!
Tools > Android > SDK Manager >點擊 SDK Tools 選項卡。
勾選 LLDB,CMake 和 NDK 。
已單獨下載了 android-ndk-r11b所這里不再下載NDK!(最好勾選下載最新NDK)
點擊 Apply ,然后點擊 OK 。
二,新建項目:
勾上 include C++ support
在最后一步時可選擇不同的C++庫如圖:
說明:
雖說是支持C/C++,但是不完全支持C/C++的全部特性,必須得按照 jni的約定來:參照 jni完全手冊!教程參照:Jni入門: 官網demo
C++ Standard: 選擇C++庫
Toolchain Default: 默認 CMake 設置
C++ 11:支持C++11特性!
Exceptions Support(-fexceptions):
如果你想使用有關 C++ 異常處理的支持,就勾選它。勾選之后,Android Studio 會在 module 層的 build.gradle 文件中的 cppFlags 中添加 -fexcetions 標志。
Runtime Type Information Support(-frtti):
如果你想支持 RTTI,那么就勾選它。勾選之后,Android Studio 會在 module 層的 build.gradle 文件中的 cppFlags 中添加 -frtti 標志。
完成后結構如下:
說明:
native-lib.cpp: 自動生成的C++源文件
CMakeLists.txt:
CMake 腳本根據構建腳本的指令去編譯一個 C++ 源文件,也就是 native-lib.cpp ,並將編譯后的產物扔進共享對象庫中,並將其命名為 libnative-lib.so ,然后 Gradle 將其打包到 APK 中。
External Build Files
存放 CMake 或 ndk-build 構建腳本的地方。有點類似於 build.gradle 文件告訴 Gradle 如何編譯你的 APP 一樣,CMake 和 ndk-build 也需要一個腳本來告知如何編譯你的 native library。
注意 :
Android.mk與Application.mk,都是由工具自動管理,再也不用寫了,當然也可自定義.
編寫請參照:android.mk分析一文!
如果要在native-lib.cpp文件中添加多少方法,必須添加在 extern “c” { } 中,或者在每個方法前加 extern “c” , 否則會報找不到方法!
配置后,默認的是C++的,如要改成C語言后綴的,直接把native-lib.cpp,改在C,並去掉 extern “c”,
在CMakeLists.txt文件中native-lib.cpp也修改后綴名!
最后調試,與java斷點調試是一樣的!