Android Studio修改生成Apk命名

Android Studio修改生成Apk命名

转载请注明出处: http://blog.csdn.net/jys_05/article/details/78998633

1、Android Studio2.3中

 
 
  1. android.applicationVariants.all { variant ->
  2. variant.outputs.each { output ->
  3. def file = output.outputFile
  4. def filename = "*****.apk"
  5. output.outputFile = new File(file.parent, filename)
  6. }
  7. }

fileName 赋想定义的文件名,格式为apk————>"名+.apk"

output.outputFile就是将导出(生成)的文件通过

 
 
  1. output.outputFile = new File(file.parent, filename)

将定义的命名new 一个File赋给outputFile

 
 
  1. android.applicationVariants.all { xixi ->
  2. xixi.outputs.each { output ->
  3. def file = output.outputFile
  4. def filename = "****.apk"
  5. output.outputFile = new File(file.parent, filename)
  6. }
  7. }

注意:

 
 
  1. android.applicationVariants.all { xixi ->
  2. xixi.outputs.each { output ->
  3. def file = output.outputFile
  4. def filename = "****.apk"
  5. output.outputFile = new File(file.parent, filename)
  6. }
  7. }
  1. android.applicationVariants.all 是固定写法,换成android.applicationVariants.each——是不会其效果的
  2. variant.outputs.each换成variant.outputs.all——是不能"Sync Now"(或Sync Project with Gradle File)成功(variant对象名可以改)
  3. variant这个相当于是ApplicationVariants的一个对象,可以随意定义对象名字,例如上面改成“xixi”
  4. 同理:output是属于BaseVariantOutput的对象,对象名也可以随意定义

Android studio2.3修改Apk命名

2、Android Studio3.0中

写法简单了。

 
 
  1. android.applicationVariants.all { variant ->
  2. variant.outputs.all {
  3. outputFileName = "*****.apk"
  4. }
  5. }

注意:

  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中的

 
 
  1. android{
  2. ......
  3. android.applicationVariants.all{
  4. ......
  5. }
  6. }

说明:代码的位置是与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"))

    1. 当然解析(format)中yyyyMMddHHmmss可以换成其他,如yyyyMMdd、yyMMdd......等等,用法和Java里面一样
    2. TimeZone.getTimeZone()这是获取时区日期时间,传入GMT+08Asia/Shanghai会准确的中国时间,看到网上都是传UTC——这个问题是日期对,但是时间不对。
    3. TimeZone.getTimeZone()的用法

同理:outputFileName = "***${date}_${versionName}.apk"

  • 加入判断区分debug和release

用于区分debug和release的两种不同的名字:

 
 
  1. if(variant.buildType.name.equals('debug')){
  2. .....
  3. }

 
 
  1. if(variant.buildType.name.equals('release')){
  2. .....
  3. }

最终用法

 
 
  1. android.applicationVariants.all { variant ->
  2. variant.outputs.all {
  3. //def date = new Date().format("yyyyMMdd" , TimeZone.getTimeZone("Asia/Shanghai"))
  4. def date = new Date().format("yyyyMMdd" , TimeZone.getTimeZone("GMT+08"))
  5. if(variant.buildType.name.equals('debug')){
  6. outputFileName = "****${date}_${versionName}.apk"
  7. }
  8. if(variant.buildType.name.equals('release')){
  9. outputFileName = "****${date}_${versionName}.apk"
  10. }
  11. }
  12. }

猜你喜欢

转载自blog.csdn.net/jim19890923/article/details/80306135