在Android開發(fā)當中l(wèi)og是個很重要的東西比肄,方便開發(fā)者定位bug的位置葡公,但是打包正式發(fā)布的時候就不能再打印log了,一個影響性能汗侵,再著也回泄漏一些不應(yīng)該給別人知道的東西,很影響用戶體驗,所以我們需要到通過判斷安裝包是否是debug模式來決定是否要打印log晰韵,上代碼:
首先通過 ApplicationInfo 的這個屬性去判斷是否是 Debug 版本
import android.content.Context;
import android.content.pm.ApplicationInfo;
/**
* Created by ms on 2017/5/15.
*/
public classAppUtils {
private staticBooleanisDebug=null;
public static booleanisDebug() {
returnisDebug==null?false:isDebug.booleanValue();
}
public static voidsyncIsDebug(Context context) {
if(isDebug==null) {
isDebug= context.getApplicationInfo() !=null&& (context.getApplicationInfo().flags& ApplicationInfo.FLAG_DEBUGGABLE) !=0;
}
}
}
在自己的 Application 內(nèi)調(diào)用進行初始化冀值,
AppUtils.syncIsDebug(getApplicationContext());
這樣以后調(diào)用 AppUtils.isDebug() 即可判斷是否是 Debug 版本。
接下來就是輸出Log的事情了宫屠,對于網(wǎng)絡(luò)請求后臺總是會返回很長的一段json數(shù)據(jù)列疗,在logcat顯示不全,這樣對于開發(fā)者來說很不好浪蹂,特別是調(diào)試bug的時候抵栈。查詢了很多資料都說logcat默認打印的數(shù)據(jù)是4k,所以我們只能將我們要打印的數(shù)據(jù)切割成多個log打印坤次,看代碼
importandroid.util.Log;
importcom.maixian.mx_android.appmanager.AppUtils;
/**
* Created by ms on 2017/5/15.
*/
public classLogUtils {
public static voidi(String tag,String msg) {
if(AppUtils.isDebug())finishing(tag,msg,"i");
}
public static voidd(String tag,String msg) {
if(AppUtils.isDebug())finishing(tag,msg,"d");
}
public static voide(String tag,String msg) {
if(AppUtils.isDebug())finishing(tag,msg,"e");
}
public static voidv(String tag,String msg) {
if(AppUtils.isDebug())finishing(tag,msg,"v");
}
private static voidfinishing(String tag,Stringmsg,String type) {
if(msg.length() >4000) {
for(inti =0;i
if(i +4000
switch(type) {
case"i":
Log.i(tag,msg.substring(i,i +4000));
break;
case"d":
Log.d(tag,msg.substring(i,i +4000));
break;
case"e":
Log.e(tag,msg.substring(i,i +4000));
break;
case"v":
Log.v(tag,msg.substring(i,i +4000));
break;
}
}else{
switch(type) {
case"i":
Log.i(tag,msg.substring(i,msg.length()));
break;
case"d":
Log.d(tag,msg.substring(i,msg.length()));
break;
case"e":
Log.e(tag,msg.substring(i,msg.length()));
break;
case"v":
Log.v(tag,msg.substring(i,msg.length()));
break;
}
}
}
}else{
switch(type) {
case"i":
Log.i(tag,msg);
break;
case"d":
Log.d(tag,msg);
break;
case"e":
Log.e(tag,msg);
break;
case"v":
Log.v(tag,msg);
break;
}
}
}
}
這里將所有的log方法都封裝起來了古劲,很方便使用。