Android Studio 3.0下命令行打包自定义输出路径和输出命名
项目下的build.gradle文件配置
- 在android{ } 里面配置多个工程包
//翻译成中文就是做出不同的口味
flavorDimensions "app"
productFlavors {
alipay {
dimension "app"
applicationId "cn.appblog.MultiApk.alipay"
versionCode 1
versionName "1.0"
signingConfig signingConfigs.alipay
}
wechat {
dimension "app"
applicationId "cn.appblog.MultiApk.wechat"
versionCode 1
versionName "1.0"
signingConfig signingConfigs.wechat
}
}
- 在android{ } 里面配置签名
//签名配置
signingConfigs {
alipay {
keyAlias 'alipay'
keyPassword '******'
storeFile file('D:\\keyStore\\alipay.jks')
storePassword '******'
}
wechat {
keyAlias 'wechat'
keyPassword '******'
storeFile file('D:\\keyStore\\wechat.jks')
storePassword '******'
}
}
- 在android{ } 里面控制输出路径
//打包后应用名称
//定义一个装apk文件路径的数组
def fileArray = []
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
def fileName
if (outputFile != null && outputFile.name.endsWith('.apk')) {
if (variant.buildType.name.equals('release')) {
fileName = "${variant.productFlavors[0].name}_${variant.productFlavors[0].versionName}_${variant.productFlavors[0].versionCode}_release.apk"
} else if (variant.buildType.name.equals('debug')) {
fileName = "${variant.productFlavors[0].name}_${variant.productFlavors[0].versionName}_${variant.productFlavors[0].versionCode}_debug.apk"
}
//output.outputFile = new File(outputFile.parent, fileName)
//println fileName
outputFileName = new File('../../', fileName)
println "自定义输出apk名称: " + fileName
println "自定义输出apk路径: " + outputFileName
fileArray.add(outputFile.parentFile.parentFile.parentFile.absolutePath + File.separator + fileName)
}
}
}
- 在android{ } 里面写一个apk的复制重命名的任务(task)
build {
doLast() {
println "任务1: 编译打包完成后需要复制的apk数量: " + fileArray.size()
forEachFile(fileArray)
}
}
- 最后在android{ } 之外,定义一个执行复制命名的方法
def forEachFile(fileArray) {
println "任务2: 遍历apk文件"
fileArray.forEach { file ->
//遍历进行文件操作
copy_and_rename_apk(file)
}
}
def copy_and_rename_apk(orignalFile) {
def intoFile = rootDir.parentFile.getAbsolutePath() + File.separator + "apks"
copy {
from orignalFile
into intoFile
println "任务3: 复制apk到指定位置 " + orignalFile + " -> " + intoFile
rename("${android.defaultConfig.versionName}_${android.defaultConfig.versionCode}", "v${android.defaultConfig.versionName}")
println "任务4: 重命名apk " + "${android.defaultConfig.versionName}_${android.defaultConfig.versionCode}" + " -> " + "v${android.defaultConfig.versionName}"
}
}
控制台输出
配置上面的一切之后,在Android Studio 3.0 的Terminal中输入: gradle build
> Configure project :app
自定义输出apk名称: alipay_1.0_1_debug.apk
自定义输出apk路径: ..\..\alipay_1.0_1_debug.apk
自定义输出apk名称: alipay_1.0_1_release.apk
自定义输出apk路径: ..\..\alipay_1.0_1_release.apk
自定义输出apk名称: wechat_1.0_1_debug.apk
自定义输出apk路径: ..\..\wechat_1.0_1_debug.apk
自定义输出apk名称: wechat_1.0_1_release.apk
自定义输出apk路径: ..\..\wechat_1.0_1_release.apk
> Task :app:build
任务1: 编译打包完成后需要复制的apk数量: 4
任务2: 遍历apk文件
任务3: 复制apk到指定位置 E:\Android-Project\MultiApk\app\build\outputs\apk\alipay_1.0_1_debug.apk -> E:\Android-Project\apks
任务4: 重命名apk 1.0_1 -> v1.0
任务3: 复制apk到指定位置 E:\Android-Project\MultiApk\app\build\outputs\apk\alipay_1.0_1_release.apk -> E:\Android-Project\apks
任务4: 重命名apk 1.0_1 -> v1.0
任务3: 复制apk到指定位置 E:\Android-Project\MultiApk\app\build\outputs\apk\wechat_1.0_1_debug.apk -> E:\Android-Project\apks
任务4: 重命名apk 1.0_1 -> v1.0
任务3: 复制apk到指定位置 E:\Android-Project\MultiApk\app\build\outputs\apk\wechat_1.0_1_release.apk -> E:\Android-Project\apks
任务4: 重命名apk 1.0_1 -> v1.0
在E:\Android-Project\apks目录下生成apk文件:
alipay_v1.0_debug.apk
alipay_v1.0_release.apk
wechat_v1.0_debug.apk
wechat_v1.0_release.apk
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/26/android-studio-3-command-line-custom-packaging-output-path-and-output-name/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
Android Studio 3.0下命令行打包自定义输出路径和输出命名
项目下的build.gradle文件配置
在android{ } 里面配置多个工程包
//翻译成中文就是做出不同的口味
flavorDimensions "app"
productFlavors {
……
文章目录
关闭
共有 0 条评论