• Android中C/C++的日志打印


    1、对于很多Android开发人员来说,Android的标准日志打印已经使用的非常习惯,如果在调试C/C++时使用的是printf或者cout这种方式打印日志,那查找起来会非常不舒服,为了使自己舒服起来,还是有必要使用android标准的日志方式打印日志的。先看一下效果:

    2、新建一个deleteFile.cpp文件,导入android标准日志打印的头文件<android/log.h>,并且通过宏定义简化日志的打印方式,具体实现如下。

    #ifndef _DELETE_FILE
    #define _DELETE_FILE
     
    #include <stdio.h>
    #include <stdbool.h>
    #include <android/log.h>
     
    #define LOG_TAG "JPEG_JNI"
    #define DEBUG
    #define ANDROID_PLATFORM
     
    #ifdef DEBUG
    	#ifdef ANDROID_PLATFORM
    		#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__))
    		#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__))
    		#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__))
    		#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__))
     
     
    	#else
    		#define LOGD(fmt, ...) printf(fmt"
    ", ##__VA_ARGS__)
    		#define LOGI(fmt, ...) printf(fmt"
    ", ##__VA_ARGS__)
    		#define LOGW(fmt, ...) printf(fmt"
    ", ##__VA_ARGS__)
    		#define LOGE(fmt, ...) printf(fmt"
    ", ##__VA_ARGS__)
    	#endif
    #else
    	#define LOGD(...);
    	#define LOGI(...);
    	#define LOGW(...);
    	#define LOGE(...);
    #endif
     
     
    int main(int argc, char **argv)
    {
    	int num = 10;
    	char* name = "hello world";
    	printf("start------------------
    ");
    	LOGI("[%s(L:%d)] num = %d
    ", __FUNCTION__, __LINE__, num);
    	LOGW("name = %s
    ", name);
    	LOGD("end------------------
    ");
     
    	return 0;
    }
     
    #endif

    3、编写Android.mk文件,这个文件的编写很简单,关键点是要加入跟日志相关的动态库liblog libutils,如下:

    LOCAL_PATH:= $(call my-dir)
     
    include $(CLEAR_VARS)
     
    LOCAL_SRC_FILES:= deleteFile.cpp
    LOCAL_MODULE:= deletenavi
    LOCAL_SHARED_LIBRARIES := liblog libutils
    LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
     
    include $(BUILD_EXECUTABLE)
    

      

     

    3、将项目拷贝到Android系统的packages/apps目录下编译,编译完后生产deletenavi镜像文件。

    4、将编译出来的deletenavi文件push到设备中的/system/bin目录,并且chmod 755 /system/bin/deletenavi赋755的权限,然后执行就会出现步骤1中的效果。

  • 相关阅读:
    java 装饰者模式与继承的区别
    Java学习笔记-多线程-创建线程的方式
    java IO流复制图片
    如何解决代码重复问题
    jdbc的基本应用
    java多线程
    java中的集合和数组
    Collections的应用
    Map集合的应用及其遍历方式
    qweb
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/13439818.html
Copyright © 2020-2023  润新知