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)

更多相关文章

  1. Android编译系统分析大全
  2. NDK编程实例
  3. Mac下搭建android编译环境,编译cocos2d-x
  4. freetype 在android编译时上的一个makefile文件
  5. Android(安卓)studio 2.3.3+Dlib
  6. Google Android操作系统内核编译图文教程
  7. android-studio使用cmake编译ffmpeg实践
  8. Android编译详解之lunch命令
  9. Android(安卓)NDK编程入门

随机推荐

  1. Android非5.0系统下singleTask singleIns
  2. Android 后台任务(七)内存泄露
  3. Android滑动手势侦测方法
  4. 使用最新Android(安卓)Studio搭建Android
  5. android 定义圆角Button
  6. Android获取手机内置外置存储文件列表,完
  7. Android4.0 LCD和键盘 背光亮度设置
  8. android抓包流程
  9. Android 中用Intent提取缩略图和原始图像
  10. 解决listView挡住button的问题