Android Studio3.0修改apk名称

简介: 1. 如何修改打包好的apk名称Android Studio从2.0升级到3.0之后,要修改打包后的apk名称,必须采用以下配置:android { .

1. 如何修改打包好的apk名称

Android Studio从2.0升级到3.0之后,要修改打包后的apk名称,必须采用以下配置:

android {
    ...
    
    applicationVariants.all {variant ->
        variant.outputs.all {output ->
            if (variant.buildType.name == "debug") {
                output.outputFileName = "iou_v${android.defaultConfig.versionName}_debug_${getCurrentTime()}.apk"
            } else if (variant.buildType.name == "release") {
                output.outputFileName = "iou_v${android.defaultConfig.versionName}_release_${getCurrentTime()}.apk"
            }
        }
    }
}

//获取当前时间
def getCurrentTime() {
    return new Date().format("yyyy-MM-dd HH:mm:ss")
}

以我自己的某个工程为例,最终打出的一个debug包如下:

iou_v1.1.6.1_debug_2018-10-17 17:11:36.apk

这断配置的核心是设置output.outputFileName,鼠标点上去可以发现,这个output对象是BaseVariantOutput类型的,但是我们查看BaseVariantOutput的代码,发现死活找不到outputFileName属性,这样就很令人费解了,网上找了一圈也没相关资料介绍。
秉着刨根究底的精神,我们看看这个output到底是个什么鬼?采用以下代码在控制台打印出来看看:

  println output 
  Field[] fields = output.getClass().getDeclaredFields()
  fields.each { field ->
      println field.name
  }
ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}}
__dyn_obj__
__meta_class__
__mapping__
__apkData__
__assemble__
__baseName__
__dirName__
__filterTypes__
__filters__
__mainOutputFile__
__name__
__outputFile__
__outputFileName__
__outputType__
__outputs__
__packageApplication__
__processManifest__
__processResources__
__versionCode__
__versionCodeOverride__
__versionNameOverride__
__zipAlign__

可以看到这个output的真实类型是ApkVariantOutputImpl_Decorated,里面有个属性__outputFileName__,这其实是个装饰类,它真正的类型是ApkVariantOutput,outputFileName就是ApkVariantOutput里的属性值。

2. 如何打包完成后将apk复制到指定目录

我们做持续集成的时候,自动打包之后,可能会需要将包复制到指定的目录。

project.tasks.all {task ->
    if ("assembleDebug" == task.name || "assembleRelease" == task.name) {
        //在打包完成之后,增加一个任务
        task.doLast {
            println "====${task.name} doLast===="
            android.applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    def apkFile = output.outputFile
                    //如果目标文件存在
                    if (apkFile.exists()) {
                        //将apk文件复制到桌面去
                        copy {
                            from apkFile.getCanonicalPath()
                            into "/Users/hjy/Desktop"
                        }
                        //复制到指定目录后删除原文件
                        delete(apkFile)
                    }
                }
            }
       }
    }
}
目录
相关文章
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1674 83
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
974 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
577 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
617 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
XML Android开发 数据格式
Android实战经验之Kotlin中快速实现动态更改应用图标和名称
本文介绍在Android中通过设置多个活动别名动态更改应用图标和名称的方法,涉及XML配置及Kotlin代码示例。
681 10
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
2689 0
使用keytool查看Android APK签名
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
1858 4
|
Android开发
解决android apk安装后出现2个相同的应用图标
解决android apk安装后出现2个相同的应用图标
1329 2
|
Android开发
将AAB(Android App Bundle)转换为APK
将AAB(Android App Bundle)转换为APK
1012 1
|
Android开发 开发者
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
2481 1

热门文章

最新文章