[转]发布程序时移除Android 调试Log

简介: 原文:http://blog.isming.me/blog/2014/06/30/remove-log-in-android/?utm_source=tuicool&utm_medium=referral 在Android开发中,我们使用android.util.Log来打印日志,方便我们的开发调

原文:http://blog.isming.me/blog/2014/06/30/remove-log-in-android/?utm_source=tuicool&utm_medium=referral

在Android开发中,我们使用android.util.Log来打印日志,方便我们的开发调试。但是对于正式发布的程序,我们并不希望这些Log信息显示,一方面对于用户来说影响机器性能,另一方面,其他开发者看到这些信息的时候,对我们应用程序的安全是有威胁的。所以,我们需要在正式发布时不让Log执行,或者将其移除。这里,我提供三种方法。

自己写一个Log的帮助类,在类中设置显示级别

示例代码如下,通过一个静态变量设置Log的显示级别。

public class Log {
  public static int logLevel = Log.VERBOSE;

  public static void i(String tag, String msg) {
      if (logLevel <= Log.INFO)
          android.util.Log.i(tag, msg);
  }

  public static void e(String tag, String msg) {
      if (logLevel <= Log.ERROR)
          android.util.Log.e(tag, msg);
  }

  public static void d(String tag, String msg) {
      if (logLevel <= Log.DEBUG)
          android.util.Log.d(tag, msg);
  }

  public static void v(String tag, String msg) {
      if (logLevel <= Log.VERBOSE)
          android.util.Log.v(tag, msg);
  }

  public static void w(String tag, String msg) {
      if (logLevel <= Log.WARN)
          android.util.Log.w(tag, msg);
  }
}

使用Proguard移除代码中的Log代码

修改Proguard的配置文件,添加以下配置:

-assumenosideeffects class android.util.Log {

public static int v(...);

public static int i(...);

public static int w(...);

public static int d(...);

public static int e(...);

}

可以根据需要在发布时候显示的级别来决定移除哪些级别的Log(需要移除的就放到配置中),同时Proguard的配置中还要注意不要有 -dontoptimize 这个配置。

比较

以上两种方法都可以达到开发阶段不显示Log,正式发布移除Log。但是使用Proguard的方式,可能不是所有程序都会进行Proguard的。这个呢,大家根据自己的项目需求,来选择合适的方法。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
监控 Android开发 C语言
深度解读Android崩溃日志案例分析2:tombstone日志
深度解读Android崩溃日志案例分析2:tombstone日志
82 0
|
4月前
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
58 0
|
6月前
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
64 0
|
6月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
138 0
|
27天前
|
前端开发 开发工具 iOS开发
mPaaS常见问题之真机预览与调试扫码调式 release包开启日志如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
19 0
|
2月前
|
网络协议 Shell Linux
安卓逆向 -- IDA动态调试
安卓逆向 -- IDA动态调试
23 0
|
2月前
|
Android开发 数据安全/隐私保护
安卓逆向 -- Jeb动态调试
安卓逆向 -- Jeb动态调试
37 1
|
7月前
|
小程序 Android开发 iOS开发
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
235 0
|
3月前
|
IDE 开发工具 Python