Android Studio打包命名
16lz
2021-01-23
1、Android Studio2.3中
android.applicationVariants.all { variant -> variant.outputs.each { output -> def file = output.outputFile def filename = "*****.apk" output.outputFile = new File(file.parent, filename) }}
fileName 赋想定义的文件名,格式为apk————>”名+.apk”
output.outputFile就是将导出(生成)的文件通过
output.outputFile = new File(file.parent, filename)
将定义的命名new 一个File赋给outputFile
android.applicationVariants.all { xixi -> xixi.outputs.each { output -> def file = output.outputFile def filename = "****.apk" output.outputFile = new File(file.parent, filename) }}
注意:
android.applicationVariants.all { xixi -> xixi.outputs.each { output -> def file = output.outputFile def filename = "****.apk" output.outputFile = new File(file.parent, filename) }}
android.applicationVariants.all
是固定写法,换成android.applicationVariants.each
——是不会其效果的variant.outputs.each
换成variant.outputs.all
——是不能”Sync Now”(或Sync Project with Gradle File)成功(variant对象名可以改)variant
这个相当于是ApplicationVariants的一个对象,可以随意定义对象名字,例如上面改成“xixi”- 同理:
output
是属于BaseVariantOutput的对象,对象名也可以随意定义
2、Android Studio3.0中
写法简单了。
android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "*****.apk" }}
注意:
1. android.applicationVariants.all
同样
2. variant.outputs.all
换成variant.outputs.each
是不能”Sync Now”(或Sync Project with Gradle File)成功(variant对象名可以改)
3、代码位置:
AndroidStudio2.3和3.0的代码放的位置是一样的。
app的Build.gradle中的
android{ ...... android.applicationVariants.all{ ...... }}
说明:代码的位置是与android{}
中的defaultConfig{}
同一层的
4、用法升级:
名字修改方法:
使用${...}
里面传入对象
例如:outputFileName = "***${versionName}.apk"
——得到的是“名+版本.apk”
可以多个${...}
以下是我在项目中使用的:
增加日期/时间:
def date = new Date().format(“yyyyMMddHHmmss” , TimeZone.getTimeZone(“GMT+08”))
def date = new Date().format(“yyyyMMddHHmmss” , TimeZone.getTimeZone(“Asia/Shanghai”))- 当然解析(format)中yyyyMMddHHmmss可以换成其他,如yyyyMMdd、yyMMdd……等等,用法和Java里面一样
TimeZone.getTimeZone()
这是获取时区日期时间,传入GMT+08
、Asia/Shanghai
会准确的中国时间,看到网上都是传UTC
——这个问题是日期对,但是时间不对。- TimeZone.getTimeZone()的用法
同理:outputFileName = "***${date}_${versionName}.apk"
- 加入判断区分debug和release:
用于区分debug和release的两种不同的名字:
if(variant.buildType.name.equals('debug')){ .....}
和
if(variant.buildType.name.equals('release')){ .....}
最终用法:
android.applicationVariants.all { variant -> variant.outputs.all { //def date = new Date().format("yyyyMMdd" , TimeZone.getTimeZone("Asia/Shanghai")) def date = new Date().format("yyyyMMdd" , TimeZone.getTimeZone("GMT+08")) if(variant.buildType.name.equals('debug')){ outputFileName = "****${date}_${versionName}.apk" } if(variant.buildType.name.equals('release')){ outputFileName = "****${date}_${versionName}.apk" } }}
更多相关文章
- android 中通过 aidl 传递map对象
- Android自带Music播放器更新播放时间和进度条的方法
- Android创建自定义键盘
- Android系统自带主题的使用及自定义主题
- Android 各种布局技术-五大布局对象