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