android关于去掉log打印
来源:互联网 发布:天津航空机电知乎 编辑:程序博客网 时间:2024/06/16 06:04
android开发中总会在代码中添加log,打印当前运行情况。log打印是调试时不可或缺的工具。
但是不可否认的是当log打印语句中出现空指针的时候程序会crash。又或是在循环里面打印了log信息,会消耗很多系统资源。
目标:我们希望在打包debug包的时候保留log信息,在release包时去掉log消息。
方法:在使用AS创建android项目以后在目录app\build\generated\source\buildConfig\debug\com…..上会创建一个BuildConfig.java文件,里面有一个静态常量叫做 DEBUG。利用这个常量来实现打带签名的release包时去掉log消息的目的。
在使用log时,用以下方式使用:
if(BuildConfig.DEBUG){ Log.i("xxx","xxxxx"); }
实验证明方法的实用性:
试验方法:两条log打印,一条带BuildConfig.DEBUG判断,一条不带。 打debug包,反编译apk文件看看文件中是否有log语句。 打release包,反编译apk文件看看文件中是否有log语句。
内容不多mainActivity,两条log信息,相互对比以下。代码如下
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(BuildConfig.DEBUG){ Log.i("mzy","is show debug?"); } Log.d("mzy","show me"); }}
1.打包debug版本的apk文件,然后进行反编译
反编译的mainActivity内容如下:
可以看到,在debug版本中反编译apk得到的文件中两次log打印都还在。也就是在debug版本中,加上BuildConfig.DEBUG判断是没有影响的。
2.打包带签名的release版本,再反编译
反编译的mainActivity内容如下:
可以看到,在这次的反编译文件中只显示了一次log打印,显示的是没有添加BuidConfig.DEBUG的那一句。
结论:在添加了BuildConfig.DEBUG判断后的log信息是不会被编译到apk文件中的。
说明:该方法是在一个android技术群里学习到的。非原创。我只是方法的实现者。
0 0
- android关于去掉log打印
- android 签名打包时去掉log日志打印(仅在debug包中打印log信息)
- Android关于Log不能打印的问题
- 【Robotium】关于Log打印
- Android log打印方法
- Android中打印log
- Android 内核打印Log
- Android NDK 打印log
- android log 信息打印
- android jni打印log
- android 不打印log
- 自定义Android Log打印
- android打印log日志
- Android JNI打印Log
- Android 自定义打印log
- android 自定义log打印
- Android Log打印等级
- Android studio关于含有转义字符的字符串无法Log,以及如何去掉转义字符问题
- Android 自定义属性
- 经典的软件测试用例(深入浅出)
- Android Handler消息机制从原理到应用详解
- 0001-产品分析(网易云音乐)
- String、StringBuffer与StringBuilder之间区别
- android关于去掉log打印
- Java常考面试题2--访问修饰符public,private,protected,以及不写(默认)时的区别?
- hadoop生产集群离线datanode(遇到的问题及解决方法)
- [笔记]JavaScript与Java的关系
- Java 中使用 try-catch-finally处理异常
- 双向队列
- oracle之delete和truncate命令用法和区别
- php fsockopen实现异步请求
- java设计模式之建造者模式