文档章节

Android Native C Log

我爱睡觉
 我爱睡觉
发布于 2017/06/24 17:36
字数 472
阅读 9
收藏 0

转:http://blog.csdn.net/dadahacker/article/details/6441811

Android Native C Log
//Rocky@20110524

我们在做Android java的时候,为了调试我们经常使用Log.i,Log.d等等log函数,这样非常方便我们调试使用。但是
如果是我们在使用Native C在做的时候,实际上也是可以利用LOG来输出调试信息的。查看方式一样。
有两种方式:

方式一:

    包含#include <utils/Log.h>
    我们查看这个文件system/core/include/cutils/log.h
    在开头发现

    #ifndef LOG_TAG
    #define LOG_TAG NULL
    #endif
       
    对于这个词我们的敏感度,我们知道,需要设置TAG信息。
    那么我们可肯定是需要在使用这个log.h前,定义一个LOG_TAG
   
    那么在Native C中我们常用的做法如下:
   
    #define LOG_TAG "kris_ril"
    #include <utils/Log.h>
   
    然后使用LOGI,LOGD,LOGV,LOGW,LOGE来输出log信息,例如:
   
    LOGI("Rocky:requestRadioPower=%d/n",onOff);
   
    然后在adb shell 中使用
    logcat -s kris_ril
    即可查看到输入结果。
   
方式二:
   
    第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog
    第二步:在要使用LOG的cpp文件中加入:
    #include <android/log.h>
    #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__)
    第三步:这样就可以使用了:LOGD("我要看到的调试信息^_^");
 
    这样,在logcat端看到的输出是:
    D/keymatch( 32):我要看到的调试信息^_^
 
    如果想改变输出中的各项内容,可以参考相应颜色的标示,比如,如果想定义LOGE,就可以把上面的ANDROID_LOG_DEBUG改成ANDROID_LOG_ERROR,同理,LOGI什么的也都以此类推:

    #define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "ProjectName", __VA_ARGS__)
    #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG ,  "ProjectName", __VA_ARGS__)
    #define LOGI(...) __android_log_print(ANDROID_LOG_INFO  ,  "ProjectName", __VA_ARGS__)
    #define LOGW(...) __android_log_print(ANDROID_LOG_WARN  ,  "ProjectName", __VA_ARGS__)
    #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR  , "ProjectName", __VA_ARGS__)
    当然,如果不嫌麻烦,也可以直接使用__android_log_print函数,而不define定义LOGxxx   

 

 

记录了以上两种方法,方便查阅。                                           

版权声明:本文为博主原创文章,未经博主允许不得转载。


本文转载自:http://blog.csdn.net/zhangmiaoping23/article/details/47155947

我爱睡觉
粉丝 3
博文 2120
码字总数 0
作品 0
南昌
私信 提问
Android JNI开发系列(十)JNI访问 Java 实例变量和静态变量

JNI访问 Java 实例变量和静态变量 Java 中的实例变量和静态变量,在本地代码中如何来访问和修改。静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过类名.变量名来...

蔡小鹏
2018/10/16
617
0
基于 Android NDK 的学习之旅----- C调用Java

许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现。 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态方法。 1、主要流程 1、 新建...

LiSteven
2013/03/19
161
0
Android JNI开发系列(十三) JNI异常处理

JNI 异常处理 JNI异常与JAVA处理异常的区别 JAVA 有异常处理机制,而JNI没有 如果JAVA中异常没有捕获,后面的代码不会执行,JNI会执行 JAVA编译时的异常,是在方法显示的声明了某一个异常,编...

蔡小鹏
2018/10/20
129
0
Android JNI开发系列(九)JNI调用Java的静态方法&实例方法

JNI调用Java的静态方法&实例方法 上面写了一个Java Bean类,里面定义了两个Native方法,分别用来调用,该类的静态方法和实例方法,实现在本地native方法里 JNI调用静态方法 注意: JVM 针对所...

蔡小鹏
2018/10/15
213
0
Android JNI知识简介

Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语...

长平狐
2013/12/25
90
0

没有更多内容

加载失败,请刷新页面

加载更多

IDEA Maven project: 'xxx/pom.xml' already exists in VFS

Failed to create a Maven project: ‘xxx/pom.xml‘ already exists in VFS idea创建项目后,发现项目有问题,删除后重新创建,提示错误如下。 解决办法 1.通过idea打开任意一个项目 2.File...

国产大熊猫
55分钟前
7
0
Flutter之 State 生命周期

State 的生命周期,指的是在用户参与的情况下,其关联的 Widget 所经历的,从创建到显示,再到更新最后到停止,直至销毁等各个阶段 不同的阶段涉及到特定的任务处理 State 的生命周期流程如下...

過愙
今天
11
0
零基础一年拿下BAT三家offer

背景 1、本人本科一本双非垫底的那种,硕士211。本硕电子通信,完全0基础,转行一年。 2、研一上第一学期上课+外派到老师合作公司写MATLAB。去年4月开始学习Java。 起步 1、实话说,刚决定转...

gzc426
今天
6
0
并行和并发的区别

并行和并发的区别 并行(Parallel)的重点在于同一时间点多个任务同时进行; 并发(Concurrent)的重点在于同一时间段有多个任务执行,不要求某个时间点有多个任务同时进行。...

StupidZhe
今天
42
0
java内存泄漏问题

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。Java中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中...

Bb进阶
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部