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

来源:互联网 发布:歌曲变调软件下载 编辑:程序博客网 时间:2024/06/03 06:43

现象描述

开发一个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引用不同配置的值

<application        android: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说明图

这里写图片描述

阅读全文
0 0
原创粉丝点击