C/C++開發,在NDK和源碼中輸出Log信息的方法!
NDK:
1、包含頭文件
#include
2、Android.mk中包含庫
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
上面這個一定要,不然出現error: undefined reference to '__android_log_print'
LOCAL_SHARED_LIBRARIES := libdl\
liblog\ #經測試在Eclipse中用NDK編譯可有可無,沒啥用!但在源碼中就必須是他,所以都加上吧!
libpre_AppUpgrade\
libpre_AppArea\
3、在你的jni文件中定義
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) // 定義LOGD類型
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) // 定義LOGI類型
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) // 定義LOGW類型
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) // 定義LOGE類型
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__) // 定義LOGF類型
adnroid4.2源碼中已經將LOGD等都加了一個頭,
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) // 定義LOGD類型
#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) // 定義LOGI類型
#define ALOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) // 定義LOGW類型
#define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) // 定義LOGE類型
#define ALOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__) // 定義LOGF類型
注意如果你不想在每一個jni文件中都定義上述宏,投機方法即可以定義在:D:\android-ndk-r9d\platforms\android-19\arch-arm\usr\include\android\log.h中!當然這種編譯也只能在你本機上使用啦~
源碼開發:
1、Android.mk中包含庫
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
LOCAL_SHARED_LIBRARIES := libdl\
liblog\ //源碼中開發一定的加上
libpre_AppUpgrade\
libpre_AppArea\
2、包含頭文件#include
3、注意在使用時記得包含庫的頭文件