Printf属于linux应用的打印机制,在androd系统当中没有对应的输出机制,只有在终端下执行时才能回显出来。
LOGE属于android专门定义的机制Android logger,专门打印除kernel外的所有应用的log输出。

AndroidNDK 开发时,想要在 .c 文件中打印一些调试信息的话,是不能使用 printf() 方法的,NDK 根本不支持,就算写了,在

LogCat 中也不会显示,正确的方式应该是 调用NDK 下的log.h 来打印Log 日志,具体方法如下:

1. 导入log头文件:在你使用的 .c/ .cpp 文件中,导入 log.h 头文件: #include<android/log.h>

在android.mak加上LOCAL_LDLIBS:=-llog

注意android.mak里有一行include$(CLEAR_VARS)
必须把LOCAL_LDLIBS:=-llog放在它后面才有用,否则相当于没写

2. 定义LOG 函数:先定义一个全局变量,再定义一些输出的LOG函数:

  1. #defineLOG"ffmpegDemo-jni"//这个是自定义的LOG的标识
  2. #defineLOGD(...)__android_log_print(ANDROID_LOG_DEBUG,LOG,__VA_ARGS__)//定义LOGD类型
  3. #defineLOGI(...)__android_log_print(ANDROID_LOG_INFO,LOG,__VA_ARGS__)//定义LOGI类型
  4. #defineLOGW(...)__android_log_print(ANDROID_LOG_WARN,LOG,__VA_ARGS__)//定义LOGW类型
  5. #defineLOGE(...)__android_log_print(ANDROID_LOG_ERROR,LOG,__VA_ARGS__)//定义LOGE类型
  6. #defineLOGF(...)__android_log_print(ANDROID_LOG_FATAL,LOG,__VA_ARGS__)//定义LOGF类型

上述代码中定义的函数,分别对应于Android 的Java代码中的 Log.d(), Log.i(), Log.w(),Log.e(), Log.f()等方法;

3. 使用上述方法:在.c 代码中直接按照一下方式书写:

  1. LOGD(LOG,"这是Debug的信息");
  2. LOGE(LOG,"程序错误!!!");

除此之外,更可以给在打印时带上一些变量:

  1. intwidth=10;
  2. intheight=20;
  3. LOGI(LOG,"长和宽分别为%d,%d“,width,height);

这种方式更加灵活,非常类似于 C语言中的 printf()函数。

今天在做项目的过程中,发现通过Jni不能往文件sd卡上写文件,后来发现要androidmanifest.xml中添加上读写文件的权限,手机自带的内存卡不需要此权限。
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

更多相关文章

  1. android构建自定义的视图组件
  2. Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/
  3. android sqlLite 及Adapter 自定义和Adapter 改变UI
  4. 浅析Android下的Android.mk文件
  5. 在Android下创建文件夹
  6. Android自定义控件解析
  7. Android Launcher开发(一)LiveFolder(实时文件夹) 完全解析

随机推荐

  1. mysql游标的原理与用法实例分析
  2. 简单了解MySQL union all与union的区别
  3. mysql8.0.19基础数据类型详解
  4. Mysql事务隔离级别原理实例解析
  5. Mysql5.7及以上版本 ONLY_FULL_GROUP_BY
  6. windows10下 MySQL msi安装教程图文详解
  7. mysql update语句的执行过程详解
  8. MySQL MyISAM默认存储引擎实现原理
  9. SQL注入漏洞过程实例及解决方案
  10. MySql如何使用not in实现优化