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. 使用Docker编译Android系统内核
  2. android平台下音频编码之编译LAME库转码PCM为MP3
  3. Android工程的编译过程
  4. Android(安卓)平台的几个编译命令----make,mmm,mm,mma
  5. Android之NDK开发修补版
  6. 解决Flutter 编译异常path_provider
  7. Android(安卓)2.2 单点触摸支持的问题
  8. Android工程的自动创建,编译并生成apk
  9. cocos creator 编译通不过, 出现 The "android" command is depre

随机推荐

  1. BitWarden密码管理器自建
  2. Docker搭建Poste.io邮箱【保姆级教程】
  3. <JVM下篇:性能监控与调优篇>01-概述篇-02-
  4. <JVM下篇:性能监控与调优篇>03-JVM监控及
  5. <JVM下篇:性能监控与调优篇>补充:浅堆深堆
  6. <JVM下篇:性能监控与调优篇>补充:使用OQL语
  7. <JVM下篇:性能监控与调优篇>04-JVM运行时
  8. <JVM上篇:内存与垃圾回收篇>01-JVM与Java
  9. <JVM中篇:字节码与类的加载篇>01-Class字节
  10. <JVM下篇:性能监控与调优篇>05-分析GC日志