使用AndroidStudio进行开发,其中很重要的一个文件就是build.gradle,他是整个项目的控制中心,这里收集一些日常会用到的语法或者使用技巧,以备后用。这篇博客主要说明 buildTypes节点下使用buildConfigField。

下面是默认的buildTypes形式

buildTypes {    release {        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        signingConfig signingConfigs.release    }}

但是这里其实默认还有一个debug type,只不过默认不显示,显示完整如下

buildTypes {  release {    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    signingConfig signingConfigs.release  }  debug{  }}

这两者用于指定不同的build type,当我们打包编译项目时,我们能不能这里就可以设置一些参数信息,直接可以作用于项目,从而在项目中,动态根据build.gradle中设置的信息,进行一些代码层面的逻辑处理,比如在debug type下正常输出日志信息,但是release type下,屏蔽日志输出。那么就可以通过buildConfigField进行动态设置如下

buildTypes {  release {    buildConfigField "boolean", "LOG_DEBUG", "false"    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    signingConfig signingConfigs.release  }  debug{    buildConfigField "boolean", "LOG_DEBUG", "true"  }}

可以看到在上面指定了一个key为LOG_DEBUG的field,在release type下为false,在debug type下为true,具体在代码中就可以这样使用。

因为我在项目中使用了开源库 Logger 进行日志输出,这个lib可以在Application的onCreate方法中进行开关设置,从而控制Log日志是否显示在console,所以最终使用如下:

if(BuildConfig.LOG_DEBUG){    Logger.init("AppPlusLog").setLogLevel(LogLevel.FULL);}else{    Logger.init("AppPlusLog").setLogLevel(LogLevel.None);}

可以看到在build.gradle中设置的属性LOG_DEBUG,在这里可以直接通过BuildConfig这个类进行访问,此时就可以动态的控制Log的输出了,这里当然可以指定更多的关键字,自己根据项目需求发挥即可。

更多相关文章

  1. 面试多家大厂被拒后,危险拿到网易offer,分享经历的这些Android面试
  2. Android(安卓)项目(一):自定义View绘制“折线图”
  3. Android版本适配(基于 6.0 ~ 9.0)
  4. Android调用系统相册和相机选择图片并显示在imageview中
  5. Android动态换肤(一、应用内置多套皮肤)
  6. [置顶] android下调试声卡驱动之wm8960介绍一
  7. 【设计模式与Android】迭代器模式——容器遍历,细节隐藏
  8. 海豚浏览器推出Android(安卓)7.0版,支持跨平台同步书签、设置等
  9. Android(安卓)二维码编程

随机推荐

  1. android 根据文件Uri获取图片url
  2. Android使用okhttp进行自制证书的双向SSL
  3. Android学习系列(27)--App缓存管理
  4. 基于容器原理(docker、lxc、cells)的Andr
  5. Android(安卓)数据保存到新建的一个excel
  6. Android(安卓)多媒体应用:视频播放之Vitam
  7. Android中Matrix用法实例分析
  8. [Android]使用浏览器直接打开PDF和Office
  9. android写的音乐播放器,实现本地音乐的扫
  10. Android(安卓)开发基础 Java 线程池