The APK file does not exist on disk

标签: android studiogradleapk修改apk文件名
1410人阅读 评论(6) 收藏 举报
分类:

背景

如果你使用Android studio 遇到这个问题,那么一般你是想对编译时生成的apk文件进行自定义命名,并且你的命名规则包含动态部分,比如,命名规则中使用了时间戳。由于gradle在执行编译命令和安装命令时有时间差,且调用了两次你的名称规则,导致编译出来的apk名称和安装时获取到的apk名称不一致,所以它就报找不到指定的apk文件了。

场景

一般修改编译后apk文件名,在gradle是这样配置的

android {
    applicationVariants.all{variant->
        variant.outputs.each{output->
            if(variant.buildType.name.equals('release')) {
                def oldFile = output.outputFile
                def newName = 'dayjoke_V'+defaultConfig.versionName+'_'+getDate()+'-release.apk';
                output.outputFile = new File(oldFile.parent, newName)
            }
        }
    }
}

def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyy_MM_dd_HH_mm_ss')
    return formattedDate
}

但是这种命名规则是到秒级的,所以每次构建和安装时获取的文件名称都不一样,每次都会报错。

解决方案

  1. 遇到这个问题时,首先想到的是,如何让编译出来的apk文件名和要安装的文件名相同,而gradle 执行安装的task是installRelease,那么就是如何动态修改installRelease 命令中指定安装的文件名。虽然这是一个方向,但是我并不会耶没有找到修改的方法。最简单的办法就是固定apk的文件名,至少不要使用时间戳这种容易改变的命名规则。
  2. 后来找到另一种解决办法,可以使得照样使用时间戳来命名apk文件,配置如下:
android {
    applicationVariants.all{variant->
        variant.outputs.each{output->
            if(variant.buildType.name.equals('release')) {
                def oldFile = output.packageApplication.outputFile
                def newName = 'dayjoke_V'+defaultConfig.versionName+'_'+getDate()+'-release.apk';
                output.packageApplication.outputFile = new File(oldFile.parent, newName)
            }
        }
    }
}

def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyy_MM_dd_HH_mm_ss')
    return formattedDate
}

不同之处在于outputFile

output.outputFile

output.packageApplication.outputFile

通过编译执行比较,发现,前者即用来编译出apk文件,也用于安装;而后者,只是编译出apk文件。如下图:

使用output.packageApplication.outputFile
output.packageApplication.outputFile

使用output.outputFile
output.outputFile

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:535226次
    • 积分:4353
    • 等级:
    • 排名:第6897名
    • 原创:105篇
    • 转载:22篇
    • 译文:5篇
    • 评论:307条
    关于我
    博客专栏
    最新评论