Android BuildConfig:Gradle自定义你的BuildConfig
在很早之前我发布了这篇博客Android BuildConfig.DEBUG的妙用, 提到了Eclipse中通过BuildConfig.DEBUG字段用来调试Log非常好用,但是殊不知在Android Studio中通过Gradle这种用法更加强大。
BuildConfig.DEBUG
首先在Gradle脚本中默认的debug和release两种模式BuildCondig.DEBUG字段分别为true和false,而且不可更改。该字段编译后自动生成,在Studio中生成的目录在app/build/source/BuildConfig/Build Varients/package name/BuildConfig 文件下。我们以9GAG为例来看下release模式下该文件的内容:
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 = ;
public static final String VERSION_NAME = "1.0";
// Fields from build type: release
public static final boolean LOG_DEBUG = false;
}
自定义BuildConfig字段
大家看到上述内容的时候发现莫名的有个LOG_DEBUG字段,这个完全是我自定义的一个字段,我来用它控制Log的输出,而没有选择用默认的DEBUG字段。举例一个场景,我们在App开发用到的api环境假设可能会有测试、正式环境,我们不可能所有的控制都通过DEBUG字段来控制,而且有时候环境复杂可能还会有两个以上的环境,这个时候就用到了Gradle提供了自定义BuildConfig字段,我们在程序中通过这个字段就可以配置我们不同的开发环境。
语法很简单:
buildConfigField "boolean", "API_ENV", "true"
例如,(测试环境:Android Studio2.1.1 gradle为2.1.0)在‘app’module的build.gradle中添加如下代码:
然后 Build -> Rebulid Project 在 app/.../buidlConfig目录下 分别自动生成BuildConfig.API_ENV;
上述语法就定义了一个boolean类型的API_ENV字段,值为true,之后我们就可以在程序中使用BuildConfig.API_ENV字段来判断我们所处的api环境。例如:
public class BooheeClient {
public static final boolean DEBUG = BuildConfig.API_ENV; public static String getHost {
if (DEBUG) {
return "your qa host";
}
return "your production host";
}
}
不仅如此,如果遇到复杂的环境,你也可能自定义一个String类型的字段,这种方式免去了发布之前手动更改环境的麻烦,减少出错的可能性,只需要在Gradle配置好debug、release等模式下的环境就好了,打包的之后毫无顾虑。
使用方法很简单,大家如果有问题或者疑问可以直接博客留言。
Android BuildConfig:Gradle自定义你的BuildConfig的更多相关文章
- Gradle自定义你的BuildConfig
BuildConfig.DEBUG 首先在Gradle脚本中默认的debug和release两种模式BuildCondig.DEBUG字段分别为true和false,而且不可更改.该字段编译后自动生成 ...
- android build.gradle(groovy)
一.build.Gradle 这个 build.Gradle 文件来自 drakeet 大神的 Meizi 项目我直接在代码上加注释,参照着注释看代码就行,是不是发现有很多代码平时都没看见过. //M ...
- Android使用Gradle命令动态传参完成打包,不需要修改代码
不得不说,Gradle很强大,有人会问Gradle是什么?这里也不细讲,在我认为他就是一个构建神器.Gradle 提供了: 一个像 Ant 一样的非常灵活的通用构建工具 一种可切换的, 像 Maven ...
- Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解
文/ skay csdn博客:http://blog.csdn.net/sk719887916/article/details/40541163 最近遇到项目从Eclispe迁移到Android st ...
- Android 使用 Gradle 多渠道打包
安卓开发完毕.对于一个开放应用而言,我们须要公布到不同的应用市场,同一时候我们也须要统计不同市场的用户下载量. (通过启动应用后获取不同市场apk中的不同值来区分) 以下用一个详细的实例来说明: 1. ...
- Android studio gradle 打包 那些事
总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...
- Android studio gradle配置完整版(转)
Android studio gradle配置完整版https://my.oschina.net/u/1471093/blog/539075 Android studio 自定义打包apk名 - pe ...
- Android自定义控件之自定义ViewGroup实现标签云
前言: 前面几篇讲了自定义控件绘制原理Android自定义控件之基本原理(一),自定义属性Android自定义控件之自定义属性(二),自定义组合控件Android自定义控件之自定义组合控件(三),常言 ...
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
随机推荐
- react 常用的ui库
1. https://ant.design/docs/react/introduce-cn ANT DESIGNui 2. http://www.material-ui.com/#/ Mate ...
- Python正则表达式初识(十)附正则表达式总结
今天分享正则表达式最后一个特殊字符“\d”,具体的教程如下. 1.特殊字符“\d”十分常用,其代表的意思是数字.代码演示如下图所示. 其中“+”的意思是表示连续,在这里代表的意思是连续的数字.但是输出 ...
- 初尝Perl -- 使用aapt给apk软件包批量重命名
不知道什么是Perl猛戳这个链接 http://zh.wikipedia.org/wiki/Perl 任务: 随着手机/平板的各方面性能的不断发展(CPU,内存 ...
- 国行Android手机使用google全套GMS服务小结
由于众所周知的原因,国行手机是不能内置google服务的,但作为铁杆google粉,没有GMS的Android不是完整的Android,NEXUS系列机器又由于各种原因买不到或者不想选购,那么 ...
- git hub在windows上的使用
每次使用都需要查找,太麻烦了. 转过来自己用! git hub在windows上的使用 一. 首先安装客户端 Git for Windows. 按提示默认安装后,进入git bash(桌面上) 首先检 ...
- 洛谷 P1239 计数器
P1239 计数器 题目描述 一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是0005,只是5. 输入输出格式 ...
- Supermap 组合单值专题图与标签专题图演示样例
效果图例如以下:单值专题图并显示每一个区域的相关文字信息 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ2hmdQ==/font/5a6L5L2T ...
- 70.lambda表达式逻辑(二进制转换为为十进制)
#include <iostream> #include <cstring> using namespace std; void main() { auto fun = []( ...
- OpenCV —— 图像变换
将一副图像转变成另一种表现形式 ,比如,傅里叶变换将图像转换成频谱分量 卷积 —— 变换的基础 cvFilter2D 源图像 src 和目标图像 dst 大小应该相同 注意:卷积核的系数应该是浮点类 ...
- WebService 获取客户端 IP 和 MAC 等信息
IP地址 public string getClientIP() { string result = HttpContext.Current.Request.ServerVariables[" ...