Android NDK发布后,java+C的编程方式成为android上性能编程的首选。 但在C中调试困难,因此能使用logcat成为必须的要求。 关于在Native代码中使用logcat,网上有很多说法,大部分有所欠缺,有的根本是错的。 要使用logcat,首先在代码中要引入 log的头文件。 #include <android/log.h> 然后你可以简单的通过 __android_log_write(ANDROID_LOG_ERROR,"Tag","Message"); 方法向logcat输出。 log 级别有很多 : ANDROID_LOG_UNKNOWN, ANDROID_LOG_DEFAULT, ANDROID_LOG_VERBOSE, ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL, ANDROID_LOG_SILENT, 这样写完以后,如果直接编译,就会报 __android_log_write 方法undefined. 怎么回事呢?关键是在设置编译选项上面。 在Android.mk文件里,可以指定一个LOCAL_LDLIBS的参数。如果不指定,那么编译的时候,只会引入默认的几个重要的lib,比如libc之类的。 如果要用log,那就要把 liblog给引进来。 网上很多的写法是 LOCAL_LDLIBS := -llog ,这在build static lib的时候没什么问题。如果是build shared lib,就会报个 cannot find -llog的错误。意思是找不到liblog.so这个库文件。 因此需要改成 LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 才可以正常编译。 其中-L参数是指定了搜索lib的路径。 下面是一个android.mk的内容的例子: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := TestNdkNetwork LOCAL_SRC_FILES := HttpConnection.cpp LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog include $(BUILD_SHARED_LIBRARY)
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "hello-ndk", __VA_ARGS__))

更多相关文章

  1. Ubuntu 虚拟机android平台搭建总结
  2. 为Android加入busybox工具
  3. Android(安卓)之ndk开发
  4. 如何调试跟踪Android源代码
  5. zbar android sdk源码编译
  6. Ubuntu11.10下编译android内核源码
  7. Android(安卓)程序的动态调试
  8. Android(安卓)Studio gradle配置详解
  9. Ubuntu下android源码下载与编译

随机推荐

  1. android使用StrictMode访问网络和优化UI
  2. Android listView FastScroll 快速查询数
  3. android Toast的时间长度
  4. 如何实现5个按钮成梅花状排列,并整体居中?
  5. Android版本检测/自动更新
  6. android 多媒体部分学习笔记十三----medi
  7. android判断手势滑动方向
  8. Android:hierarchy viewer unable to deb
  9. Android 总结:自定义键盘实现原理和三种实
  10. Android(安卓)studio SVN提交报错问题:sv