您的位置:首页 > 移动开发 > Android开发

【Android】自动判断调试环境决定是否打印日志

2016-02-24 10:04 543 查看

【关键词】


日志
调试环境


【问题】


打包后,忘记了设置
LogUtil.DEBUG_MODE
=false;
,导致日志还可见,有没有什么办法自动判断运行环境来决定是否打印日志?


【解决方案】


eclipse特性:直接通过eclipse运行的时候,其debug属性为true,通过eclipse的导出功能打包时,其debug为false;
使用
LogUtil.isApkDebugable()
方法需要传入上下文,可以通过继承
Application并配置Manifest来实现;


【代码】


配置Manifest
<application
android:name="com.example.loutest.LouApp"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>


Application
publicclassLouAppextendsApplication{
publicstaticbooleanDEBUG;
@Override
publicvoidonCreate(){
//根据context判断debugable
DEBUG=ToolUtil.isApkDebugable(this);
super.onCreate();
}
}


日志帮助类
publicclassLogUtil{
//privatestaticfinalbooleanDEBUG_MODE=true;//之前是手动配置;
privatestaticfinalbooleanDEBUG_MODE=LouApp.DEBUG;//现在是自动判断;
privatestaticfinalStringTAG="Lou";
publicstaticvoidd(Stringtag,Stringmsg){if(DEBUG_MODE){Log.d(tag,msg);}}
publicstaticvoide(Stringtag,Stringmsg){if(DEBUG_MODE){Log.e(tag,msg);}}
publicstaticvoidi(Stringtag,Stringmsg){if(DEBUG_MODE){Log.i(tag,msg);}}
publicstaticvoidv(Stringtag,Stringmsg){if(DEBUG_MODE){Log.v(tag,msg);}}
publicstaticvoidw(Stringtag,Stringmsg){if(DEBUG_MODE){Log.w(tag,msg);}}
publicstaticvoidd(Stringmsg){d(TAG,msg);}
publicstaticvoide(Stringmsg){e(TAG,msg);}
publicstaticvoidi(Stringmsg){i(TAG,msg);}
publicstaticvoidv(Stringmsg){v(TAG,msg);}
publicstaticvoidw(Stringmsg){w(TAG,msg);}
}


判断Apk是否是Debugable
publicclassToolUtil{
publicstaticbooleanisApkDebugable(Contextcontext){
try{
ApplicationInfoinfo=context.getApplicationInfo();
return(info.flags&ApplicationInfo.FLAG_DEBUGGABLE)!=0;
}catch(Exceptione){
}
returnfalse;
}
publicstaticbooleanisApkDebugable(Contextcontext,StringpackageName){
try{
PackageInfopackageInfo=context.getPackageManager().getPackageInfo(packageName,1);
ApplicationInfoinfo=packageInfo.applicationInfo;
return(info.flags&ApplicationInfo.FLAG_DEBUGGABLE)!=0;
}catch(Exceptione){
}
returnfalse;
}
}


【参考资料】


《Android应用程序的debug属性》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: