C/C++知识点之Android Studio22-NDK-LLDB调试
小标 2019-01-21 来源 : 阅读 775 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之Android Studio22-NDK-LLDB调试,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之Android Studio22-NDK-LLDB调试,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之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 不显示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断点调试是一样的!

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程