关于android中的BuildConfig
2016-07-21 17:16
423 查看
版本:android stuido 2.2
这个类的源码一般在
app\build\generated\source\buildConfig\debug\包名…
官方文档有这样一段话:
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.
当然实现这种功能方法很多,我们完全可以自己实现一个MyLogUtil类增加一个开关变量来控制,比如;
在程序发布时把DEBUG变量改为false即可。但是这样其实不太方便,还要手动改代码,万一忘记了呢??
BuildConfig中的DEBUG字段会根据当前工程设置的编译选择自动的赋值,省去了手动改的麻烦,所以我们的程序变为这样:
什么是BuildConfig
BuildConfig其实是个java类,在我们编译android工程时它自动生成。类的实现基本是下面这样的:public final class BuildConfig { public BuildConfig() { } public static final boolean DEBUG = false; public static final String APPLICATION_ID = "com.example.mylibrary"; public static final String BUILD_TYPE = "release"; public static final String FLAVOR = ""; public static final int VERSION_CODE = 1; public static final String VERSION_NAME = "1.0"; }
这个类的源码一般在
app\build\generated\source\buildConfig\debug\包名…
BuildConfig的作用
BuildConfig最常用的功能应该作为日志开关。大部分时候我们希望程序在debug模式下可以输出日志,而release时不输出。官方文档有这样一段话:
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.
当然实现这种功能方法很多,我们完全可以自己实现一个MyLogUtil类增加一个开关变量来控制,比如;
public class MyLogUtil { 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); } //.... }
在程序发布时把DEBUG变量改为false即可。但是这样其实不太方便,还要手动改代码,万一忘记了呢??
BuildConfig中的DEBUG字段会根据当前工程设置的编译选择自动的赋值,省去了手动改的麻烦,所以我们的程序变为这样:
if (BuildConfig.DEBUG) { Log.d("", "I am a debug"); } else { Log.d("", "I am a release!"); }
后计
我自己封了个jar包,然后被别的app调用,发现jar包里的buildconfig.debug总是false。一直未解决。后来还是决定用一个DEBUG成员变量来控制了。相关文章推荐
- Leetcode: N Queen I & II
- MYSQL实现主从insert和query分开操作
- Webpack + vue-loader构建单文件vue组件
- Dialogs 介绍
- 陪学网Axure原型设计比赛开响!你敢来挑战吗?
- 关于OSGI模块化编程中MENIFEST.MF文件中的Required Plug-ins和Imported Packages的区别
- mui中的关闭页面的几种方法
- FLASH禁止覆盖绝对定位 wmode="opaque"
- adbd cannot run as root in production builds的解决方法
- finished with non-zero exit value 2 百度地图jar包
- XEN - Managing and Monitoring Fedora based Xen Guest Systems
- POJ 2785 Values whose Sum is 0
- 只读事务(@Transactional(readOnly = true))的一些概念
- StringBuilder、StringBuffer
- XEN - Xen Project Beginners Guide
- dex文件的反编译-dex2jar和jd-gui
- 两种类型的probe request
- 以人为中心的沉浸式交互设计如何做?
- 只需要简单几行代码,便可以实现UITableView的自适应高度。。。。
- NGUI中点击文字弹出物品的Tip