最近Android需要在第三方C语言库的基础上实现音频与视频数据的解码,发现在Android studio中对C语言的支持感觉不是很好,于是采用了eclipse adt开发,在C语言中需要打印日志,步骤如下:
1,在C语言的实现文件中定义日志如下:
#define TAG "H264AndroidJNI"
#ifdef ANDROID
#include <jni.h>
#include <android/log.h>
#define LOGE(format, ...) __android_log_print(ANDROID_LOG_INFO, TAG, format, ##__VA_ARGS__)//ANDROID_LOG_INFO为对应该的日志级别
#else
#define LOGE(format, ...) printf(TAG format "\n", ##__VA_ARGS__)
#endif
2,在Android ADT中光有了定义还不够,还需要在编译的时候还需要在Android.mk中加入 “LOCAL_LDLIBS += -llog” 语句对日志进行链接,完整的Android.mk文件如下:
LOCAL_PATH := $(call my-dir)
#先编译一下静态库
include $(CLEAR_VARS)
LOCAL_MODULE := x264
LOCAL_SRC_FILES := libx264/arm_test/libx264.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
#先编译一下静态库完
#编译H264Android Module
include $(CLEAR_VARS) /把所有变量清除掉,然后开始编译我们的Module
LOCAL_MODULE := H264Android
#LOCAL_SRC_FILES := H264Android.c H264Encoder.c cabac.c common.c dsputil.c golomb.c h264.c h264utils.c mpegvideo.c
LOCAL_SRC_FILES := H264Android.c cabac.c common.c dsputil.c golomb.c h264.c h264utils.c mpegvideo.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/libx264/include
LOCAL_LDLIBS += -llog //对日志进行链接
#LOCAL_STATIC_LIBRARIES := libx264
#LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -lgcc
LOCAL_STATIC_LIBRARIES := x264
include $(BUILD_SHARED_LIBRARY)