NDK之打印調試信息Log


第一步:gradle配置ndk

  ndk {
            moduleName "Iso8583Lib"
            ldLibs "log", "z", "m"
            abiFilters "armeabi", "armeabi-v7a", "x86" //輸出指定三種abi體系結構下的so庫,目前可有可無。
        }

第二步:在需要的C文件加載頭

#include <android/log.h>

第三步:定義打印方便使用的函數

#define LOG_TAG  "C_TAG"
#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

第四步:測試使用

#include <jni.h> #include <com_example_lanhe_android_jnistringdemo_jni_HelloWorld.h> #include <android/log.h>
#define LOG_TAG  "C_TAG"
#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) JNIEXPORT jstring JNICALL Java_com_example_lanhe_1android_jnistringdemo_jni_HelloWorld_getHelloWorld (JNIEnv *env, jobject thiz){ jstring hello = (*env)->NewStringUTF(env, "Hello Jni"); int helloLen=(*env) -> GetStringLength(env,hello); LOGD("hello.length=%d",helloLen); return hello; }

結果如下:

 

 

額外:使用 __android_log_write 也是可以的。

 

備注: 

調用其中的日志打印:

int __android_log_write(int prio, const char *tag, const char *text);

第一個參數為打印級別,為以下枚舉之一:

typedef enum android_LogPriority { ANDROID_LOG_UNKNOWN = 0, ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ ANDROID_LOG_VERBOSE, ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL, ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */ } android_LogPriority;

 參考資料:

http://blog.csdn.net/h183288132/article/details/50379450

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM