利用BuildConfig进行编译选择及Gradle自定义BuildTypes和字段

2023-10-07 20:32

本文主要是介绍利用BuildConfig进行编译选择及Gradle自定义BuildTypes和字段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BuildConfig的用法

在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 DEBUG constant 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模式下运行的代码。

因此只需要将如下代码进行修改即可,而该值会自动根据当前项目的编译方式(debug/release)进行更新:

private static final boolean DEBUG = BuildConifg.DEBUG;

而在编译完成后,我们可以看到在如下路径中会自动生成该BuildConfig.java文件:

app/build/source/BuildConfig/Build Varients/package name/BuildConfig

当然除了DEBUG字段之外,还包含如下内容:

public final class BuildConfig {public static final boolean DEBUG = false;public static final String APPLICATION_ID = "com.storm.9gag";public static final String BUILD_TYPE = "release";public static final String FLAVOR = "wandoujia";public static final int VERSION_CODE = 1;public static final String VERSION_NAME = "1.0";
}

Gradle中自定义BuildConfig字段

如果上述默认生成的字段无法满足开发需求,那就需要在其中加入自定义的字段,假设我们需要加入应用的编译的时间timeStamp, 那我们则需要在gradle中加入该自定义字段:

defaultConfig {applicationId "com.qualcomm.qti.faceauth"minSdkVersion 24buildConfigField("String", "timeStamp", System.currentTimeMills() + "L");
}

通过增加该条属性,那么则会在BuildConfig中自动生成如下字段:

public final class BuildConfig {public static final boolean DEBUG = false;public static final String APPLICATION_ID = "com.storm.9gag";public static final String BUILD_TYPE = "release";public static final String FLAVOR = "wandoujia";public static final int VERSION_CODE = 1;public static final String VERSION_NAME = "1.0";//newly automatically added timeStamp attributepublic static final String timeStamp = 23800883L;
}

那在代码中直接可以调用:

String timeStr = BuildConfig.timeStamp;

即可获取到当前时间戳的字符串,用于业务逻辑代码的控制等。

这篇关于利用BuildConfig进行编译选择及Gradle自定义BuildTypes和字段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160259

相关文章

dubbo3 filter(过滤器)如何自定义过滤器

《dubbo3filter(过滤器)如何自定义过滤器》dubbo3filter(过滤器)类似于javaweb中的filter和springmvc中的intercaptor,用于在请求发送前或到达前进... 目录dubbo3 filter(过滤器)简介dubbo 过滤器运行时机自定义 filter第一种 @A

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接