android ndk 调试
#
分步阅读
百度经验:jingyan.baidu.com
android ndk的调试,目前主要有三种方式:
① 在 eclipse 上直接进行调试;
② 通过 VisualGBD+Visual Studio 进行调试;
③ 通过 Visual Studio 2015 进行调试(注:改方法目前支持纯C开发的调试)
百度云链接:http://pan.baidu.com/s/1dDtjbVz 密码:102n
方便他人亦是方便自己,如果觉得还行就点下**右边**的**投票**吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!
百度经验:jingyan.baidu.com
工具/原料
- Windows 8.1 x64
- jdk1.8.0_20
- adt-bundle-windows-x86_64-20140702
- android-ndk-r10c
- Visual Studio 2013
- VisualGDB-4.2r4
- Visual Studio 2015 Preview
百度经验:jingyan.baidu.com
前期准备
1
如果是真机开发的话,需要以下步奏(模拟器不需要):
① 安装手机驱动程序,(建议下载一个91助手安装);
② 开启 设定->开发者选项;
② 选中 设定->开发者选项->USB调试 ;
③ 为了防止手机调试的过程中锁屏,建议同时选中:
设定->开发者选项->保持唤醒
具体的如下图所示:
2
查询手机ABI类型:
通过运行android ndk自带的例子程序,来获取当前手机abi型号;
效果如下图所示:
为了方便大家使用,特将 HelleJni.apk 包上传百度云中
END
百度经验:jingyan.baidu.com
通过eclipse进行调试
1
① 导入android ndk自带的例子程序 NativeActivity
② 修改 AndroidManifest.xml 中的 Debuggable 为 true
③ 如果出现了“Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one”错误,可以进行如下图所示的修复操作
2
① 启动模拟器
② 右键工程 NativeActivity->android tools->Add Native Support
③ 编译(Ctrl + B)
② 右键工程 NativeActivity ->Debug As->Android Native Application
3
注:由于android ndk在eclipse上调试还不支持在初始化函数,所以我在触屏事件engine_handle_input中增加了断点;
① 使用快捷键 Ctrl+Shitf+B在 170行增加一个断点;
② 点击一下模拟器的屏幕;
③ 当断点运行到的时候的效果如下图所示:
END
百度经验:jingyan.baidu.com
通过VisualGDB进行调试
1
菜单->File->New->Project…->VisualGDB->Android Project Wizard->OK
注:路径中不要包含空格
其他的几个界面点击next和finish就可以了
具体的效果如下图所示:
2
① 启动模拟器;
② 使用快捷键F9在第33行增加一个断点;
③ 使用快捷键F5开始调试;
④ 程序启动后点击一下模拟器屏幕;
⑤ 运行到断点时的效果如下图所示;
END
百度经验:jingyan.baidu.com
通过Visual Studio 2015进行调试
1
菜单->File->New->Project…->Cross Platform->Native-Activity Application (android)->OK
如下图所示:
2
① 启动模拟器;
② 使用快捷键F9在第229行增加一个断点;
③ 将处理器从ARM调整为x86(我当前的模拟器是x86模式);
④ 使用快捷键F5开始调试;
⑤ 运行到断点时的效果如下图所示;
END
百度经验:jingyan.baidu.com
总结
1
通过上面的三种方法可以看出各自的差异:
① eclipse进行调试体验度最差,鼠标停留查看变量值,内存查看变量体验不好,但是才java和c混合编程的情况下的java开发很方便;
② VisualGDB 进行调试的体验其次,主要是内存查看目前不给力,支持java和c混合编程,但是java编程不方便;
③ Viusal Studio 2015体验度最好,但是只支持纯C开发,还不支持java和c混合编程情况下的调试;
2
方便他人亦是方便自己,如果觉得还行就点下**下边**的**投票**吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!
END
还没有评论,来说两句吧...