磁盘上不存在 APK 文件

The APK file does not exist on disk

当我在 Android 上尝试调试应用程序时,Studio 给出了这个日志输出:

The APK file /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk does not exist on disk.

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

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

通常在构建项目失败时,您可以尝试一些常用技巧:

  • 构建 -> 清理项目
  • 检查构建变体
  • 重新启动 Android Studio(如您所述)

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

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

例如:

使用 Android Studio 2.0 预览版(内部版本 143.2443734)。

  1. 签出特定提交(以便它与头部分离):git签出[commit_hash]
  2. 运行 项目
  3. Android Studio 提示:APK 文件 /Users/MyApplicationName/app/build/outputs/apk/app-debug-HEAD.apk 在磁盘上不存在
  4. 进入目录,居然有一个文件,名字是:app-debug-(HEAD.apk(多了一个括号)
  5. 运行 git 分支

    *(HEAD 在 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);
        }
    }

我经常在切换 git 分支时遇到类似的问题。对我来说,关闭 Android Studio rm -rfv ~/Library/Caches/AndroidStudio* 并重新启动 Android Studio 是门票。

就我而言,执行 "Sync Project with Gradle Files" 有帮助。重启 Android Studio 和清除缓存都没有任何作用。

我已经解决了使用顶部 window 和构建 APK 中的构建选项构建 apk 的问题。不需要做一些奇怪的事情。

点击此选项解决错误:

遇到与 gradle 1.5

相同的问题

我不得不清理构建文件:

Build -> Clean project

并构建一个 APK 以强制完整编译和同步 gradle 个文件:

Build -> Build APK

我仍然不知道为什么会发生这种情况。

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

我修改了build.gradle文件的一点信息,然后点击"Sync Now",就好了。

删除目录 ~/.gradle/caches/.在 Android Studio 打开时执行此操作是可以的。 (参考pm安装错误的包名) 在 Android Studio 上按 "Sync project with Gradle files" 图标 运行项目和远程路径将是正确的。

参考答案@Android Studio gets package name wrong when running .apk

对于类似 Unix 的用户 (Linux/MacOs X),不要删除 ~/.gradle/caches/,在命令行中执行:

$ cd path_to_you_project
$ touch build.gradle

然后让 Android Studio 构建 APK,它会重置 gradle 缓存本身。

我的问题是我将版本号附加到 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)
    }
}

文件 -> 使缓存无效/重新启动

确保在您的日志中生成的路径中 - 在您的情况下:

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

文件夹 "outputs" 确实有一个 "apk" 文件夹。

那是我的问题,如果不存在,您将需要按照以下屏幕截图 运行 gradle 中的 "assembleRelease" 任务;

然后会生成文件夹。

我遇到了同样的问题。这是由于路径中的错误名称。路径中有一个特殊的字符,如下所示: C:\User\My App\Projekte-Tablet&Handy 我删除了“&”字符,效果很好。

就我而言,我在我的应用程序文件路径中使用了一个特殊字符。我关闭了 Android Studio 并从我的应用程序文件路径中删除了 ' 字符。当我重新启动该项目时,一切正常。

如果您尝试了以上所有答案但都没有用,请尝试禁用 "Instant Run" 功能。经过各种尝试,这对我有所帮助。

文件 -> 设置 -> 构建、执行、部署 -> 即时 运行 -> 取消选中那里的复选框

确保您的路径中没有 撇号&

清理构建后,我也遇到了这个问题。对我来说,解决方案是我只同步 gradle,它对我有用。

以上对我没有任何帮助,但我通过在“构建工具”面板中切换到另一种风格然后切换回所需的风格来解决这个问题。

我的问题是在文件名中包含分钟 - 当生成的文件是 appname_debug_0.9.0.1_170214_2217.apk 时它查找 appname_debug_0.9.0.1_170214_2216.apk 所以输出文件名代码(从其他地方获取)显然是从构建中的两个不同点调用的。

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)
        }
    }

修改file:build.gradle(app目录)。 在fact:you不应该改变这个文件,只能通过这个得到同步提示,然后同步项目。

该按钮名为 "Sync Project with Gradle Files",它看起来很像:...更新版本号时总是需要单击它,这会导致另一个 APK 文件名(除非文件名没有改变,安装包总是有效,这暗示文件名正在被缓存)。等效的 Gradle CLI 选项似乎是 --recompile-scripts.

