build Variants创建不同配置的app(图文详解)

现象描述

开发一个app避免不了在多种环境下运行,比如开发环境、测试环境、正式环境,而根据不同环境要配置不同的变量,在以前,我都是通过注释相关代码实现的,显然这样比较麻烦。

进入正题,那么如何可以一键更改配置呢?

步骤一:配置build.gradle文件的productFlavors节点

 productFlavors {
        moon {//配置的名称,可以随便取
           // 具体配置,见后面讲解
        }
        moon_test {//配置的名称,可以随便取
           //具体配置,见后面讲解
        }
        ...//还可以创建很多个
    }

步骤二:创建不同的配置文件

在工程src目录下,创建以 配置名称 为名的包,并依此创建java.com.pengkv.moon 包

    -moon
        -...
        -build
        -src
            -main
            -moon(配置名)
                -java.com.pengkv.moon
                    -各种配置文件
            -moon_test(配置名)
                -java.com.pengkv.moon
                    - 各种配置文件(各个配置包下的对应名称要一样)

其中moon包下的LogUtil代码如下

public class LogUtil {
    public static void logTag() {
        Log.v("---->", "我是版本一");
    }
}

moon_test包下的LogUtil代码如下

public class LogUtil {
    public static void logTag() {
        Log.v("---->", "我是版本二");
    }
}

步骤三:在左侧菜单栏点击build Variants,并选择相应配置的版本运行

代码运行时可以发现,相同的代码运行却有不同结果

结果一:

结果二:

步骤四:配置AndroidManifest.xml文件

有些时候需要在AndroidManifest.xml里配置不同参数,比如应用名、版本号、应用ID等等,例如下图(生成不同应用名)

这个时候首先需要对productFlavors进行详细配置

productFlavors {
        moon {
            manifestPlaceholders = [BAIDU_SERVICE_VALUE: "zQDqX7GP3avIQTN0BoFSyhrF",
                                    APP_NAME           : "@string/appName"]
        }
        moon_test {
            manifestPlaceholders = [BAIDU_SERVICE_VALUE: "kBONkZGEe0S2lYd6yOqq9MRx",
                                    APP_NAME           : "@string/appName_test"]
        }
    }

然后在AndroidManifest.xml引用不同配置的值

<application
        android:icon="@mipmap/ic_launcher"
        android:label="${APP_NAME}"//引用productFlavors里面的配置值
        android:theme="@style/AppTheme">
        <activity>
        //...
        </activity>
    </application>

附:build.gradle说明图

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 16:01:12

build Variants创建不同配置的app(图文详解)的相关文章

CentOS 6下配置软RAID图文详解

一.RAID 简介 RAID 是英文Redundant Array of Independent Disks 的缩写,翻译成中文意思是"独立磁盘冗余阵列",有时也简称磁盘阵列(Disk Array). 简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份的技术. 组成磁盘阵列的不同方式称为RAID级别(RAID Levels),常见的RAID Level 包括raid0, raid1, rai

MyEclipse配置TomCat环境(图文详解)

一.先安装Tomcat服务器(windows) 解压tomcat-windows.zip压缩文件到安装目录下 打开系统环境变量设置(我的电脑-----属性------高级系统设置------环境变量) 新建新建系统变量 TOMCAT_HOME  变量值为tomcat安装根目录,如下图 新建新建系统变量 CATALINA_HOME  变量值为和TOMCAT_HOME值相同,如下图 将%TOMCAT_HOME%\bin;% CATALINA_HOME%\bin;写在Path变量值前面 打开CMD控制

Windows 08 R2_创建AD DS域服务(图文详解)

目录 目录 Active Directory概念 创建第一个AD域控制器 搭建DNS服务器 使用Windows窗口程序创建AD域控制器 AD与LDAP的关系 使用Powershell来创建ADDS域控制器 检查ADDC域控制器是否安装成功 管理工具 创建额外域控制器 使用Windows窗口界面来安装额外域控制器 使用Powershell脚本来安装额外域控制器 Active Directory概念 AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条件来简单而有效

FineBI学习系列之FineBI的Windows里安装后的一些配置事宜(图文详解)

不多说,直接上干货! 前期博客 第一步:需要点击获取激活码 第二步:点击注册 注册的好处是: 得到 7a92c829-8c576478a-8135-1784d3cbad47 原文地址:https://www.cnblogs.com/zlslch/p/8620106.html

FineBI学习系列之FineBI官网提供的服务器数据集(图文详解)

不多说,直接上干货! 这是来自FineBI官网提供的帮助文档 http://help.finebi.com/http://help.finebi.com/doc-view-30.html 目录: 1.描述 2.设计器远程连接方法及步骤 3.服务器数据集建立步骤 4.服务器数据集使用方法 1.描述 在前面章节中我们介绍了如何通过BI的数据连接功能来连接要访问的数据库,具体见 这一节介绍如何使用服务器数据集.与数据库数据集不同,服务器数据集是不随数据连接的变化而变化的,这些数据存储在BI的服务器中的

使用VS2015创建和使用动态链接库-图文详解

之前看过原创一篇<VS2010 动态库开发--第一章 演练:创建和使用动态链接库 (C++)>的帖子,地址是http://blog.sina.com.cn/s/blog_6fb3686501011ymn.html,感谢原创.这里我们使用VS2015创建和使用自己的动态链接库,配以图文详解. 我们先来演示如何使用VS2015创建一个动态链接库.1.新建一个"Win32控制台应用程序","名称"为MathFuncsDll,"解决方案名称"

Python安装、配置图文详解

原文地址:http://weixiaolu.iteye.com/blog/1617440 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(IDE) 1. 在Eclipse中安装PyDev插件 2. 配置Python Interpreters 四. 创建Python Project 五. 编写HelloWorld 六. 小结 一. Python简介: Python在Linux.wi

Python安装、配置图文详解(转载)

Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(IDE) 1. 在Eclipse中安装PyDev插件 2. 配置Python Interpreters 四. 创建Python Project 五. 编写HelloWorld 六. 小结 一. Python简介: Python在Linux.windows.Mac os等操作系统下都有相应的版本,不管在

对于maven创建spark项目的pom.xml配置文件(图文详解)

不多说,直接上干货! http://mvnrepository.com/ 这里,怎么创建,见 这里, 我重点说下spark项目,因为,对于hadoop这样的,我已经写了大量博客了. 比如,我目前用得较多的spark-mllib. 这里spark-mllib_2.10 就是你的scala版本是2.10.X系列.比如我一般是使用scala-2.10.4. 这里spark-mllib_2.11 就是你的scala版本是2.11.X系列. 同时,大家要养成规范,http://mvnrepository.