Android打包配置:测试环境、线上环境、参数化版本号

我们在开发过程中需要区分内部测试环境和线上环境,两者调用接口的域名路径不一样。每次环境切换,都要动态的修改代码,如果线上环境和测试环境不同的域名路径太多,会很麻烦,并且容易出错。


Android打包配置:测试环境、线上环境、参数化版本号_第1张图片
线上和测试环境切换.png

我们可以通过配置gradle来实现自动的环境配置切换。目标:
1.项目开发调试时环境切换
2.打包时可配置测试环境和线上环境
3.测试包和线上包可同时安装在手机上,并能够以app名称区分
4.打包时配置app的版本号
5.修改输出的apk文件名称

一、使用productFlavors实现环境切换

在配置之前,我们先来看一下,新建一个Android项目,默认支持的apk变种:
Android打包配置:测试环境、线上环境、参数化版本号_第2张图片
默认的变种.png

从图上看就只有debug和release两种。

1.配置flavor,测试环境和线上环境使用不同的applicationId

修改app或对应lib的module下的build.gradle文件,修改如下:


Android打包配置:测试环境、线上环境、参数化版本号_第3张图片
修改applicationId.png

此时再看BuildVariants,就会发现有4个变种:neibuDebug,neibuRelease,onlineDebug,onlineRelease。如图:
Android打包配置:测试环境、线上环境、参数化版本号_第4张图片
新的打包变种.png

分别选中neibuDebug和onlineDebug,点击Android Studio的运行按钮,就可以发现手机上同时可以使用两个app。
Android打包配置:测试环境、线上环境、参数化版本号_第5张图片
测试和线上两个app.png

2.配置测试和线上环境使用不同的代码和资源

a.在src文件夹下建立neibu和online两个文件夹,
b.在这两个文件夹下,分别建java和res文件夹,
c.在对应的java文件夹下建立NetConfig.java文件
d.删除掉main文件夹下的NetConfig.java文件

Android打包配置:测试环境、线上环境、参数化版本号_第6张图片
52D998D0-5A9B-4f00-A02A-EA8D72E72229.png

Android打包配置:测试环境、线上环境、参数化版本号_第7张图片
F8774AB6-162C-4f65-9189-3072254EA7CD.png

f.在res中配置两个strings.xml,此处不需要删除掉main下的资源文件


Android打包配置:测试环境、线上环境、参数化版本号_第8张图片
修改app名称.png

Android打包配置:测试环境、线上环境、参数化版本号_第9张图片
新的app名称.png

二、app版本号参数话和修改apk的文件名称

1.修改apk的文件名称,app目录下的,build.gradle文件

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def buildTypeName = variant.buildType.name
                def flavorName = variant.productFlavors[0].name
                def buildTime = new Date().format("yyyy-MM-dd-HH-mm-ss")
                def fileName = "learn_${flavorName}_${defaultConfig.versionName}_${defaultConfig.versionCode}_${buildTime}_${buildTypeName}.apk"
                output.outputFileName = fileName
            }
        }
    }

打包后,如图:
Android打包配置:测试环境、线上环境、参数化版本号_第10张图片
app名称.png

2.配置版本号,可通过gradle命令传递

a.修改根目录下gradle.properties文件,添加两个value
Android打包配置:测试环境、线上环境、参数化版本号_第11张图片
gradle.properties文件.png

b.修改app文件夹下的,build.gradle文件

    defaultConfig {
        applicationId "com.example.learngradle"
        minSdkVersion 14
        targetSdkVersion 28
        versionCode project.hasProperty("VERSION_CODE") ? (VERSION_CODE as int) : (DEF_VERSION_CODE as int)
        versionName project.hasProperty("VERSION_NAME") ? VERSION_NAME : DEF_VERSION_NAME

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

3.命令行下打包apk

a.命令:gradlew assembleDebug,生成两个debug包

Android打包配置:测试环境、线上环境、参数化版本号_第12张图片
A0E6250E-C410-473b-A9BD-2FAC8A1E6C64.png

Android打包配置:测试环境、线上环境、参数化版本号_第13张图片
62D58703-6F6D-4e15-A426-DAA7C9D12C5F.png

b.命令:gradlew assembleNeibuDebug,打包一个测试环境包
c.命令中配置版本号-PVERSION_CODE=142-PVERSION_NAME=1.2.1
比如:gradlew assembleRelease -PVERSION_CODE=101 -PVERSION_NAME=2.0.1

Android打包配置:测试环境、线上环境、参数化版本号_第14张图片
9BA2D0DC-1A7A-45db-8CE4-2509E826B101.png

代码在github

你可能感兴趣的:(Android打包配置:测试环境、线上环境、参数化版本号)