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-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断点调试是一样的!



来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/ut2016-progam/p/6066844.html

更多相关文章

  1. Android(安卓)Donut Makefile分析
  2. android反编译工具Apktool安装与使用
  3. Android(安卓)Studio导入Fresco项目编译报错unable to expand TA
  4. Android(安卓)Studio 使用WiFi(无线网)调试
  5. 用 Eclipse + GDB调试Android中C/C++程序
  6. Compile a native C Android(安卓)application
  7. OkHttp3实现原理
  8. Android动态调试--jeb调试apk
  9. 编译安卓源码以及下载Android内核

随机推荐

  1. MySQL 续集 04
  2. influxDB安装部署及入门
  3. Oracle如何使用spool导出utf8字符集的文
  4. memcache中的过期时间策略
  5. Linux 下使用 killall 命令终止进程
  6. Oracle 18c - 配置只读 OracleHome / DBC
  7. MySQL 续集 02
  8. 技术问答-20 ArrayList和LinkedList
  9. Oracle DB 18c - 手动升级到 18c 的完整
  10. 技术问答-21 线程 进程