一、背景
正常在Android开发过程中,我们会遇到各种环境和各种版本的配置与验证,第一种是通过代码去修改,第二种是通过配置来完成
1.1分析
代码修改:
代码修改的好处是快速,不需要通过gradle完成,便捷。但是也弊端是必然出现的,因为每次修改,如果大量配置文件需要修改就会导致修改特别多,最核心的问题就是上线发布容易出错,导致配置忘记修改回来
gradle配置:
gradle配置可以根据不同的buildtype或者productflover来完成指定的环境配置,这些配置基本都是一样,只是里面的参数变量值不同。这趟可以很好的规避一些问题,但是gradle修改可能会引起执行慢的问题,需要同步
二、常见的配置
1.文件打包输出名称
// 自定义输出配置
applicationVariants.all { variant ->
variant.outputs.all {
if (variant.buildType.name == "pre") {
outputFileName = Test.apk"
} else {
outputFileName = "${variant.buildType.name}.apk"
}
}
}
在android{
目录下
}
variant.buildType.name:配置的buildTypes环境,这个也是构建类型
buildTypes {
release {
buildConfigField("Boolean", 'isDebug', "false")
buildConfigField("String", 'Channel', "\"release\"")
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
pre {
buildConfigField("Boolean", 'isDebug', "true")
buildConfigField("String", 'Channel', "\"test\"")
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
debug {
buildConfigField("Boolean", 'isDebug', "true")
buildConfigField("String", 'Channel', "\"debug\"")
}
}
三、dependencies版本冲突强制指定
正常引用格式:androidx.datastore:datastore-preferences:1.0.0
group :name:useVersion
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == "androidx.appcompat") { if (requested.name == "appcompat") { details.useVersion "1.3.1" } } } }