美文网首页Android技术知识Android开发Android开发经验谈
Android 配置build.gradle实现快速切换开发环境

Android 配置build.gradle实现快速切换开发环境

作者: Yet_land | 来源:发表于2018-06-20 12:23 被阅读111次

在开发过程中,难免会有两套或者更多的环境(测试环境和正式环境等)。针对不同的环境,手动来回切换难免是一件很麻烦的事情,并且还可以有遗漏。打包的结果,也需要根据不同的环境,来实现不同的命名。现在介绍一下使用build.gradle来配置不同渠道来实现环境的快速切换。

参考

Gradle的高级技巧 https://www.jianshu.com/p/cc98a6b4f52e
Android Studio 3.0的新特性与适配 https://www.jianshu.com/p/a0d040615c2c

思路

  • 在build.gradle中配置BuildConfig:BUILD_ENV_TYPE(编译环境类型:测试环境和正式环境),BASE_URL(服务器的地址)
  • 在build.gradle中配置多渠道:测试环境和正式环境两种渠道
  • 在build.gradle中配置打包后的文件命名:区分测试环境和正式环境
  • 在Application中直接获取BASE_URL,根据BUILD_ENV_TYPE来设置测试环境和正式环境的端口地址

build.gradle

  • 配置BuildConfig
    在defaultConfig中配置
buildConfigField('String', 'BUILD_ENV_TYPE', '"dev"')
buildConfigField('String', 'BASE_URL', '"http://dev.domain.com"')
  • 配置多渠道
 productFlavors {
        devEnveriment {
            buildConfigField('String', 'BUILD_ENV_TYPE', '"dev"')
            buildConfigField('String', 'BASE_URL', '"http://dev.domain.com"')
        }
        proEnveriment {
            buildConfigField('String', 'BUILD_ENV_TYPE', '"pro"')
            buildConfigField('String', 'BASE_URL', '"http://pro.domain.com"')
        }
    }
  • 配置输出文件重命名
    //重命名apk
    applicationVariants.all {
        variant ->
            variant.outputs.each {
                output ->
                    if (output.outputFile != null
                            && output.outputFile.name.endsWith('.apk')) {

                        def date = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08"))
                        // 渠道名
                        def flavorName = variant.flavorName
                        // 文件名前缀
                        def startName = "app_${flavorName == 'devEnveriment' ? '01' : '02'}"
                        // 文件名后缀
                        def endName = "_${date}_${versionName}_${versionCode}.apk"
                        def apkFile = new File(output.outputFile.getParent(), startName + endName)
                        output.outputFile = apkFile
                    }
            }
    }

build project

设置build.gradle后,build一下project,是的BuildConfig能够生成。

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.xxx.xxx";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "devEnveriment";
  public static final int VERSION_CODE = 3;
  public static final String VERSION_NAME = "v1.0.2";
  // Fields from product flavor: devEnveriment
  public static final String BASE_URL = "http://dev.domain.com";
  public static final String BUILD_ENV_TYPE = "dev";;
}

设置Application

  • 设置服务器地址为BuildConfig.BASE_URL
  • 设置端口
    根据不同的**BUILD_ENV_TYPE **来设置不同的端口号
switch (BuildConfig.BUILD_ENV_TYPE) {
            case "pro":
               // 设置正式环境的端口
                break;
            case "dev":
                // 设置测试环境的端口
                break;
        }

使用

  • 快速切换环境
    可以点击Build Variants -> app -> Build Variant来选择不同的环境:
    image.png
  • 打包
    为了更好区分打出的包是测试环境还是正式环境,可以在包名加标识,如01||0201代表测试环境,02代表正式环境。
    此处选择将两种环境的都打出。
    image.png
    打包结果
    image.png

相关文章

网友评论

    本文标题:Android 配置build.gradle实现快速切换开发环境

    本文链接:https://www.haomeiwen.com/subject/glbtyftx.html