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

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

我重启了Android Studio,但是我无法解决这个问题。我怎么解决呢? 谢谢你!


当前回答

在我的案例中,问题是调试配置不知何故变得无效,即使测试方法名称、类或包没有改变。

我删除配置从运行->编辑配置,在这里:

Android studio会自动创建一个新的。

其他回答

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

我的问题是在文件名中包含分钟-它寻找appname_debug_0.9.0.1 1_170214_2216.apk,而生成的文件是appname_debug_0.9.0.1 1_170214_2217.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)
        }
    }

如果你只想知道结论,请翻到最后一部分。谢谢。

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

Build ->清洁项目 检查构建变量 重启Android Studio(如你所述)

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

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

例如:

Android Studio 2.0预览版(build 143.2443734)。

签出到一个特定的提交(这样它就从head中分离出来了):git Checkout [commit_hash] 运行项目 Android Studio提示:APK文件/Users/MyApplicationName/app/build/outputs/ APK /app-debug- head . APK在磁盘上不存在 打开目录,有一个文件的名字是:app-debug-(HEAD.apk(有一个额外的圆括号) 运行git分支 *(HEAD在1a2bfff分离)

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

上面的例子只是一个可能导致同样问题的场景,但根本原因不一定与你的相同。

因此,我强烈建议您检查目录(以找到差异),并检查您的构建。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分支时,我经常看到类似的问题。对我来说,关闭AndroidStudio rm -rfv ~/Library/Caches/AndroidStudio*并重新启动AndroidStudio是门票。

对我来说,问题是它无法找到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上。