文档章节

Android配置build.gradle的buildTypes动态自动维护debug和release包自定义字段变量值

shzwork
 shzwork
发布于 07/03 15:47
字数 645
阅读 41
收藏 0

Android配置build.gradle的buildTypes动态自动维护debug和release包自定义字段变量值
在Android编译出包阶段,debug包和正式的release有时候需要作出有所区别的调整。
比如最常见的是App应用程序中Log日志输出开关的控制。开发者希望在debug阶段Log日志能够打开输出,以便排查定位问题,而在正式的release包中,为了避免泄露App应用程序内部的信息而需要把Log日志输出关闭掉,这通常需要依赖于BuildConfig里面Android系统定义的静态变量值DEBUG,DEBUG是一个Android系统预先为开发者准备的布尔值,当在debug阶段,这个值为true,当在打出的release包时候,这个值为false。
现在如果单单一个BuildConfig.DEBUG值不能满足开发者需求,假如开发者需要自定义更多的类似于BuildConfig.DEBUG这样的值,在debug阶段和release阶段自动动态维护和管理不同的值,以提供给App应用程序中的代码使用,那么可以通过配置build.gradle的buildTypes实现,例如这样配置buildTypes:

apply plugin: 'com.android.application'
 
android {
    .......
 
    buildTypes {
        debug {
            buildConfigField "String", "MyAppType", '"debug"'
            buildConfigField "String", "MyName", '"zhang"'
            buildConfigField "boolean", "MyLOG_DEBUG", "true"
            buildConfigField "int", "MyNumber", "2018"
        }
 
        release {
            buildConfigField "String", "MyAppType", '"release"'
            buildConfigField "String", "MyName", '"phil"'
            buildConfigField "boolean", "MyLOG_DEBUG", "false"
            buildConfigField "int", "MyNumber", "2019"
        }
 
        ......
    }
 
   ......
}

buildTypes里面定义了四个值:MyAppType(字符串String类型),MyName(字符串String类型),MyLOG_DEBUG(布尔值boolean类型),MyNumber(整数int类型)。
定义的类型当然不限于以上几种,开发者根据需要可以定义更多复杂类型。定义的格式为:

字段变量类型,字段变量名,具体的值

定义好后,Android Studio自动的在BuildConfig里面产生:


后面如果包是debug模式,那么字段变量和值的对应情况为:
"MyAppType", '"debug"'
"MyName", '"zhang"'
"MyLOG_DEBUG", "true"
"MyNumber", "2018"

如果是在release模式下的包,对应的值情况:
"MyAppType", '"release"'
"MyName", '"phil"'
"MyLOG_DEBUG", "false"
"MyNumber", "2019"

在上层Java代码中直接通过BuildConfig使用之:


--------------------- 
作者:zhangphil 
来源:CSDN 
原文:https://blog.csdn.net/zhangphil/article/details/84834014 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文转载自:https://blog.csdn.net/zhangphil/article/details/84834014

shzwork
粉丝 15
博文 817
码字总数 10675
作品 0
厦门
私信 提问
Android配置build.gradle的buildTypes动态自动维护debug和release包自定义字段变量值

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/84834014 Android配置build.gradle的buildTypes动态自动维护debug和release包自定义字...

zhangphil
2018/12/10
0
0
读书笔记--Android Gradle权威指南(下)

前言 最近看了一本书《Android Gradle 权威指南》,收获挺多,就想着来记录一些读书笔记,方便后续查阅。 本篇内容是基于上一篇:读书笔记--Android Gradle权威指南(上) 上一篇中我们讲了:...

请叫我大苏
2018/05/27
0
0
Android Gradle使用总结

Android Gradle Android项目使用 Gradle 作为构建框架,Gradle 又是以Groovy为脚本语言。所以学习Gradle之前需要先熟悉Groovy脚本语言。 Groovy是基于Java语言的脚本语言,所以它的语法和Jav...

北辰丨丶
03/07
3
0
FLUTTER打release包,签名

FLUTTER打release包的一种可行操作(安卓) 目的 使用flutter编写好程序发布时我们需要使用release包而不是debug包,我在打包时遇见了一些坑,但总算解决了,在此记录与大家分享。 使用AS打开...

三也视界
前天
0
0
Android配置build.gradle实现Version Code编译release包时自动增长(一)

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/84770126 Android配置build.gradle实现Version Code编译release包时自动增长(一) 经...

zhangphil
2018/12/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

总结:Linux

一、目录 目录 作用 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 /etc /home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,...

浮躁的码农
23分钟前
4
0
什么是 happens-before 原则?

Java 中 happens-before 原则,是在 JSR-133 中提出的。 原文摘要: • Each action in a thread happens-before every subsequent action in that thread. • An unlock on a monitor happe......

ConstXiong
36分钟前
5
0
8核AMD Zen加持:微软Surface这回血拼

微软定于10月2日在纽约举办Surface新品发布会,几乎全线消费级产品都将更新,比如15英寸Surface Laptop 3。 最新爆料称,15寸Surface Laptop 3预计一口气推出6款型号,其中顶配为8核AMD处理器...

linuxCool
37分钟前
4
0
BeginnersBook MongoDB 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
38分钟前
5
0
Java NIO:Buffer、Channel 和 Selector

本文将介绍 Java NIO 中三大组件 Buffer、Channel、Selector 的使用。 本来要一起介绍非阻塞 IO 和 JDK7 的异步 IO 的,不过因为之前的文章真的太长了,有点影响读者阅读,所以这里将它们放到...

乱世当空
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部