美文网首页
解决Android log打印不全及区分debug打包和正式发布

解决Android log打印不全及区分debug打包和正式发布

作者: 默_声 | 来源:发表于2017-11-07 09:32 被阅读0次

    在Android开发当中log是个很重要的东西,方便开发者定位bug的位置,但是打包正式发布的时候就不能再打印log了,一个影响性能,再着也回泄漏一些不应该给别人知道的东西,很影响用户体验,所以我们需要到通过判断安装包是否是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 内调用进行初始化,

    AppUtils.syncIsDebug(getApplicationContext());

    这样以后调用 AppUtils.isDebug() 即可判断是否是 Debug 版本。

    接下来就是输出Log的事情了,对于网络请求后台总是会返回很长的一段json数据,在logcat显示不全,这样对于开发者来说很不好,特别是调试bug的时候。查询了很多资料都说logcat默认打印的数据是4k,所以我们只能将我们要打印的数据切割成多个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方法都封装起来了,很方便使用。

    相关文章

      网友评论

          本文标题:解决Android log打印不全及区分debug打包和正式发布

          本文链接:https://www.haomeiwen.com/subject/nigyxxtx.html