当我尝试在Android Studio上调试应用程序时,给出以下日志输出:
APK文件/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk在磁盘上不存在。
我重新启动了Android Studio,但无法解决此问题。我该如何解决?谢谢
当我尝试在Android Studio上调试应用程序时,给出以下日志输出:
APK文件/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk在磁盘上不存在。
我重新启动了Android Studio,但无法解决此问题。我该如何解决?谢谢
Answers:
单击此选项解决错误:
我更新到Android Studio 3.1时也遇到了同样的问题。我在这里找到的所有其他解决方案都是手动的,因为您每次都必须清理和重建,这根本不好。但是感谢Iman Marashi在这里的回答,我得以解决它。
转到运行->编辑配置...
确保在“启动前”部分中具有“可识别Gradle的品牌”:
要添加它,请单击+号并选择Gradle-aware Make,然后会出现一个弹出窗口,只需将文本字段留空,然后单击OK和OK即可。
就我而言,执行“使用Gradle文件同步项目”很有帮助。重新启动Andoid Studio或清除缓存均无济于事。
build.gradle
吗?
File -> Sync Project with Gradle Files
stackoverflow.com/a/19932896/2527204
如果您只想知道结论,请转到最后一节。谢谢。
通常,当构建项目失败时,可以尝试一些常见的技巧:
但更具体地讲您的问题-当Android Studio在磁盘上找不到APK文件时。这意味着Android Studio实际上已经成功构建了项目,并且还生成了APK,但是由于某些原因,Android Studio无法找到该文件。
在这种情况下,请根据日志检查打印的目录。有帮助
例如:
使用Android Studio 2.0预览版(内部版本143.2443734)。
运行git branch
*(HEAD在1a2bfff分离)
因此,在这里您可以看到,由于我的gradle 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);
}
}
通常在切换git分支时,我会遇到类似的问题。对于我来说,关闭Android Studio rm -rfv ~/Library/Caches/AndroidStudio*
并重新启动Android Studio是需要解决的问题。
在Android Studio 3.1.1中,选择文件| 与Gradle文件同步项目。
在Android Studio 3中,选择文件| 同步。
然后再次运行您的项目。
我的问题是我将版本号附加到了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)
}
}
建立--->建立APK,并确定它能运作
如果您使用的是Linux,请尝试设置app / build文件夹的写入权限。
我的问题是在文件名中包含分钟-当生成的文件为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)
}
}
全新的Android Studio 3.1于2018年5月解决。删除.gradle,.idea并在您的应用程序文件夹中构建目录。然后尝试再次运行它,您将不会看到错误。
同步,清理,重建和使缓存无效并重新启动
他们都没有为我工作。
我已经删除了release文件夹和debug文件夹中的APK和output.json文件,然后尝试同步,清理和构建,然后工作正常。
删除目录〜/ .gradle / caches /。打开Android Studio时可以执行此操作。(请参阅pm安装错误的程序包名称)在Android Studio上按“使用Gradle文件同步项目”图标运行该项目,远程路径将正确。
上面没有任何帮助,但是我通过在“构建工具”面板中切换到另一种样式然后再切换回所需的样式来解决这个问题。