android关于去掉log打印

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技术群里学习到的。非原创。我只是方法的实现者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值