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时,用以下方式使用:
|
|
实验证明方法的实用性:
试验方法:两条log打印,一条带BuildConfig.DEBUG判断,一条不带。
打debug包,反编译apk文件看看文件中是否有log语句。
打release包,反编译apk文件看看文件中是否有log语句。
内容不多mainActivity,两条log信息,相互对比以下。代码如下
|
|
1.打包debug版本的apk文件,然后进行反编译
反编译的mainActivity内容如下:
可以看到,在debug版本中反编译apk得到的文件中两次log打印都还在。也就是在debug版本中,加上BuildConfig.DEBUG判断是没有影响的。
2.打包带签名的release版本,再反编译
反编译的mainActivity内容如下:
可以看到,在这次的反编译文件中只显示了一次log打印,显示的是没有添加BuidConfig.DEBUG的那一句。
结论:在添加了BuildConfig.DEBUG判断后的log信息是不会被编译到apk文件中的。
说明:该方法是在一个android技术群里学习到的。非原创。我只是方法的实现者。