在发布正式版本前移除日志语句
2015-11-21 16:42
309 查看
移除日志对于保持Logcat输出的清晰整洁是很重要的。另外,在代码中留下过多日志也会暴露一些开发者不想泄漏的敏感信息。
我认为,移除日志的最佳方法是使用ProGuard工具。ProGuard可以移除无用代码,或者使用语义模糊的名称来重命名类、变量和方法,以此达到压缩、优化和混淆代码的目的。这样。生成的APK体积更小,并且更不易被逆向工程。
当我们编译Android应用程序时,我们可以在项目根目录找到一个名为proguard.cfg的文件。有了这个文件,并不意味着ProGuard的功能默认是生效的,我们还需要开启这项功能。幸运的是,开启这项功能的方法比较简单:需要在项目根目录的project.properties文件中添加如下代码:
现在,ProGuard的功能就生效了。但是,该功能只在导出签名版的APK时才起作用。为了移除日志,还需要在proguard.cfg文件中添加必要的代码。要添加的代码如下所示:
上述代码告诉ProGuard:移除所有使用android.util.Log类中d()方法的地方,不管这个方法的参数和返回类型是什么。这个配置与Log类的d()方法匹配,因此所有调试日志都会被移除。
ProGuard工具提供了另外一种“润色”应用程序正式版本的方法。ProGuard可能会移除源码,所以开发者必须确认自己已经读懂了ProGuard的用户手册,并且为项目创建了正确的配置文件。此外,开发者还需要考虑移除的源码是否是应用程序正常运行所必需的。如果应用程序运行异常,请检查ProGuard配置文件中是否保留了所有必须的代码。
注意,ProGuard并不仅仅用于移除日志语句。当测试程序时,我们通常会在Activity中创建一些方法来填充输入框,我们可以同样使用ProGuard移除这些方法。
我认为,移除日志的最佳方法是使用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移除这些方法。
相关文章推荐
- Linux常用参数
- 定制导航栏
- AndroidAnnoatations 标注框架的学习的配置
- java中类的加载顺序
- [转载]浅谈组策略设置IE受信任站点
- ubuntu下解析udt数据包
- linux下vi命令大全
- BZOJ 1196: [HNOI2006]公路修建问题(二分+生成树)
- 自定义进度条---圆形以及线条
- C语言读取文件的内容
- 中断
- 微博入门第五六天
- C++ 11 auto & decltype
- 谈谈checkbox的几种状态
- Tensorflow 实现稠密输入数据的逻辑回归二分类
- 文本相似度算法
- 探秘C<stdarg.h>实现自己的printf( )
- 1008. 数组元素循环右移问题 (20)
- 编写存储过程,对于有8个以上学生报名的课程,费用95折
- linux eclipse安装