Android Native C Log

Android中Jni学习总结--Jni中打印log信息 一、在jni中c++层进行log的打印 1、在需要使用log的cpp文件中加入 #include <android/log.h> 2、在需要打印的地方直接调用 __android_log_print(ANDROID_LOG_INFO,"test","value is %d\n",a);   二、常用日志函数 android/log.h头文件也声明了一系列函数,这些函... 阅读详情

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   

 

 

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

Android JNI调试技巧:使用Log输出调试信息 Android的日志库提供了一系列输出级别,包括VERBOSE、DEBUG、INFO、WARN和ERROR,我们可以根据需要选择适当的级别输出相应的调试信息。Android的日志库提供了一系列输出级别,包括VERBOSE、DEBUG、INFO、WARN和ERROR,我们可以根据需要选择适当的级别输出相应的调试信息。通过合理使用日志输出级别和宏定义,我们可以在调试过程中提供有用的调试信息,并在发布应用时进行灵活的控制。使用优化后的日志输出,可以在JNI代码中更灵活地控制调试信息的输出。 阅读详情

相关推荐

jni调试 c层在eclipse中输出信息

jni 调试在c语言层调用java层的函数输出c中的信息,便于调试

Android Java、NDK/JNI、C++打印log

Android Java、NDK/JNI、C++打印log

似霰的博客 2587

群晖NAS搭建Git Server避坑指南:从SSH配置到权限管理的完整流程

本文提供了一份详尽的群晖NAS搭建Git Server实战指南。文章从启用并安全配置SSH服务入手,深入解析了用户权限体系设计、SSH连接与仓库初始化、客户端SSH密钥配置等核心步骤,并提供了常见错误排查与生产环境加固方案,帮助开发者成功构建私有、安全的代码托管平台。

rock5的博客 420

Android jni 代码中打印 log,使用android/log.h

文章目录日志库在 CMakeLists 的配置日志库简介日志级别枚举:定义宏 日志库在 CMakeLists 的配置 CMakeLists.txt : #查找库:参数1,一个表示路径的变量,它会赋予库的路径值,且可用于后面的link; 参数2,库的名字 find_library( # Sets the name of the path variable. log-li...

打渔还是晒网 —— stone 1万+

手把手教你调试eDP接口:Main Link信号异常、AUXCH通信失败怎么办?

本文提供了一份详尽的eDP接口调试实战指南,重点解决Main Link信号异常与AUXCH通信失败两大核心难题。文章系统介绍了从工具准备、信号完整性分析(眼图、抖动测量)到AUXCH协议解码、HPD信号检查的完整排查流程,并分享了链路训练诊断与常见避坑技巧,帮助硬件工程师高效定位并解决显示问题。

Jerry的专栏 831

Spacedesk保姆级教程:用旧平板给Windows电脑当副屏,从安装到避坑一步到位

本文提供Spacedesk保姆级教程,教你如何将旧平板变成Windows电脑的副屏,从软件安装到网络配置、显示优化及声音交互,一步步避开常见陷阱。通过WiFi实现扩展屏功能,支持4K分辨率和60Hz刷新率,让闲置设备焕发新生。

weixin_42524945的博客 1万+

android-----JNI中的log打印

转自:http://blog.youkuaiyun.com/yf210yf/article/details/9305623 1. 导入log头文件 在你使用的 .c/ .cpp 文件中 导入 log.h 头文件  #include 2.在Android.mk 中 加上 LOCAL_LDLIBS :=-llog 注意

孤独的糖三角 3万+

立创EDA开源足轮机器人:基于STM32F407与ESP32的LQR自平衡与FOC驱动设计全解析

本文详细解析了基于立创EDA平台的开源足轮机器人项目。该项目采用STM32F407作为主控,ESP32负责无线通信,并应用LQR自平衡算法与FOC驱动技术,实现了机器人的稳定站立、移动转向及复杂地形适应能力。文章深入剖析了其硬件架构、软件设计及调试经验,为机器人运动控制学习提供了宝贵参考。

weixin_42608299的博客 232

Android:Native C code打印android log

1.在.h文件增加: //add android logcat #include 2.在android.mk文件增加: LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog  3.打印android log void androidLog(char* tag,char* msg) {   __android_log_writ

混迹于移动互联网和手机行业 1532

如何优雅地进行频谱分析—— 一行代码实现绘制MATLAB频谱、功率谱图

之前的文章里讲了关于信号频谱、能量谱的相关理论和MATLAB编程实现方法: Mr.看海:信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析) Mr.看海:频域特征值提取的MATLAB代码实现(频谱、功率谱、倒频谱) 不过对于刚刚开始进行这方面研究,或者对MATLAB不甚熟悉,抑或者不想花太多时间用在编程这件事上的同学,目前缺少一种足够便捷、高效、可靠的代码。 所以笔者想做这样一件事:编写一个函数,同学们只需要导入自己要分析的数据,并按照自己的需求设置部分选项,调用一行代码就可以实现绘制频

fengzhuqiaoqiu的博客 2万+

AUTOSAR进阶图解==>AUTOSAR_SWS_CANNetworkManagement

