標籤:ati type bug tag proguard 日誌 方法 and pen
1 添加ndk對log支援
若需要添加ndk對log的支援,只需要通過以下2步即可實現。
1.1 修改Android.mk
如產生的庫檔案是“.so檔案”,則在Android.mk中添加如下內容:
LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog
如產生的庫檔案是“.a檔案”,則在Android.mk中添加如下內容:
LOCAL_LDLIBS:=-llog
1.2 在.c或.cpp檔案中引用log標頭檔
添加如下內容:
// 引入log標頭檔
#include <android/log.h>
// log標籤
#define TAG "這裡填寫日誌的TAG"
// 定義info資訊
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG,__VA_ARGS__)
// 定義debug資訊
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
// 定義error資訊
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)
ANDROID_LOG_INFO:是記錄層級;
TAG:是要過濾的標籤,可以在LogCat視圖中過濾。
__VA_ARGS__:是實際的日誌內容。
完成上面2步之後,我們就可以在.c/cpp檔案中添加LOGI、LOGD、LOGE去列印資訊!使用LOGI、LOGD、LOGE的方法和使用printf一樣
1.3日誌類型
1)Log.v 的調試顏色為黑色的,任何訊息都會輸出,這裡的v代表verbose囉嗦的意思,平時使用就是Log.v(,);
2)Log.d的輸出顏色是藍色的,僅輸出debug調試的意思,但他會輸出上層的資訊,過濾起來可以通過DDMS的Logcat標籤來選擇
3)Log.i的輸出為綠色,一般提示性的訊息information,它不會輸出Log.v和Log.d的資訊,但會顯示i、w和e的資訊
4)Log.w的意思為橙色,可以看作為warning警告,一般需要我們注意最佳化Android代碼,同時選擇它後還會輸出Log.e的資訊。
5)Log.e為紅色,可以想到error錯誤,這裡僅顯示紅色的錯誤資訊,這些錯誤就需要我們認真的分析,查看棧的資訊了。
如:
LOGI("user info----name:%s, age:%d, sex:%s.", "xxx", 18, "男");
執行上句代碼可以再logcat中列印出相應日誌。
注意:log列印的方法中不能傳入jstring,必須將jstring轉為c中的字元數組在傳入到方法裡面列印,否則會報錯。
特別需要強調的是在android studio 通過上層配置之後,啟動並執行時候會報錯:
提示
如何解決了,在app的gradle設定檔中設定:
ldLibs "log"
apply plugin: ‘com.android.application‘android { compileSdkVersion 25 buildToolsVersion "23.0.3" defaultConfig { applicationId "im.weiyuan.com.jni" minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" ndk{ moduleName "hello" //設定庫(so)檔案名稱 abiFilters "armeabi", "armeabi-v7a", "x86" ldLibs "log" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ } }}dependencies { compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, { exclude group: ‘com.android.support‘, module: ‘support-annotations‘ }) compile ‘com.android.support:appcompat-v7:25.2.0‘ testCompile ‘junit:junit:4.12‘}
android studio 中jni底層日誌的列印