Android Studio NDK開發與調試所需配置及其使用

  很多人習慣於Eclipse或源碼環境下開發JNI應用,但是隨着越來越多的Android開發者轉戰於Android Studio,使用Android Studio作NDK開發將越來越多,下面是筆者查找資料所做的筆記吧!

概念介紹

  JNI: JNI 的本意是Java Native Inteface的縮寫,即Java本地接口,是Java中爲了方便Java調用C/C++等本地代碼所封裝的一層接口。
  NDK: NDK 是 Native Development Kit的縮寫,是Google在Android開發中提供的一套用於快速創建native工程的一個工具集合。使用NDK可以很方便的編寫和調試JNI的代碼,此外NDK還提供了交叉編譯器,開發人員只需要簡單地修改mk文件就可以生成特定CPU平臺的動態庫。
  CMake: 一款外部構建工具,可與 Gradle 搭配使用來構建原生庫。如果您只計劃使用 ndk-build,則不需要此組件。
  LLDB: LLDB是一個高效的c/c++的調試器,是與LLVM編譯器一起使用,提供了豐富的流程控制和數據檢測,有效的幫助我們調試程序。Android Studio中也可以使用LLDB調試NDK程序,配合gradle-experimental插件一起調試NDK項目(Android Studio1.3版本已添加gradle-experimental插件),會更加的方便。

配置所需組件

  下載安裝步驟如下:
  1、Android Studio中在打開的項目中,菜單欄中選擇Tools->Android->SDK Manager。
  這裏寫圖片描述
  
  2、選中SDK Tools標籤,分別選中Cmake、LLDB和NDK。
  這裏寫圖片描述
  
  3、點擊Apply,然後在彈出對話框中點擊OK,會看到我們所選擇安裝的組件,之後選中Accept即可,等待安裝完成。
  這裏寫圖片描述
  

創建支持C/C++的原生項目

  創建支持原生代碼的項目,與創建其他Android Studio項目類似,只是需要額外添加一些支持:
  1、需要選中 Include C++ Support。
  2、在Customize C++ Support部分,可以選擇使用下列選項自定義項目:
   C++ Standard:使用下拉列表選擇您希望使用哪種 C++ 標準。選擇 Toolchain Default 會使用默認的 CMake 設置。
   Exceptions Support:如果您希望啓用對 C++ 異常處理的支持,請選中此複選框。如果啓用此複選框,Android Studio 會將 -fexceptions 標誌添加到模塊級 build.gradle文件的 cppFlags中,Gradle 會將其傳遞到 CMake。
   Runtime Type Information Support:如果您希望支持 RTTI,請選中此複選框。如果啓用此複選框,Android Studio 會將 -frtti 標誌添加到模塊級 build.gradle文件的 cppFlags中,Gradle 會將其傳遞到 CMake。
  
  創建完成後可以看到,新的項目與以前的相比,多了cppExternal Build Files組。
  1、cpp組中,您可以找到屬於項目的所有原生源文件、標頭和預構建庫。對於新項目,Android Studio 會創建一個示例 C++ 源文件 native-lib.cpp,並將其置於應用模塊的 src/main/cpp/ 目錄中。本示例代碼提供了一個簡單的 C++ 函數 stringFromJNI(),此函數可以返回字符串“Hello from C++”。
  2、External Build Files 組中,您可以找到 CMake 或 ndk-build 的構建腳本。與 build.gradle 文件指示 Gradle 如何構建應用一樣,CMake 和 ndk-build 需要一個構建腳本來了解如何構建您的原生庫。對於新項目,Android Studio 會創建一個 CMake 構建腳本 CMakeLists.txt,並將其置於模塊的根目錄中。

NDK調試

  Android Studio默認情況下是不支持NDK調試的,要支持NDK調試,需要做一些簡單的配置,步驟如下:。
  1、所需配置的LLDB組件上文已下載過,此時選中app->右鍵打開彈出框,選中Open Module Settings->進入Project Structure界面->設置Jni Debuggabletrue
  這裏寫圖片描述
  
  2、選中Run->點擊Edit Configurations,進入Run/Debug Configurations界面,點擊左上角加號,新建一個Android App,名字可以使用默認的Unnamed,也可以寫其他,筆者使用的是app-native,選中General標籤,設置Moduleapp,然後選中Debugger標籤,設置Debug typeNative 即可。
  這裏寫圖片描述
  
  3、完成NDK調試配置,可以使用NDK調試對支持原生代碼的項目進行調試運行,設置一個新的斷點,然後調試運行進入NDK的Debug模式,切換到LLDB標籤頁,進入到lldb的命令行,在這裏輸入LLDB的命令可以有效的幫助我們調試NDK程序。筆者輸入的: p hello,是打印hello變量的內容,更多的命令請讀者自行查找。
  這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章