在进行项目开发或维护时,经常会遇到调试和发布所用到的参数值不一致的情况

例如,服务器会分测试和正式,为了能方便地更改(自动更换)服务器地址,buildConfigField就派上用场了

以前都是手动更改的,极易出错T_T

buildConfigField语法如下

buildConfigField "TypeName", "FieldName", "FieldValue"

示例

build.gradle (Module: app)

apply plugin: 'com.android.application'

android {
compileSdkVersion 28
defaultConfig {
applicationId "com.bu_ish.debug_release_test"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField "String", "TextToShow", "\"当前处于发布模式\""
}
debug {
buildConfigField "String", "TextToShow", "\"当前处于调试模式\""
}
}
} dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Gradle会自动生成BuildConfig.java

BuildConfig中包含了字段TextToShow

生成的Debug版BuildConfig如下

/**
* Automatically generated file. DO NOT MODIFY
*/
package com.bu_ish.debug_release_test; public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.bu_ish.debug_release_test";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Fields from build type: debug
public static final String TextToShow = "当前处于调试模式";
}

在使用BuildConfig.TextToShow时,Gradle就帮我们自动地完成了调试值"当前处于调试模式"和发布值"当前处于发布模式"的切换

最新文章

  1. 12,SFDC 管理员篇 - 页面配置
  2. C#抽象类
  3. 微信自定义菜单view类型获取openid访问网页
  4. Teehan & Lax 发布 iOS 7 GUI PSD 模板,免费下载
  5. Java学习-007-Log4J 日志记录配置文件详解及实例源代码
  6. 限制<input>输入内容 只允许数字 或者 字母
  7. CROSSTOOL-NG建立交叉编译工具链
  8. 理解Windows中的路由表和默认网关
  9. Java网络编程(UDP协议:发送端)
  10. jQuery按钮复制文本内容
  11. google官方提供的编译android源码的环境初始化,Initializing a Build Environment
  12. C#中弹出新窗口
  13. python调用ice接口
  14. VS2010 简单实用快捷键
  15. 一张图告诉你移动Web前端所有技术(工程化、预编译、自动化)
  16. zoj 1889 ones 数学
  17. DB---数据库中Schema的理解
  18. linux 上安装多个不同版本的mysql 踩的坑
  19. 其他综合-内网下Yum仓库搭建配置
  20. 【转载】CSS3 文字溶解效果

热门文章

  1. Linux 之 Xunsearch(2)
  2. HDU 2767:Proving Equivalences(强连通)
  3. python pyd 加密相关
  4. 1076. Wifi密码 (15)【模拟】
  5. putnik
  6. Ubuntu 16.04常用软件清单
  7. java后4位打成*显示
  8. 【sublime text3】破解 最近破解码 /激活成功,但是过一会就提示激活码失效的 Build3143
  9. webpack入门(六)——html-webpack-plugin
  10. Win7安装软件,界面上中文显示乱码的解决方案