Android BuildConfig.DEBUG的妙用

在Android开发中,我们使用android.util.Log来打印日志,方便我们的开发调试。但是这些代码不想在发布后执行,我们并不想在软件发布后调试日志被其他开发者看到,现在我的方法是设置一个全局变量,标记软件为Debug模式还是Release模式。来看下代码:

public class Log {
    private static final boolean DEBUG = true;

    public static void i(String tag, String msg) {
        if (DEBUG)
            android.util.Log.i(tag, msg);
    }

    public static void e(String tag, String msg) {
        if (DEBUG)
            android.util.Log.e(tag, msg);
    }

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

    public static void v(String tag, String msg) {
        if (DEBUG)
            android.util.Log.v(tag, msg);
    }

    public static void w(String tag, String msg) {
        if (DEBUG)
            android.util.Log.w(tag, msg);
    }
}

这样打包发布之前只要改下DEBUG=false就行了,但是每次在发布之前都要手动去改这个变量,不是很方便,而且不排除开发者忘记改的情况。那么有没有更好更方便的做法呢?

ADT(r17)发布以后,Google为我们提供了一种新的调试机制,即BuildConfig.DEBUG。

ADT 17.0.0的New build features第二条如下描述:

Added a feature that allows you to run some code only in debug mode. Builds now generate a class called BuildConfig containing a DEBUGconstant that is automatically set according to your build type. You can check the (BuildConfig.DEBUG) constant in your code to run debug-only functions.

即:新增了一个特性,允许开发者只在Debug模式下运行部分代码。Builds会生成一个叫做BuildConfig的类,该类包含一个名为DEBUG的常量,其常量值会依据开发者的Build类型自动设定。如此,便可以利用BuildConfig.DEBUG来实现只在Debug模式下运行的代码。

如果你的ADT已经更新到17及以上版本,可以尝试在Eclipse中新建一个Android工程,你会发现和R.java同级目录下多了一个叫做BuildConfig.java的类,其内容如下:

/** Automatically generated file. DO NOT MODIFY */
package com.boohee.one;

public final class BuildConfig {
    public final static boolean DEBUG = true;
}

这样只需要改动一行代码就ok了,

private static final boolean DEBUG = BuildConifg.DEBUG;

在上面提到,DEBUG会根据Build类型自动设定。那么Build类型又从哪里区分呢?很简单,点开Eclipse的Project菜单便可见分晓,如下图:

 

可见,Build类型分为Build Project和Build Automatically,即手动和自动。

需要注意的是,如果直接通过Eclipse运行Project,则不论Build是手动还是自动,DEBUG均不会被设定为false。这是为什么呢?这就牵涉到Android 签名的问题,这里只简单提一下,不赘述:直接通过Eclipse运行Project,Eclipse会在工程Build完毕后在bin目录下生成一个apk,这个apk的签名是调试模式(debug mode),和发布模式(release mode)签名生成的apk略有不同。如此,该问题产生原因便浮出水面。

此时肯定会有人说,直接使用Android Tools–>Export Signed Application Package导出的release mode apk,其DEBUG就是false。这是不对的。在生成Release版时,需要区分Build的类型。如果选择的是自动Build,那么DEBUG仍然会被设定为true。所以在生成Release版时,请按照下面这个步骤进行打包,BuildConfig.DEBUG会被修改为false:

  1. Project -> Build Automatically,即取消Build Automatically
  2. Project -> Clean
  3. Project -> Build
  4. Android Tools -> Export Android application
时间: 2024-10-08 08:14:23

Android BuildConfig.DEBUG的妙用的相关文章

android中BuildConfig.DEBUG的使用

ADT(r17)中添加了一个新功能可以允许开发者只在Debug模式下允许某些代码.Build系统生成一个名称为BuildConfig的类,该类包含一个DEBUG 常量,该常量会根据您的Build类型自动设置值.您可以通过(BuildConfig.DEBUG) 常量来编写只在Debug模式下运行的代码. 如果有些代码不想在发布后执行,就可以使用该功能. 比如调试日志,你不想在软件发布后被其他开发者看到,过去的方式是你设置一个全局变量,标记软件为DEBUG模式还是发布模式. 1 public sta