@see Appendix D. Gradle Command Line.

首先通过编辑配置删除清理器,它可能在构建 apk 后清理构建。

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).

确保 Run/Debugging 配置中有 分级感知制作 >> 在启动 部分之前 :

使用 Android Studio 2.2.1,我从顶部的下拉菜单中点击了 Gradle 文件同步项目选项,工具>Android

与上面发布的答案类似,请参阅下面的屏幕截图,了解如何使用此选项。

    1) This problem occure due to apk file .if your apk file
        (output/apk/debug.apk) not generated in this format . 

    2) you should use always in gradle file .

    buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }

今年是2018年。Android Studio版本是3.2.0 alpha3,我们仍然遇到这个问题。由于上面的 none 对我有用,这是我的 2 美分:

每次发生这种情况时,我只是从命令行生成 apk:

gradlew assembleDebug

更新

删除文件夹 .AndroidStudio[version] 并丢失所有首选项和缓存...似乎可以解决问题

在 Android Studio 3.1.1 select 文件中 |将项目与 Gradle 个文件同步。

在 Android Studio 3 中,select 文件 |同步。

然后 运行 又是你的项目。

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

当我更新到 Android Studio 3.1 时,我遇到了同样的问题。我在这里找到的所有其他解决方案都非常手动,因为您每次都必须清理和重建,这一点都不好。但是多亏了Iman Marashi在这里的回答,我才能够解决它。

转到 运行 -> 编辑配置...

确保您在启动前部分有 "Gradle-aware Make":

要添加它,请单击 + 符号,然后 select Gradle-aware Make 将出现一个弹出窗口,只需将文本字段留空,然后单击 OKOK.

我通过以下方式让它工作:

  1. 关闭项目
  2. 在 Android Studio Welcome Window(或文件 > 新建)中,单击导入项目。

我想这迫使它重新安装了 APK,现在一切正常 运行。

Build ---> Build APK(s) and be sure it works

我通过

解决了这个应用
  1. 首次构建 -> 构建 Apk
  2. 运行 应用现在

如果它不起作用,请清理并构建项目,然后再次执行 1 和 2。

我的问题是,当 apk 存在时,它确实找不到 apk。

The APK file /Users/Paul/AndroidStudioProjects/android-tv-launcher/ui/build/outputs/apk/nameofapk.apk does not exist on disk.
Error while Installing APK

我所要做的就是右键单击 apk-copy 相对路径,然后

adb install -r <paste of relative path>

apk 已安装,可以使用了。 这个问题对我来说发生在 OSX。

2018 年 5 月使用新的 Android Studio 3.1 解决。删除应用程序文件夹中的 .gradle、.idea 和 build 目录。然后再次尝试 运行 它,您将不会看到错误。

我尝试了所有这些方法并且 none 成功了。我最终不得不同时做几件事。非常沮丧,花了这么多时间。

我遇到的问题与 运行 我升级到 AS 3.1 后的单元测试有关。

这是我所做的... 1.) 运行/编辑配置/Select 测试.... 2.) 添加选项 "Gradle-aware Make" 3.) Select 杂项选项卡上的复选框 "Skip installation if ADK has not changed"

祝你好运。

转到 android studio 顶部栏上的“构建”选项 > 创建 'Build APK(s)',创建构建后,打开可用的文件夹 (app\build\outputs\apk),然后关闭文件夹,仅此而已....然后尝试安装该应用程序。

通过更新 Android SDK 构建工具解决了这个问题。

在我的例子中,问题是调试配置变得无效,即使测试方法名称class或包没有改变。

我从 运行->Edit Configurations 中删除了配置,在此处:

Android工作室会自动创建一个新的。

就我而言,只是

View > Tool Windows > Gradle > right click [project] > Refresh Gradle Project

同步、清理、重建和使缓存失效并重新启动

None 其中对我有用。

我已经删除了发布文件夹和调试文件夹中的 APK 和 output.json 文件,然后尝试同步、清理和构建,然后一切正常。

或者干脆 删除包含 apk 和 output.json 文件的文件夹(在调试/发布的情况下)

assemble[Variant] 会在磁盘上为您生成 APK,但不必使用它来调试应用程序。

运行在项目根目录下执行如下命令:

$ ./gradlew clean build assemble[Variant]

GL