JNI 开发与调试流程
[TOC]
上一篇: Android JNI 开发环境配置
AS上使用断点调试的两种方法
前提条件:
是支持JNI的工程或者包含有支持JNI的工程, 打好的AAR文件不行
有完成的c,cpp源码
1. 直接Debug
单击Debug
按钮运行
每次都重新编译安装
2.用Attached方式
android程序运行起来后 ,单击按钮 运行, 然后选择要调试的进程
3. 崩溃点查找
A. Debuger窗口,变量窗口
如图,左边是函数调用堆栈,右边是每个函数执行是的变量信息
上边是单步调试按钮
B. 在怀疑崩溃的代码出加 Logcat输出
在JNI的c++代码中打印LOG的方式:
#include <android/log.h> __android_log_print(ANDROID_LOG_INFO,"LOG_TAG","__VA_ARGS__",...);
注意: 需要链接 log 库
AS查看程序性能
利用 Android Profiler , 可以查看内存泄露,CPU占用率等信息
DDMS查看性能
DDMS目前已不在AS中,需要要进入Android SDK 目录单独运行
不依赖AS的调试方法
1. 利用gdb
2. 利用adb查看日志
adb shell
ps 包名
找出程序运行pidlogcat|grep pid
输出过滤的日志
不依赖AS的工程编译方法
./gradlew :模块名:assemble [-P参数=参数值]
# window 用
gradle.bat :模块名:assemble [-P参数=参数值]
一个简单的JNI测试框架
下面是我写的一个简单的JNI测试框架可以在不需要写JNI接口的情况下,测试调试c++函数在Android上的运行,同时包编译Android的c++库的功能