Android Studio22-NDK-LLDB调试

最是人间留不住,朱颜辞镜花辞树。这篇文章主要讲述Android Studio22-NDK-LLDB调试相关的知识,希望能为你提供帮助。
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  不显示LLDBCMake  NDK,说明你配置了国内镜像站点!!
要能上google官网才会显示,之前也是通过国内镜像,一直没显示出来!
Tools  >   Android  >   SDK  Manager  > 点击  SDK  Tools  选项卡。
勾选  LLDBCMake  和  NDK 

Android Studio22-NDK-LLDB调试

文章图片
 
已单独下载了  android-ndk-r11b所这里不再下载NDK!(最好勾选下载最新NDK)
点击  Apply  ,然后点击  OK  。
 
二,新建项目:
Android Studio22-NDK-LLDB调试

文章图片
 
勾上  include  C++  support
 
在最后一步时可选择不同的C++库如图:
Android Studio22-NDK-LLDB调试

文章图片
 
 
说明:
虽说是支持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  标志。
 
完成后结构如下:
Android Studio22-NDK-LLDB调试

文章图片
 
 
说明:
【Android Studio22-NDK-LLDB调试】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断点调试是一样的!


来自为知笔记(Wiz)


    推荐阅读