APK文件不存在于磁盘上。

230

当我尝试在Android Studio上调试应用程序时,会出现以下日志输出:

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

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


9
我该怎么解决?编译一个apk。 - Tim
1
@TimCastelijns 我其实很好奇Android Studio是否不够智能,无法将创建调试APK任务包含在deb应用程序任务中。Gradle应该为此而生。 - Trilarion
1
@Trilarion 默认情况下,AS执行gradle的assembleDebug任务来编译调试apk。这里似乎有些问题,需要手动编译。 - Tim
3
对我来说,添加Gradle Make-Aware修复了我的问题。https://dev59.com/IWMl5IYBdhLWcg3woYIv#25871525 - Iammesol
2
尝试添加“Gradle Make-Aware”https://dev59.com/IWMl5IYBdhLWcg3woYIv#25871525 - Andy Cheng
对我来说,这个问题可以通过清除Android Studio缓存来解决,方法是使用 rm -rfv ~/Library/Caches/AndroidStudio*。另一个解决方法是将apk重命名为Android Studio正在寻找的apk名称,但这只是一个临时解决方案。 - The Tokenizer
41个回答

465

点击此选项以解决错误:

运行: 查看 > 工具窗口 > Gradle > [项目] > 任务 > 构建 > 构建


6
如果您的项目目录名称中包含特殊字符,也会导致出现此错误。 - N.P
50
这对我完全没用。我建议提供解释为什么这些方法会起作用,而不只是告诉读者该怎么做,这样他们就可以理解/避免/解决后续错误。 - person27
3
您能否解释一下这段代码具体是做什么的,以及为什么会出现这个问题? - Hamidreza Sahraei
有趣的是,在我的Android Studio 3.1.4上,由于某种原因它没能正常工作,至少在我重启IDE之前是这样的。 - tsaulic
6
在最新版本的Android Studio中,那个按钮已经不存在了,但我相信它应该是“Sync Project With Gradle Files”选项,这个选项对我是有效的。 - nasch
显示剩余5条评论

211

如果您在更新到Android Studio V 3.1后遇到了此问题,请尝试以下方法。

当我更新到Android Studio 3.1时,我也遇到了同样的问题。我在这里找到的所有其他解决方案都相当繁琐,因为每次您都需要清理和重建,这一点都不好。但幸运的是,感谢 Iman Marashi 在这里的回答,我能够解决它。

转到Run->Edit Configurations ...

确保在Before launch部分中有“Gradle-aware Make”:

Run/Debug Configurations

要添加它,请单击 + 符号,然后选择 Gradle-aware Make ,然后将弹出窗口留空文本字段并单击 OK OK


13
这是最近3.1更新的修复方法。对我而言,这个问题的第一个症状是APK无法对代码中的更改做出“响应”。现在我明白了,新的APK根本没有正常构建。 - David Gay
这个答案能解决我的问题。我更新到了3.1版本,出现了这个错误。 - ZarNi Myo Sett Win
这有助于解决我遇到的问题,即我的build.gradle根据variantversionCodeversionName更改APK名称。 - Rockin4Life33
在构建发布版 APK 时,Android Studio 卡死并被终止后,我遇到了这个问题,而那个答案解决了这个问题。 - lior_13

69

在我的情况下,执行“与Gradle文件同步项目”有所帮助。 重新启动Andoid Studio或清除缓存都没有起作用。


1
谢谢。这也帮助了我。无论是重启Android Studio还是清除缓存都没有帮助。 - ivan.panasiuk
在我修改了命名脚本后,这个方法对我起到了作用。该脚本位于一个与我的普通 build.gradle 文件不同的文件中,因此 Android Studio 没有自动检测到更改并提示我进行同步。 - Magnus
这是真正的答案。 - azizbekian
3
文件 -> 与Gradle文件同步项目 - Marlon
在运行单元测试时遇到了问题。它要求选择一个设备来运行单元测试。 - Sergio

34

如果只想知道结论,请前往最后一节。谢谢。

通常当构建项目失败时,您可以尝试以下常见技巧:

  • Build->Clean Project
  • 检查Build Variants
  • 重启Android Studio(如您所提到的)

但是更具体地针对您的问题 - 当Android Studio无法在磁盘上找到APK文件时。这意味着Android Studio实际上已经成功构建了项目,并生成了APK,但由于某种原因,Android Studio无法找到该文件。

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

例如:

使用Android Studio 2.0 Preview (build 143.2443734)。

  1. 检出特定的提交(以使其与head分开):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 branch

    *(HEAD detached at 1a2bfff)

所以在这里,您可以看到,由于我的gradle构建脚本的错误,文件命名有些错误。

以上示例只是可能导致相同问题的一种场景,但不一定是您的根本原因。

因此,我强烈建议您检查目录(找出差异),并检查您的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);
        }
    }

2
我的问题是我在APK名称中添加了应用程序版本,但应用程序版本具有x.y.z格式,并且命名中的“。”(点)会导致错误。因此记住除apk之前的那个点外,不要使用其他点 :) - DraganescuValentin

20

请确保您的路径中没有单引号&


'&' 是阻止我编译的原因。谢谢 @Rim Gazzeh. - Marka A

19

运行/调试配置 >> 启动之前,确保支持分级构建的Make选项已勾选:

示例图片


17

我在切换git分支时经常遇到类似的问题。对于我来说,关闭Android Studio rm -rfv ~/Library/Caches/AndroidStudio*,然后重新启动Android Studio就可以解决问题。


我的类似问题通过这种方法得到了解决。我在gradle构建中重命名apk文件,将版本号附加到文件名中,试图调试我的主活动时,尝试运行错误的apk文件名(先前的版本号)。不确定这是什么时候开始的,但它一直工作正常,直到它不再正常。 - David
Android Studio的缓存是一个非常大的问题! - GeekHades
是的。我刚刚(再次)增加了我的构建号,这会改变apk文件名,我又遇到了这个问题。 - David

13

在Android Studio 3.1.1中,选择“文件”→“与Gradle文件同步项目”。

在Android Studio 3中,选择“文件”→“同步”。

然后再次运行您的项目。


在 Studio v3.1.1 中,选择文件 -> 与 Gradle 文件同步项目,然后你就可以开始了。 - Napolean
然后,在顶部工具栏(带有图标的工具栏)中的一个字段中,接下来从锤子图标开始,您必须返回“应用程序”,在配置下拉菜单中。 - CodeToLife

11

现在是2018年,Android Studio版本为3.2.0 alpha3,我们仍然遇到这个问题。由于上述方法都没有起作用,以下是我的建议:

每次遇到这个问题时,我只需通过命令行生成apk文件:

gradlew assembleDebug

更新

删除文件夹.AndroidStudio[version],会失去所有偏好设置和缓存... 但似乎可以解决问题。


1
但这仅适用于一个构建?如果您进行进一步更改并按下“播放”按钮,它只会推送旧的apk而不重新构建以应用更改。非常恼人,他们在想什么啊。 - behelit

7

在我的情况下,我在应用程序文件路径中使用了一个特殊字符。我关闭了Android Studio并从应用程序文件路径中删除了'字符。当我重新打开项目时,一切都正常工作。


是的,理想情况下,Android Studio应该足够智能,以防止用户在文件路径中使用特殊字符。或者更好的做法是我自己应该遵循良好的编程实践 :) - Immortal Code

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接