现象描述

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

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

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

 productFlavors {moon {//配置的名称,可以随便取// 具体配置,见后面讲解}moon_test {//配置的名称,可以随便取//具体配置,见后面讲解}...//还可以创建很多个}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

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

    -moon
        -...
        -build
        -src
            -main
            -moon(配置名)
                -java.com.pengkv.moon
                    -各种配置文件
            -moon_test(配置名)
                -java.com.pengkv.moon
                    - 各种配置文件(各个配置包下的对应名称要一样)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

其中moon包下的LogUtil代码如下

public class LogUtil {public static void logTag() {Log.v("---->", "我是版本一");}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

moon_test包下的LogUtil代码如下

public class LogUtil {public static void logTag() {Log.v("---->", "我是版本二");}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

步骤三:在左侧菜单栏点击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"]}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

<applicationandroid:icon="@mipmap/ic_launcher"android:label="${APP_NAME}"//引用productFlavors里面的配置值android:theme="@style/AppTheme"><activity>//...</activity></application>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

附:build.gradle说明图

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

  1. Win7系统Visual Studio 2013配置OpenCV3.1图文详解

    Win7系统Visual Studio 2013配置OpenCV3.1图文详解 OpenCV3.1对硬件加速和移动开发的支持相对于老版本都有了较大改进,支持新的开发工具,更易于扩展,配置方式也比以前简 ...

  2. 用Wex5平台打包生成App图文详解(Android)

    用Wex5平台打包生成App图文详解(Android) 第一步:到起步官网下载并解压好Wex5开发工具:http://www.wex5.com/downloads/ 第二步:在解压的目录下打开开发工具 ...

  3. JDK安装和环境变量配置(Win10图文详解)

    JDK的安装和环境变量配置(Win10,图文详解) 操作系统 JDK的安装 JDK下载 系统环境变量配置 验证JDK和环境变量配置 Eclipse安装 Java小白入门项目代码参考 结语 操作系统 W ...

  4. win10开始不显示python_win10从零安装配置pytorch全过程图文详解

    1.安装anaconda (anaconda内置python在内的许多package,所以不用另外下载python) 可以点击下面的清华开源软件镜像站,在官网下载anaconda不如在这下的快 htt ...

  5. VirtualBox虚拟机配置CentOS7网络图文详解教程

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

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

    目录 目录 Active Directory概念 创建第一个AD域控制器 搭建DNS服务器 使用Windows窗口程序创建AD域控制器 AD与LDAP的关系 使用Powershell来创建ADDS域控 ...

  7. 【小白学云计算】xmpp开源服务器的配置和安装图文详解

    腾讯云技术社区-简书主页持续为大家呈现云计算技术文章,欢迎大家关注! 今天,我和同学一起开发一个软件的时候,想弄一个xmpp开源服务器来实现我们软件的通讯聊天,但是由于网上教程的不够详细和大部分教程都 ...

  8. ad域需要自建dns服务器吗,创建AD DS域服务(图文详解)

    Active Directory概念 AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条件来简单而有效率的在大量数据中查找匹配的信息.支撑这种信息检索的技术就是LD ...

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

    一.先安装Tomcat服务器(windows) 解压tomcat-windows.zip压缩文件到安装目录下 打开系统环境变量设置(我的电脑-----属性------高级系统设置------环境变量) ...

  10. Graphviz安装配置教程(图文详解)

    Graphviz 是一个开源工具,可以运行在Windows系统和Linux系统上.适用于大多数平台的二进制文件可以在 Graphviz 主页上找到.AIX 二进制文件可以在perzl.org 上找到. ...

最新文章

  1. 二级菜单从mysql中取_MyEclipes中如何如何让通过读取Mysql中的数据来实现二级菜单分类...
  2. 卷积神经网络失陷,CoordConv来填坑(附代码&视频)
  3. 强化学习AI:它菜了,我慌了
  4. eclipse新建maven项目(2)
  5. 5、用枚举值表示状态、选项、状态码
  6. hbase_学习_01_HBase环境搭建(单机)
  7. 能识别nvme的pe启动_学用系列|Mathpix,送给理科老师们的公式识别神器
  8. Error running Tomcat8: Address localhost:1099 is already in use
  9. UNIX 环境高级编程
  10. windows10批量解压缩文件-用WinRAR
  11. 软件智能:aaas系统 后天八卦-aaas作为组织者的数据结构及其运行时
  12. typora免费将图片上传到CSDN
  13. Android那些你可能没了解过的---碎片化
  14. 详解Instant类
  15. 【jupyter】2、jupyter主题设置
  16. 华为鲲鹏服务器安装操作系统,华为鲲鹏服务器安装docker-compose及运用
  17. 一开机checkingmedia_开机出现checkingmedia提示解决方法
  18. android 新闻功能列表,android listview实现新闻列表展示效果
  19. ssm框架外卖订餐系统
  20. 机器学习指标(Precision、Recall、mAP、F1 Score等)

热门文章

  1. 从Sklearn Bunch对象到Pandas DataFrame对象的转换
  2. 移动硬盘数据错误循环冗余检查,要怎么恢复资料
  3. 重磅!Apache RocketMQ 深圳沙龙报名开启!
  4. python怎么切片_python之切片操作
  5. git报错:index.lock File exists
  6. 牛血清白蛋白刺槐豆胶壳聚糖缓释纳米微球/多西紫杉醇的纳米微球DTX-DHA-BSA-NPs
  7. 跟谁学 英语口语20090927疑问句
  8. xp系统配置打印服务器,xp系统打印机纸张大小的自定义设置方法
  9. B站股权曝光:陈睿持股12.9%阿里持股7.9% 寻求双重主要上市
  10. 记 · 寒风依旧 · 虎跑路和人生路