APK文件在磁盘上不存在

当我尝试Android Studio上的debugging应用程序给这个日志输出:

磁盘上不存在APK文件/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk。

我重新启动了Android Studio,但是我无法解决这个问题。 我该如何解决? 谢谢

点击此选项解决错误:

在这里输入图像描述

如果你只是想知道结论,请到最后一节。 谢谢。

通常当build设项目失败时,你可以尝试一些常见的技巧:

  • build设 – > 清洁工程
  • 检查构build变体
  • 重新启动 Android Studio(如您所述)

但要更具体到您的问题 – 当Android Studio无法find磁盘上的APK文件。 这意味着Android Studio实际上已经成功构build了该项目,并生成了APK,但由于某些原因,Android Studio无法find该文件。

在这种情况下,请根据日志检查打印的目录。 这很有帮助。

例如:

使用Android Studio 2.0 Preview(版本143.2443734)。

  1. 签出到一个特定的提交(以便从头部分离): git checkout [commit_hash]
  2. 运行项目
  3. Android Studio告诉:APK文件/ Users / MyApplicationName / app / build / outputs / apk / app-debug-HEAD.apk在磁盘上不存在
  4. 转到目录,有一个实际命名的文件: app-debug-(HEAD.apk (带有一个额外的括号)
  5. 运行git分支

    *(头部脱离1a2bfff)

所以在这里你可以看到, 由于我的gradle构build脚本的错误 ,文件命名是不知何故的。

上面的例子只是一个可能导致相同问题的情况,但并不一定与您的相同。

因此,我强烈build议你检查一下目录 (找出差异),并检查你的build.gradle脚本(你可以在那里改变apk的名称,如下所示):

applicationVariants.all { variant -> variant.outputs.each { output -> def newFileName = "whatever you want to name it"; def apk = output.outputFile; output.outputFile = new File(apk.parentFile, newFileName); } } 

在我的情况下,执行“与Gradle文件同步项目”帮助。 无论是重新启动Andoid Studio,也不清除caching做了什么。

确保你没有撇号或在你的path

我通常在切换git分支时目睹了类似的问题。 对我来说,closuresAndroid Studio rm -rfv ~/Library/Caches/AndroidStudio*并重新启动Android Studio是门票。

在我的情况下,我在我的应用程序文件path中使用了一个特殊的字符。 我closures了Android Studio,并从应用程序文件path中删除了字符”。 当我重新开始项目时,一切正常。

对于Unix用户(Linux / MacOs X),不要在命令行中删除〜/ .gradle / caches /

 $ cd path_to_you_project $ touch build.gradle 

然后请求Android Studio构buildAPK,它将自己重置gradlecaching。

我已经解决了从顶部窗口和构buildAPK使用生成选项build立一个apk。 不需要做一些奇怪的事情。

我的问题是我将版本号附加到APK。 更改版本号并重新同步Gradle为我解决了这个问题。

 def appendVersionNameVersionCode(variant, defaultConfig) { variant.outputs.each { output -> if (output.zipAlign) { def file = output.outputFile def removeApp = file.name.replace("app-", "") def removeType = removeApp.replace("-release", "") def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk") output.outputFile = new File(file.parent, fileName) } def file = output.packageApplication.outputFile def removeApp = file.name.replace("app-", "") def removeType = removeApp.replace("-release", "") def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk") output.packageApplication.outputFile = new File(file.parent, fileName) } } 

文件 – >无效caching/重新启动

我有同样的问题。 这是由于path中的虚假名称。 在这个path中有一个特殊的字符:C:\ User \ My App \ Projekte-Tablet&Handy我删除了“&”字符,它运行的很好。

如果您尝试了所有上述的答案,并且无法正常工作,请尝试禁用“即时运行”function。 经过一番努力,这一次帮助了我。

文件 – >设置 – >生成,执行,部署 – >即时运行 – >取消选中checkbox

在清理构build之后,我也遇到了这个问题。 对我来说,解决scheme是我只是同步gradle,它为我工作。

我的问题是在文件名中包含分钟数 – 当生成的文件是appname_debug_0.9.0.1_170214_2217.apk时,它查找appname_debug_0.9.0.1_170214_2216.apk,所以输出文件名代码(从其他位置捕获)显然是从两个不同的点在构build。

 applicationVariants.all { variant -> variant.outputs.each { output -> def project = "appname" def SEP = "_" // def flavor = variant.productFlavors[0].name def buildType = variant.variantData.variantConfiguration.buildType.name def version = variant.versionName def date = new Date(); def formattedDate = date.format('yyMMdd_HHmm') def newApkName = project + SEP + /*flavor + */ SEP + buildType + SEP + version + SEP + formattedDate + ".apk" output.outputFile = new File(output.outputFile.parent, newApkName) } } 

面对与gradle 1.5相同的问题

我不得不清理构build文件:

build设 – >清洁项目

并build立一个APK来强制gradle文件的完整编译和同步:

生成 – >生成APK

我仍然不知道为什么或如何发生。

如果您使用的是Linux,请尝试将写入权限设置为app / build文件夹。

我更改build.gradle文件litle信息,并单击“立即同步”,只是好的。

删除目录〜/ .gradle / caches /。 在Android Studio打开的时候这样做是可以的。 (请参阅安装错误的包名称)在Android Studio上按“与Gradle文件同步项目”图标运行该项目,远程path将是正确的。

请参阅answer @ Android Studio在运行.apk时获取软件包名称错误

确保在日志中生成的path中 – 在您的情况下:

/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk

文件夹“输出”确实有一个“apk”文件夹。

这是我的问题,如果它不在那里,您将需要按照下面的截图运行gradle中的“assembleRelease”任务。

运行gradle assembleRelease任务的步骤 然后该文件夹将被生成。

上面没有任何帮助,但是我通过在“构build工具”面板中切换到另一种方式,然后切换回所需的方法,我想到了这一点。

修改文件:build.gradle(app目录)。 其实:你不应该改变这个文件,只能通过这个来获取同步提示,然后同步项目。

该button被称为“与Gradle文件同步项目”,它看起来很像: Gradle同步 …总是需要点击它,当更新版本号,这是导致另一个APK文件名(除非文件名没有改变,安装软件包始终工作,暗示文件名被caching)。 等效的Gradle CLI选项似乎是--recompile-scripts

请参阅附录D. Gradle命令行 。

首先通过编辑configuration清除清理器,在构buildapk之后清理构build器。

 Click on edit from set run/debug then click on gradle list select the clean project item and then click on -(top 2nd from left).