Android NDK日志篇(二)
来源:互联网 发布:淘宝店铺怎么贷款 编辑:程序博客网 时间:2024/05/22 15:58
Android NDK日志篇
前言
本篇重要介绍一下NDK的日志相关的函数,学会了日志函数,可以帮助我们快速的定位问题,解决问题。
注意事项
NDK日志头文件
#include<android/log.h>
Android Studio配置
在CMakeLists.txt文件里面添加如下代码:
target_link_libraries( native-lib
log )
第一个参数是你的JNI库的名字
其中第二个参数log代表NDK目录下面的liblog.so文件
NDK日志函数
NDK日志级别
typedef enum android_LogPriority { ANDROID_LOG_UNKNOWN = 0, ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ ANDROID_LOG_VERBOSE, ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL, ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */} android_LogPriority;
常用的NDK日志级别:
ANDROID_LOG_VERBOSE对应Java的Log.v()函数
ANDROID_LOG_DEBUG对应Java的Log.d()函数
ANDROID_LOG_INFO对应Java的Log.i()函数
ANDROID_LOG_WARN对应Java的Log.w()函数
ANDROID_LOG_ERROR对应Java的Log.e()函数
ANDROID_LOG_FATAL这个是最严重的致命级别的错误,Java没有对应的日志函数和它对应,这个就相当于增强版的Log.e()函数
NDK日志函数
int __android_log_write(int prio, const char *tag, const char *text);
int __android_log_print(int prio, const char *tag, const char *fmt, ...)
int __android_log_vprint(int prio, const char *tag, const char *fmt, va_list ap);
prio参数代表日志的优先级,对应于android_LogPriority结构体
tag参数就是日志的Tag
text参数就是要输出的日志的文件
fmt参数就是要输出的日志的格式
...和ap参数就是要输出的日志的参数列表
示例如下:
extern"C"
JNIEXPORTvoidJNICALL
Java_com_kgdwbb_jnidemo_MainActivity_logTest(JNIEnv*env,jobjectthiz) {
__android_log_write(ANDROID_LOG_VERBOSE,"hello","helloworld");
__android_log_print(ANDROID_LOG_VERBOSE,"hello","hello%s","world");
}
Java控制台日志重定向
一般情况下Java通过System.out和System.err函数输出的内容都会显示在控制台里面,如果我们想把这两个函数输出的内容重定向到Android的日志里面,我们可以在Android Studio的命令行窗口输入如下命令:
adb shell setprop log.redirect-stdiotrue
adb shell stop
adb shell start
结束语
熟练使用Android的日志函数,可以帮助我们快速的定位问题,虽然我们可以通过Android Studio直接调试C/C++代码,但是有时候日志可能会更有帮助。
- Android NDK日志篇(二)
- Android NDK编程(二)
- Android中的NDK(二)
- Android NDK开发日志(一)
- Android NDK 日志
- Android NDK打印日志
- Android NDK打印日志
- Android NDK日志输出
- Android开发篇(二)-- JNI 与 NDK开发
- Android NDK开发篇(二):NDK相关介绍
- Android studio NDK成长记录(二)ndk-build
- Android NDK入门(二) -- STL
- Android NDK 开发之(二) 牛刀小试
- Android NDK 开发之(二) 牛刀小试
- 二---Android-NDK系列文章(1)
- Android NDK开发学习(二)
- Android NDK开发(二)数组
- Android——NDK开发(二)
- ASP.NET MVC实现权限管理以及权限分配
- linux命令说明
- nginx 编译安装与配置
- SpringBoot 自定义properties
- oracle11g 数据库可用内存使用和分配
- Android NDK日志篇(二)
- Android中Fragment生命周期
- 栈和队列的定义
- javascript基础部分的学习
- 自定义View (二) : onMeasure流程 MeasureSpec详解
- Java守护线程
- vue实战笔记--搭建开发环境脚手架
- 日拱一卒——160个crackme之#2
- Linux-yum命令简介