一: 先看看用 ndk-gdb 手动调试
这种方法只适用于手动编写 Android.mk 的情况,因为我们要手动 build debug 版本的 .so 文件。具体可以参考我的前一篇文章。
1 AndroidManifest.xml android:debuggable 设置为 true
2 切换到 jni 目录下执行 ndk-build NDK_DEBUG=1
这样就生成了 debug 版本的库文件,还多了一个 gdbserver 和 gdb.setup
3 运行安装启动程序
4 切换到你的 src/main 目录下执行 ndk-gdb
这时报了一个错误:
ERROR: Could not find gdb.setup under /Users/lesliefang/AndroidStudioProjects/MyApplication/app/src/main/libs/
那就把 armeabi 下面的 gdb.setup 文件拷贝到 ./libs 下面
重新执行,结果又报了一个错:
ERROR: Non-debuggable application installed on the target device.
Please re-install the debuggable version!
这是因为运行时 studio 没有把 gdbserver 打包到 apk 中, 怎么办呢,反编译后手动打包进去,重新打包签名就行了
安装启动运行,再次执行 ndk-gdb 成功
2 IDE 调试, android studio 目前对 NDK 的调试支持还只是实验阶段
具体可参考 http://tools.android.com/tech-docs/new-build-system/gradle-experimental
折腾了一番,也可以调试了
熟悉 java 的同学通常 C 和 C++ 不是很熟, 熟悉 C 和 C++ 的同学 java 通常不是很熟
所以可以先定义好接口,让熟悉C 和 C++的同学先开发完C程序,测试通过后,
让熟悉 java 和 JNI 的同学在外面再包一层,处理参数的传递和返回。复用已有的C程序也可以这么做。
JNI 可以直接用 eclipse for C、C++ 开发, JNI 接口都测试通过后再用 ndk 工具打成 .so 文件,
拿到 android studio 中, 对于 C或C++ 调用 android 中方法的情况可以先 mock
一些类和方法, 其实大部分情况都是 java 调用 C和C++, C和C++很少调用 java。
所以我觉得一般来说 ndk 可以分出来独立开发。
所有说直接在 android studio 中调试C和C++的时候也不多。
android studio ndk 调试的更多相关文章
-
Android Studio NDK环境配置
本文参考:Android Studio NDK环境配置及JNI使用方法:http://blog.csdn.net/tongseng/article/details/53005123 并添加自己的实践: ...
-
Android Studio &; eclipse 调试技巧
如上图设置多个断点,开启调试.想跨断点移动到下一个断点,点击如下图1箭头,程序将运行一个断点到下一个断点之间需要执行的代码.如果后面代码没有断点,再次点击该按钮将会执行完程序.点击箭头2指向的按钮,可 ...
-
Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
-
Android Studio断点调试
Android Studio断点调试 Android Studio包含一个debugger程序,可以帮助你在模拟器和真机上调试你的android应用.通过Android Studio的debugger ...
-
(转载) Android Studio你不知道的调试技巧
Android Studio你不知道的调试技巧 标签: android studio 2015-12-29 16:05 2514人阅读 评论(0) 收藏 举报 分类: android(74) ...
-
【Android】Android Studio NDK 开发
Android Studio NDK 开发 记录在Android Studio中NDK简单开发的步骤 用到的Android Studio版本为3.5. 配置NDK 下载NDK 一般在SDK下已经有自带 ...
-
Android Studio NDK编程初探
继上一篇学习了如何使用NDK编译FFMPEG后,接下来就是要学习如何在Android Studio中使用了. 经过参考和一系列的摸索,记录下具体步骤. 创建C++ Support的Android St ...
-
Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)
作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/52088039 最近在移植一个 JNI 项目, 比较纠结, A ...
-
Android Studio NDK编程-环境搭建及Hello!
一,下载 安装android-ndk开发包 NDK各个版本链接二,新建项目NDKDemo,选择空Activity就可以:(注:Android studio 2.2,可通过SDK Tools 添加LLD ...
随机推荐
-
简单的js菜单
<!DOCTYPE html> <html> <head> <title>hovertree</title><base target= ...
-
SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)(转)
使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...
-
使用HyperV虚拟机装系统
新建虚拟机 新建虚拟机 进行相关参数设置 选择系统安装镜像位置,名称及位置 指定代数一般为1代即可 为虚拟机运行分配内存 创建虚拟硬盘或连接已有虚拟硬盘,并分配硬盘空间 核对创建虚拟机相关信息 安装系 ...
-
node.js应用Redis数据库
node.js下使用Redis,首先: 1.有一台安装了Redis的服务器,当然,安装在本机也行 2.本机,也就是客户端,要装node.js 3.项目要安装nodejs_redis模块 注意第 3 点 ...
-
Windows Service installutil 部署时,出错的解决办法-原创
出错信息如下: ---------------------------------------------------------- ~~~~~... The Rollback phase compl ...
-
【转】Win7与Ubuntu 14.04双系统修改启动项顺序
原文网址:http://blog.sina.com.cn/s/blog_b381a98e0102v1gy.html 一.Ubuntu14.04采用默认安装方式的情况 采用默认安装方式,在win7下安装 ...
-
razor类型强制转换
一.如果后台得到的是一个List类型 1.后台得到数组数据 var dutyList = IOCFactory.R<IEmployeeContract>().BatchFind(m =&g ...
-
每周问题系列 - JavaFX界面没响应,Maven编译自动忽略rt包
本人博客文章网址:https://www.peretang.com/weekly-problem-session-week-31/ 前言 新开一个系列, 用来记录每周遇到的问题 JavaFX界面没响应 ...
-
Jquery 使用和Jquery选择器
jQuery中的*对象($) jQuery 中最常用的对象即 $ 对象,要想使用 jQuery 的方法必须通过 $ 对象.只有将普通的 Dom 对象封装成 jQuery 对象,然后才能调用 jQue ...
-
JS 日期比较方法
1.日期参数格式:yyyy-mm-dd // a: 日期a, b: 日期b, flag: 返回的结果 function duibi(a, b,flag) { var arr = a.split(&qu ...