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. 【Android 开发】: Android 消息处理机制之三: Handler 中 sendM
  2. 获取Android SDK 源代码并在Eclipse中关联查看的方法
  3. Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细
  4. 如何调试跟踪Android源代码
  5. Android应用程序启动过程源代码分析(1)
  6. Google 将 Android 4.0.4 源代码送交 AOSP 开源项目
  7. android java代码的启动:app_process

随机推荐

  1. 一行 Python 代码实现并行
  2. 146、LRU 缓存 | 算法(leetcode,附思维导图
  3. Android——控制edittext输入字符长度,中
  4. 【Android】Android(安卓)SurfaceFlinger
  5. LinearLayout(线性布局)
  6. 版本更新
  7. android 开发设置全屏
  8. Android(安卓)实现自定义Toast工具类
  9. Android(安卓)如何屏蔽Home键
  10. 网页源代码查看器