Android BuildConfig使用

ADT(r17)中添加了一个新功能可以允许开发者只在Debug模式下允许某些代码.Build系统生成一个名称为BuildConfig的类,该类包含一个DEBUG 常量,该常量会根据您的Build类型自动设置值.您可以通过(BuildConfig.DEBUG) 常量来编写只在Debug模式下运行的代码. 如果有些代码不想在发布后执行,就可以使用该功能. 比如调试日志,你不想在软件发布后被其他开发者看到,过去的方式是你设置一个全局变量,标记软件为DEBUG模式还是发布模式. [java]  publ

Android实习札记(2)---妙用View的keepScreenOn保持屏幕常亮

Android实习札记(2)---妙用View的keepScreenOn保持屏幕常亮 --转载请注明出处:coder-pig 1)什么是屏幕常亮? 直译就是让我们的屏幕一直亮着呗,手机通常都带有省电模式什么的,比如设置无操作后,15秒 屏幕自动关闭,如果恰好我们的程序正在执行一些操作的话,突然的屏幕关闭可能会带来一些问题; 比如,应用正在安装或者应用正在更新,下载,处理数据等,于是乎,我们在特定的时候,需要让手机屏幕 保持光亮,那么要怎么让屏幕常亮呢? 2)怎么让屏幕常亮? 主流的两个方法: ①

Android实习札记(11)---妙用include解决布局重用问题

Android实习札记(11)---妙用include解决布局重用问题 --转载请注明出处:coder-pig 如果你已经知道include是什么,只是想知道怎么用,使用示例如下: ①布局文件引入layout  <include android:id="@+id/topbar" android:layout_width="match_parent" android:layout_height="wrap_content" layout=&q

【Android开发日记】妙用 RelativeLayout 实现3 段布局

在设计过程中,我们经常会遇到这样的需求: 把一条线3控制,左对齐左控制,右侧控制右对齐,中间控制,以填补剩余空间. 或者一列内放3个控件,上面的与顶部对齐,以下的沉在最底部,中间控件是弹性的.充满剩余空间. 情况一:水平布局 图示: 这是第一种情形.因为涉及到ImageView.想保持图片原比例不便使用LinearLayout的weight属性. 解决的方法: 1.外层套一个RelativeLayout 2.三个控件分别装进3个LinearLayout中.假如id分别为leftlayout,mi

安卓 运行、调试 配置 android Run/debug configurations

android  运行.调试 配置 android  Run/debug configurations 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:[email protected] E-mail: 313134555 @qq.com 运行.调试 配置 一般general 杂项miscellaneous 调试 分析profiling 部署deploy 标记flag 部署deployment 意识到aware 仪器 instrument 混合compound groovy

Android studio Debug效率提升

Android studio Debug效率提升,可以在控制台打印log的同时而不暂停程序的运行,尤其是当遇到复杂交互的时候,比如滑动,拖动,这时候程序暂停执行是特别恶心的.其实你可以更新打印信息而不需要重新编译或者部署. Suspend,找到打得断点,然后右键就会出现下面界面 (or ?+?/Ctrl+F8) ,把Suspend选项的勾选去掉即可.飞一般的Debug吧.......

Android jdb debug

在ubuntu上android的debug的方式有很多种,可以用eclipse,android studio.但是有的时候,为了方便也可以用命令行去debug.下面列出命令行debug的过程 xxx:~$ cd source/xxx:~/source$ cd packages/apps/Settings/xx:~/source/packages/apps/Settings$ adb shell ps | grep com.android.settingssystem 3119 202 55043

强制开启android webview debug模式使用Chrome inspect

一.普通h5页面手机端调试 此种方式最简单,在安卓手机中安装安卓版 chrome,USB 连接 PC,然后在 PC 的 chrome 浏览器中打开 chrome://inspect 即可. 三.基于webkit核心的webview端调试 从 Android 4.4 开始,webkit是支持远程调试的,不过需要将app的debug模式打开,可以使用如下代码:WebView.setWebContentsDebuggingEnabled(true); 由于大部分 App 的 debug 模式是关闭的,