磁盘上不存在 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)。
- 签出特定提交(以便它与头部分离):git签出[commit_hash]
- 运行 项目
- Android Studio 提示:APK 文件 /Users/MyApplicationName/app/build/outputs/apk/app-debug-HEAD.apk 在磁盘上不存在
- 进入目录,居然有一个文件,名字是:app-debug-(HEAD.apk(多了一个括号)
运行 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
.
首先通过编辑配置删除清理器,它可能在构建 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 将出现一个弹出窗口,只需将文本字段留空,然后单击 OK 和 OK.
我通过以下方式让它工作:
- 关闭项目
- 在 Android Studio Welcome Window(或文件 > 新建)中,单击导入项目。
我想这迫使它重新安装了 APK,现在一切正常 运行。
Build ---> Build APK(s) and be sure it works
我通过
解决了这个应用
- 首次构建 -> 构建 Apk
- 运行 应用现在
如果它不起作用,请清理并构建项目,然后再次执行 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
当我在 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)。
- 签出特定提交(以便它与头部分离):git签出[commit_hash]
- 运行 项目
- Android Studio 提示:APK 文件 /Users/MyApplicationName/app/build/outputs/apk/app-debug-HEAD.apk 在磁盘上不存在
- 进入目录,居然有一个文件,名字是:app-debug-(HEAD.apk(多了一个括号)
运行 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",它看起来很像:--recompile-scripts
.
首先通过编辑配置删除清理器,它可能在构建 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 将出现一个弹出窗口,只需将文本字段留空,然后单击 OK 和 OK.
我通过以下方式让它工作:
- 关闭项目
- 在 Android Studio Welcome Window(或文件 > 新建)中,单击导入项目。
我想这迫使它重新安装了 APK,现在一切正常 运行。
Build ---> Build APK(s) and be sure it works
我通过
解决了这个应用- 首次构建 -> 构建 Apk
- 运行 应用现在
如果它不起作用,请清理并构建项目,然后再次执行 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