Gradle多渠道打包动态修改apk文件名字

随着Android Studio新版本和Gradle 3.0的更新,自定义apk文件名的方法有所变化。本文介绍了Gradle 3.0前后的差异,并详细讲解了3.0后如何修改apk文件名,特别是在多渠道打包时的配置注意事项,包括必须配置flavorDimensions且需实际使用,以避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

随着新版本Android studio的发布,与之配套使用的Gradle也有很多变化,下面主要列举对比新老版本自定义apk生成文件名的方式。

新版本Android studio 下载地址
Gradle3.0前后版本变更记录 详情

Gradle3.0修改apk文件名的方式

android {
	...
	applicationVariants.all { variant ->
	    //这个修改输出的APK路径
	 if (variant.buildType.name != "debug") {//防止AS无法安装debug包(apk)
	    variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/apk")
	 }
	    variant.getPackageApplication().outputScope.apkDatas.forEach { apkData ->
	        //这个修改输出APK的文件名
	        apkData.outputFileName = "AppName-" +
	                variant.versionName + "_" +
	                variant.flavorName + "_" +
	                variant.buildType.name + "_" +
                        releaseTime()+"_"+
	                ".apk"
	    }
	}
	...
}

3.0之后修改apk文件名的方式

android {
	...
	android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${variant.flavorName}-v${versionName}-${variant.buildType.name}-build${versionCode}-${releaseTime()}.apk"
                }
            }
	...
}

多渠道的配置注意事项

通常自定义apk文件名往往都跟多渠道打包相关联,这里就提一下Gradle3.0之后多渠道配置需要注意点。

  • 需要配置flavorDimensions
  • 配置的flavorDimensions 必须使用到,不然会报错
// Specifies a flavor dimension.
flavorDimensions "color"

productFlavors {
     red {
      // Assigns this product flavor to the 'color' flavor dimension.
      // This step is optional if you are using only one dimension.
      dimension "color"
      ...
    }

    blue {
      dimension "color"
      ...
    }
}

最终的完整脚本

def releaseTime() {
    return new Date().format("yyyy.MM.dd", TimeZone.getTimeZone("UTC"))
}
android {
    defaultConfig {
        
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            // 移除无用的resource文件
//            shrinkResources true
//            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${variant.flavorName}-v${versionName}-${variant.buildType.name}-build${versionCode}-${releaseTime()}.apk"
                }
            }
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "app"
    productFlavors {
        demo1 {
            dimension "app"
        }
        demo2 {
            dimension "app"
        }
        demo3 {
            dimension "app"
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值