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断点调试是一样的!
Android Studio22-NDK-LLDB调试的更多相关文章
- NDK开发历程(一):android native code的调试方法
引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...
- android studio ndk 调试
一: 先看看用 ndk-gdb 手动调试 这种方法只适用于手动编写 Android.mk 的情况,因为我们要手动 build debug 版本的 .so 文件.具体可以参考我的前一篇文章. 1 And ...
- android studio2.3.3 模拟器 Jni函数调用C++对象,lldb调试this指针和相关变量显示无效的原因
android studio2.3.3 的版本中 Jni函数调用C++对象,对象调用相关的成员函数, lldb调试,变量跟踪窗口,this指针和相关变量显示无效的原因,但这些参数实际是有效的,只是de ...
- Ubuntu18.04上使用LLDB调试Chromium Android C++代码。
###动机###Chromium Android源代码庞大且复杂.在调试器LLDB下能帮助我们更好的理解代码流程.介绍使用LLDB调试器调试android上chromium的C++代码. [1] 编译 ...
- Android NDK开发调试
ndk-stack: https://developer.android.com/ndk/guides/ndk-stack?hl=zh-cn JNI开发: https://developer.andr ...
- Android Studio NDK环境配置
本文参考:Android Studio NDK环境配置及JNI使用方法:http://blog.csdn.net/tongseng/article/details/53005123 并添加自己的实践: ...
- 【转】 Android的NDK开发(1)————Android JNI简介与调用流程
原文网址:http://blog.csdn.net/conowen/article/details/7521340 ****************************************** ...
- Android下NDK开发环境搭建
Android下NDK开发环境搭建 1. AndroidNDK安装与配置 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...
- Android Studio xcode单步调试 WebRTC Android & iOS
mac环境 如何在 Android Studio 里单步调试 WebRTC Android 的 native 代码. WebRTC 代码下载 depot tools 是 chromium 代码库管理工 ...
- android studio ndk 开发入门
ndk 开发没什么神秘的ndk 说白了就是一个交叉编译的工具链,用它来生成各个CPU架构下的静态或动态链接库,linux 下就是 .a 和 .so 文件.原理就是 java 通过 JNI 和 C.C+ ...
随机推荐
- Android开发学习——开发调试工具-DDMS应用,ADB进程,Logcat
DDMS -- Dalvik debug monitor service 调试监控服务 对模拟器进行相关配置. ADB进程 Android debug bridge 建立eclipse和 ...
- HTML5-03 页面布局
概述 HTML 文档中的元素是一个接着一个排列的,只是简单地在在块级元素的前后加上拆行,是一种流水布局.但是,我们所见到的 Web 页面按照一定的规则布局排版的(通常是多列的),所以就要借助一定的方法 ...
- JavaScript的个人学习随手记(三)
JavaScript Window - 浏览器对象模型 Window 对象 以下window对象时使用均可省略window 所有浏览器都支持 window 对象.它表示浏览器窗口. 所有 JavaSc ...
- 阴影 box-shadow
语法: box-shadow:none | <shadow> [ , <shadow> ]* <shadow> = inset? && <le ...
- C#结合Jquery LigerUI Tree插件构造树
Jquery LigerUI Tree是Jquery LigerUI()的插件之一,使用它可以快速的构建树形菜单.呵呵 废话不说了,直入正题,下面介绍C#结合ligerui 构造树形菜单的两种方法 1 ...
- VS2015 Git使用教程——优化项目编辑日志
一.前言 公司项目中,修改日志管理是一件很繁琐的事情,而且项目维护时间长了,会遗留下各种有用或无用的日志,对于有代码洁癖的人来说,无疑是一种灾难. 1.公司日志记录结构: 2.Git日志记录结构: 二 ...
- Echarts 之二——地市联动数据统计
一.简介 通过地图可以更直观地展示各个地区的统计数据,能够更清楚地进行数据分析.有些场景下,我们不仅仅需要对每个地市进行统计分析.更需要对地市一下的区县进行数据统计,并进行联动.此事我们可以通过Ech ...
- Linux简介及常用命令使用3--vi编辑器
1.进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 [新建文件]vi +n filename :打开文件,并将光标置于第n行首 [比如:某个shell报错的行数时使用] ...
- KAFKA一异常处理记录
kafka-console-consumer.sh --topic TOPIC_KEYWORD --from-beginning --zookeeper localhost报异常,Exception ...
- NopCommerce Alipay 支付插件
NopCommerce Alipay 支付插件 1.查找及下载NopCommerce Alipay插件 http://www.nopcommerce.com/p/963/alipay-payment- ...