在发布正式版本前移除日志语句

原创 2015年11月21日 16:42:16

移除日志对于保持Logcat输出的清晰整洁是很重要的。另外,在代码中留下过多日志也会暴露一些开发者不想泄漏的敏感信息。

我认为,移除日志的最佳方法是使用ProGuard工具。ProGuard可以移除无用代码,或者使用语义模糊的名称来重命名类、变量和方法,以此达到压缩、优化和混淆代码的目的。这样。生成的APK体积更小,并且更不易被逆向工程。

当我们编译Android应用程序时,我们可以在项目根目录找到一个名为proguard.cfg的文件。有了这个文件,并不意味着ProGuard的功能默认是生效的,我们还需要开启这项功能。幸运的是,开启这项功能的方法比较简单:需要在项目根目录的project.properties文件中添加如下代码:

proguard.config=proguard.cfg

现在,ProGuard的功能就生效了。但是,该功能只在导出签名版的APK时才起作用。为了移除日志,还需要在proguard.cfg文件中添加必要的代码。要添加的代码如下所示:

-assumenosideeffects class android.util.Log {
    public static *** d(...);
}

上述代码告诉ProGuard:移除所有使用android.util.Log类中d()方法的地方,不管这个方法的参数和返回类型是什么。这个配置与Log类的d()方法匹配,因此所有调试日志都会被移除。

ProGuard工具提供了另外一种“润色”应用程序正式版本的方法。ProGuard可能会移除源码,所以开发者必须确认自己已经读懂了ProGuard的用户手册,并且为项目创建了正确的配置文件。此外,开发者还需要考虑移除的源码是否是应用程序正常运行所必需的。如果应用程序运行异常,请检查ProGuard配置文件中是否保留了所有必须的代码。

注意,ProGuard并不仅仅用于移除日志语句。当测试程序时,我们通常会在Activity中创建一些方法来填充输入框,我们可以同样使用ProGuard移除这些方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

BETA版是软件正式发行前的版本

BETA版是软件正式发行前的版本。虽然此版本已测试过并且认为可以安全发行,但其中还有未发现的小问题。 Beta:   很容易理解就是测试版,这个阶段的版本会一直加入新的功能。 RC:(Release ...
  • ssll2826
  • ssll2826
  • 2006年08月24日 18:16
  • 1076

什么版本测试通过就能发布?

问题的另外一个问法:如何称呼提交正式测试的软件版本?这个版本如果后续测试通过的话,就能直接发布,但是在提交测试的时候,不知道测试是否通过。 发布候选版?正式测试版?相对的,如何称呼就算测试通过也不能发...
  • zhangmike
  • zhangmike
  • 2014年07月24日 07:46
  • 2720

React Native从零开始(四)打包发布(Android)

React Native从零开始(四)打包发布(Android) 因为我们在调试React Native的时候需要连接手机或者是虚拟机,我们需要让其跟电脑处在同一网段接口上。那么如何将Re...
  • SuperBigLw
  • SuperBigLw
  • 2017年01月13日 14:38
  • 1439

ios app 未发布前进行大规模测试的一些思路及做法

正常情况,做好一个苹果的app,要想让大众用户下载安装使用,都是上传到app store,用户登录app store找到你开发的app下载安装使用。   但是app能否成功出现在苹果...
  • andrew57
  • andrew57
  • 2014年02月21日 14:25
  • 11315

Android打包中区分测试和正式环境

APK打包正式环境和测试环境注意最近在项目打包中,遇到一个问题,每次打包都要区分正式发布包和测试版本的包,主要是修改一下配置public static final boolean EXTERNAL_R...
  • baidu_31956557
  • baidu_31956557
  • 2016年10月12日 09:46
  • 2102

版本发布流程规范

一、产品需求确认 涉及人员范围:产品经理、UI设计师、研发工程师、测试工程师、需求部门对接人;   需求控制负责人:业务功能接口产品经理(后台产品、前台产品);   动作: 1、产品经理负责召集需求功...
  • qq_33588470
  • qq_33588470
  • 2016年12月07日 14:57
  • 3643

4.4、SSRS-报表的发布

报表的发布     1          获取报表发布地址   打开Reporting Service配置管理器-》点击“Web服务URL”,可以看到报表服务器webURL,它是用于发布报表...
  • soldierluo
  • soldierluo
  • 2015年11月17日 10:07
  • 643

as中apk签名和多渠道打包

1.什么是签名: 数字签名就是为你的程序打上一种标记,来作为你自己的标识,当别人看到签名的时候会知道它是与你相关的 2.为什么要签名 防止盗版,app市场可以检测签名未签名的apk无法安装,...
  • LAMP_zy
  • LAMP_zy
  • 2015年12月06日 17:09
  • 7121

一次上线总结

我很感谢让我跌倒在今天,而不是在我不可一世的将来,我必须重新梳理,坦然面对并牢牢记住...
  • vicky_yaoxj
  • vicky_yaoxj
  • 2014年04月13日 22:15
  • 1235

Androrid应用打包release版时关闭log日志输出

我们在Android开发的过程中,经常会使用Log来打印日志,方便观察结果输出,但是当我们打包应用,需要发布到应用市场时,显然是不能输出这些信息的。肯定不能采取批量删除或注释这种暴力的方法,下面我主要...
  • abc609691039
  • abc609691039
  • 2016年01月12日 14:26
  • 2351
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在发布正式版本前移除日志语句
举报原因:
原因补充:

(最多只允许输入30个字)