在安卓项目开发中,大多时候总是有测试环境、生产环境之类的区别,在不使用Product Flavor时,我们一般都是通过手工改动代码来实现测试环境、生产环境的切换。

这样就造成了项目管理上的不便,频繁的手工在测试、生产代码中注释相关代码来切换环境,效率低下不说,而且从工程角度来说是不专业的。

Product Flavor

Product Flavor的出现解决了我们切换环境的问题,而且还拥有更加强大的功能,下面先了解一下最基本的使用方法,例如想建立一份测试环境、生产环境的构建变体。

在模块的build.gradle下的 android { } 内增加:

flavorDimensions "dev"
productFlavors {
    ceshi {
        dimension "dev"
        buildConfigField("String", "URL", "\"https://abc.com\"")
    }

    prod{
        dimension "dev"
        buildConfigField("String", "URL", "\"https://dfg.com\"")
    }
}

然后Sync Project with Gradle Files,在Android Studio的Build Variants下即可看到增加了4个构建变体

下面来讲解一下上面的相关知识点:

(1)buildConfigField在构建的时候在环境中加入静态变量,在代码中通过BuildConfig类的属性进行访问,上面我们在两个环境中都添加了变量名为URL的变量,而且两个环境中的变量的值均不相同,在项目的代码中我们可以使用BuildConfig.URL进行访问。

(2)为什么会出现4个构建变体:

> 构建变体 = [风格维度的风格数1]  * [风格维度的风格数2] * ......   * [Release | Debug],上面我们定义了一个风格纬度:dev,其中的风格数是:ceshi、prod,所以 [ceshi | prod] * [Release | Debug] 等于4个构建变体。

(3)可以定义多个风格纬度吗?

> 可以,例如定义两个风格维度:flavorDimensions "dev", "lan",那么构建变体的数目:[dev维度的风格数] *  [lan维度的风格数]  * [Release | Debug]

通过上面的基础用法,已经能处理好测试环境、生产环境切换麻烦的问题,而且每个环境都能定义不同的变量值,这样就能使工程的代码更加简洁。

【安卓进阶】Product Flavor基础玩法的更多相关文章

  1. windows下mongodb基础玩法系列二CURD附加一

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  2. windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  3. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  4. Python的生成器进阶玩法

    Python的生成器进阶玩法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.yield的表达式形式 #!/usr/bin/env python #_*_coding:utf-8 ...

  5. 【Python基础】random 的高级玩法

    random 模块的高级玩法 1.python 随机产生姓名 方式一: import random xing = [ '赵', '钱', '孙', '李', '周', '吴', '郑', '王', ' ...

  6. 《Invert》开发日志01:核心玩法设计

    前面提过,这个游戏的核心玩法基于我做的第一个Unity游戏,名字就叫<Invert>,现在在应用宝上面还能搜到.不过那个游戏也不是我原创的,它的玩法设计来自github上的一个开源项目(h ...

  7. 实战Excel Add-in的三种玩法

    作者:陈希章 发表于 2017年11月26日 前言 这个系列文章应该有一阵子没有更新了,原因是一如既往的多,但是根本所在是我对于某些章节其实还没有完全想好怎么写,尤其是对于Office Add-in这 ...

  8. 全面解密QQ红包技术方案:架构、技术实现、移动端优化、创新玩法等

    本文来自腾讯QQ技术团队工程师许灵锋.周海发的技术分享. 一.引言 自 2015 年春节以来,QQ 春节红包经历了企业红包(2015 年).刷一刷红包(2016 年)和 AR 红包(2017 年)几个 ...

  9. 朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)

    十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别.最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器 ...

随机推荐

  1. DAO工具类的封装源码

    详细源码见下表,绝对原创,转载请注明出处! package com.ydj.util; import java.sql.Connection; import java.sql.PreparedStat ...

  2. 从NV12中裁剪子画面注意事项

    1. 裁剪时,Y和UV的地址计算: / **** * pa_yuv_main: yuv首地址 * video_frame.loff: 行偏移量 lineoffset * VDO_SIZE_W.VDO_ ...

  3. Scratch编程:绘制七色花(七)

    “ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 绘制一朵美丽的七色花. 02 — 设计思路 使用画笔功能 ...

  4. C#使用管理员权限打开cmd执行命令行

    最近遇到个棘手的问题,服务器远程连不上,但是ftp可以,可能远程连接的服务挂了或者防火墙入站规则有点问题,想要重启,得找机房工作人员,还是挺麻烦的 想了想可以上传个执行cmd命令的东西,然后远程访问触 ...

  5. 稀疏检出-使用git检索出仓库里的某一个目录文件,而不是整个仓库的所有文件

    具体工作意义是从某一个Git仓库 克隆时,只克隆检测出这个仓库里的某些文件夹内容,而不是跟平常那样把整个仓库的内容都克隆下来 从1.7.0版本开始git提供稀疏检出的功能.所谓稀疏检出就是本地版本库检 ...

  6. 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)

    原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...

  7. Mybatis:缓存

    1.什么是缓存[Cache] 存在内存中的临时数据. 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统 ...

  8. ArduPilot存储管理 Storage EEPROM Flash

    AP_HAL::Storage 此类可以应用于所有平台.PX4v1平台支持8k的EEPROM,Pixhawk平台支持16k的FRAM铁电存储器 存储大小定义:libraries/AP_HAL/AP_H ...

  9. Privacy Description

    This application respects and protects the privacy of all users who use the service. In order to pro ...

  10. centos7创建共享文件夹

    0.检查是否已经安装samba rpm -qi samba 1.未安装,安装samba, 如果已安装,请忽略: yum -y install samba samba-client 2.共享一个目录,使 ...