本文介绍了AUTOSAR架构中的CAN网络管理(CanNm)模块,主要内容包括: 模块概述:CanNm是协调CAN网络节点状态转换的基础组件,采用去中心化设计,通过周期性发送网络管理PDU保持网络活跃状态,支持网络唤醒、睡眠和部分网络功能。 架构设计:CanNm位于AUTOSAR中间层,连接上层通信管理器(ComM)和底层CAN接口(CanIf),包含状态管理、PDU处理和定时器管理等子组件。 状态机设计:定义了三种主要模式(总线睡眠、准备睡眠和网络模式)及其转换逻辑,网络模式又包含重复消息、正常操作和准备

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2041

Android native C 程序中输出LOG信息

<br />代码:<br />#include <stdio.h> #undef NDEBUG //打开LOGV/LOGI/LOGD #define LOG_NDEBUG 0 //打开LOGV #define LOG_NIDEBUG 0 //打开LOGI #define LOG_NDDEBUG 0 //打开LOGD //#undef LOG //#include <android/log.h> #include <cutils/log.h> int main

michaelpp的专栏 3761

SAP 实施:Waterfall vs. Agile —— 一场“结构性矛盾“的深刻比较先说结论:在 SAP 世界里,这从来不是“谁更好“的宗教问题,而是“你的项目 DNA 是什么“的战略选择。​

SAP 实施:Waterfall vs. Agile —— 一场"结构性矛盾"的深刻比较 先说结论:在 SAP 世界里,这从来不是"谁更好"的宗教问题,而是"你的项目 DNA 是什么"的战略选择。​ SAP 早已用 SAP Activate​ 给出了官方态度——它不是纯 Agile,也不是回头去搞旧 Waterfall,而是一个带质量门的混合架构。 1. 先回到本质:两者解决的是不同维度的风险 维度 Waterfall(传统 ASAP 路线)​ Agile(SCRUM/Kanban 式迭代)​

金牌架构师 336

A3```在android native c里打log

你可以在按程序开头加上这么一段: #include &lt;android/log.h&gt; #define TAG "LQH" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定义LOGD类型 #define LOGI(...) __android_log_print(ANDROI...

青山田边 342

vue3 - 最新详细实现高德地图绘制动态热力图详细教程,在某区域或城市地图上做“热力图层“展示人流量、旅游人口密度、热量图、全国地区地理热力图,利用颜色的深浅表示密度或强度等场景(详细示例代码教程)

vue3,nuxt3,高德地图,热力图,绘制热力图层,人流量,vue3使用高德地图实现某个区域热力图,vue3高德地图api加载热力图及关闭,接收热力图数据并渲染热力图,关掉热力图,Vue使用高德API制作热力图,热力图加载不出来,电子围栏围住热力图,vue3中使用高德地图渲染热力图组件,高德地图使用热力图详细教程,报错,卡顿,出不来怎么办,无法关闭,怎么解决这个问题,出错,城市名称,城市某个街道,城区,省份,市区,县城,乡镇,村,各省份的热力图,交通流量,人口流量,密度,旅游出行,人口数量,颜色介绍,深浅

✅ 精选推荐文章 5205

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

c++ log 打印android_在android C/C++ native编程(ndk)中使用logCat

最近在研究Android 2.3.3源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘:第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog第二步:在要使用LOG的cp...

weixin_29197835的博客 413

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android源代码介绍,Android-Log源码详解

Log.java源码目录:frameworks/base/core/java/android/util编译目录:frameworks/baseimage.png我惊奇的发现,Log.java里没有定义println_native方法,也没有System.loadLibary任何的so库。带着这个疑问,我们来看c层代码。android_util_Log.cpp源码目录:frameworks/base...

weixin_29660659的博客 309

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android native c code log. c代码增加日志方法实例--Android4.0

使用Native C写代码的时候,实际上也是可以利用LOG来输出调试信息的,网上很多方法没有能使用的,可以使用这个方法: Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= abc.c LOCAL_MODULE:= abc LOCAL_SYSTEM_SHAR

阿强的一亩三分地,一分耕耘一分收获 1603

android jni Log

http://hi.baidu.com/underalight/blog/item/c2d3d0f1742917b1a50f526f.html #define LOG_TAG    "jnilog" // 这个是自定义的LOG的标识,可用来定位 #undef LOG // 取消默认的LOG #define LOGD(...)  __android_log_print(ANDROID_LO

三少GG 1964

JNI 在native方法中打印日志

在AS中的native方法不能debug调试,为了便于开发调试,需要在native 方法中打印log,需要配置以下:1.build.gradle配置// 可以多写ndk{} ndk { ldLibs "log" } 2.C文件中引用#include <android/log.h>#define LOG_TAG "nativeprint" #define

itheimach的专栏 4285

Android中LOG机制详解(下)

2.2、类android.util.Log的JNI实现 类android.util.Log有两个Native方法,它们通过JNI用c/c++中实现。 public static native boolean isLoggable(String tag, int level); public static native int println_native(int bufID,int

Robin Hu的专栏 2824

Android 系统下的log文件【转载】

Android 系统中java和C++使用Log,并可以被logcat捕获

weixin_60053402的博客 674
上一篇: AT指令简编
下一篇: Android NFC Porting 1
dadahacker
博客等级 码龄20年 78粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值