我正在使用以下代码重命名我的apk文件:

 applicationVariants.all { variant ->
            android.defaultConfig.versionName = variant.mergedFlavor.versionName;
            renameAPK(variant, defaultConfig)
        }

def renameAPK(variant, defaultConfig) {
    variant.outputs.each { output ->
        def formattedDate = new Date().format('ddMMMyy')
        def applicationName = "Myapp"


        def alignedFile = output.outputFile
        def unalignedFile = output.packageApplication.outputFile

        def fileName = applicationName + "_" + defaultConfig.versionName + "_" + variant.buildType.name + "_" + formattedDate


        //If there's no ZipAlign task it means that our artifact will be unaligned and we need to mark it as such.
        if (variant.buildType.zipAlignEnabled) {
            fileName = fileName + ".apk"
            output.outputFile = new File(alignedFile.parent, fileName)
        }
        fileName = fileName + "-unaligned.apk"
        output.packageApplication.outputFile = new File(unalignedFile.parent, fileName)


    }


在大多数情况下,这可以正常工作。但是,偶尔在尝试将应用程序安装到设备上时出现错误消息:


  Gradle构建完成于1s 615ms 12:37:04 PM EmptyThrowable:The APK
  文件./build/outputs/apk/Myapp_4.0_debug_18Apr16.apk不存在于
  磁盘。


问题是在这种情况下,Gradle使用的日期是错误的。如果我从命令行运行gradle脚本,它将生成带有正确日期的apk。

但是,如果我从Android Studio中选择“运行”,则gradle会计算错误的文件名。

我尝试了使缓存无效并重新启动Android Studio。并且,清洁项目和重建。没有任何办法可以100%地解决此问题。

有人遇到过吗?

最佳答案

将APK名称与时间戳或动态计数器配合使用时效果不佳(取决于更改率),因为Android Studio将APK名称保留在缓存中。
AS运行过时的文件或抱怨没有APK

10-05 22:55
查看更多