记录代码
build.gradle文件如下
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
applicationId "com.xxxx.abcd"
versionCode 1
versionName "1.0.1"
//All flavors must now belong to a named flavor dimension
flavorDimensions "versionCode"//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
multiDexEnabled true // dex突破65535的限制
//Nuance自动生成的库文件夹中没有我们所需的so文件,所以按照上面的逻辑,就应该是阻止自动生成我们不需要的文件夹或者下载相关的so文件放到对应的文件夹下面。
//加入需要生成的文件夹//armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a" }
//vectorDrawables.useSupportLibrary = true //支持.xml中<vector矢量图
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"] // 默认是umeng的渠道
// 声明需要使用注解功能,所依赖的gradle都需要添加
javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
}
signingConfigs {
//...
}
//--[S]渠道打包
productFlavors {
umeng {}
yingyongbao {} //应用宝
xiaomi {} //小米
huawei {} //华为
vivo {} //vivo
qh360 {} //奇虎360
oppo{} //oppo
baidu{} //百度
googleplay { //谷歌
applicationId "com.xxxx.abcd.gg"
//versionName "1.0.1.g"
}
wandoujia{}
lenovomm{}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
//--[E]渠道打包--
buildTypes {
release {
//...
}
debug {
//...
}
}
// 修改apk build的名字
/*
//android studio 2 的配置
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//这里使用之前定义apk文件名称
//String apkName = "${variant.productFlavors[0].name}_${defaultConfig.versionName}_${compilePackTime()}_.apk"
output.outputFile = new File(outputFile.parent, appName(outputFile.name, defaultConfig.versionName))
}
}
}*/
//android studio 3 的配置
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
outputFileName = appName(outputFile.name, defaultConfig.versionName)
}else {//这里使用之前定义apk文件名称
outputFileName = "${variant.productFlavors[0].name}_${defaultConfig.versionName}_${compilePackTime()}_.apk"
}
}
}
}
//默认输出格式:app-umeng-debug.apk 和 app-umeng-release.apk
// 输出apk名称为umeng_V419_20171110_1110.apk
def appName(String outputFileName, String versionName) {
String appName = outputFileName.replace("app-", "").replace(".apk", "");
String debugName = appName.replace("-debug", "");
if (appName == debugName) {// 定义release版本生成的apk的名字
appName = appName.replace("-release", "") + visionName(versionName) + compilePackTime() + ".apk";
} else { // 定义debug版本生成的apk的名字
appName = debugName + visionName(versionName) + compilePackTimeD() + "_debug.apk";
}
return appName;
}
// 版本号转换
def visionName(String visionName) {
return "_V" + visionName.replace(".", "") + "_";
}
// 当前时间
def compilePackTime() {
return (new Date().format("yyyyMMdd HHmm", TimeZone.getTimeZone("GMT+8"))).replace(" ", "_")
// //
}
def compilePackTimeD() { //debug模式下name包含时分(秒)会出现 安装时错误:The APK file does not exist on disk
return (new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+8")))
}
//...
dependencies {
//...
}
如此以后就不用再次修改apk名称了,一劳永逸了,哈哈!
网友评论