当我在 Android Studio 上尝试调试应用程序时,会给出以下日志输出:
APK 文件 /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk 在磁盘上不存在。
我重新启动了 Android Studio,但我无法解决这个问题。我该如何解决?谢谢
单击此选项可解决错误:
https://i.stack.imgur.com/2KSyU.png
如果您在更新到 Android Studio V 3.1 后遇到此问题,请尝试以下操作。
当我更新到 Android Studio 3.1 时,我也遇到了同样的问题。我在这里找到的所有其他解决方案都是非常手动的,因为您每次都必须清理和重建,这根本不好。但是感谢Iman Marashi在这里的回答,我能够解决它。
转到运行-> 编辑配置...
确保在启动前部分有“Gradle-aware Make”:
https://i.stack.imgur.com/9YoVI.png
要添加它,请单击 + 号并选择 Gradle-aware Make,然后会出现一个弹出窗口,只需将文本字段留空,然后单击 OK 和 OK。
就我而言,执行“使用 Gradle 文件同步项目”会有所帮助。重新启动 Andoid Studio 和清除缓存都没有做任何事情。
build.gradle
不同的文件中的命名脚本后,为我做了诀窍,所以 Android Studio 没有自动接受更改并提示我同步。
File -> Sync Project with Gradle Files
stackoverflow.com/a/19932896/2527204
如果你只想知道结论,请到最后一节。谢谢。
通常当构建项目失败时,您可以尝试一些常见的技巧:
构建 -> 清理项目
检查构建变体
重新启动 Android Studio(如您所述)
但要更具体地解决您的问题 - 当 Android Studio 在磁盘上找不到 APK 文件时。这意味着Android Studio实际上已经成功构建了项目,并且还生成了APK,但是由于某种原因,Android Studio无法找到该文件。
在这种情况下,请根据日志检查打印的目录。这很有帮助。
例如:
使用 Android Studio 2.0 预览版(内部版本 143.2443734)。
签出特定提交(使其与头部分离): git checkout [commit_hash] Run project Android Studio 告诉: APK 文件 /Users/MyApplicationName/app/build/outputs/apk/app-debug-HEAD.apk 没有进入磁盘存在的目录,有一个文件实际命名为:app-debug-(HEAD.apk (带一个额外的括号) Run 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);
}
}
确保路径中没有撇号或 &
确保在运行/调试配置 >> 启动部分之前有 Grading-aware Make:
https://i.stack.imgur.com/N1qMW.png
当我切换 git 分支时,我经常看到类似的问题。对我来说,关闭 Android Studio rm -rfv ~/Library/Caches/AndroidStudio*
并重新启动 Android Studio 就是一张票。
在 Android Studio 3.1.1 中选择文件 |将项目与 Gradle 文件同步。
在 Android Studio 3 中,选择文件 |同步。
然后再次运行您的项目。
这一年是2018年。Android Studio版本是3.2.0 alpha3,我们仍然遇到这个问题。由于以上都不适合我,这是我的 2 美分:
每次发生这种情况时,我都会从命令行生成 apk:
gradlew assembleDebug
更新
删除文件夹 .AndroidStudio[version]
并丢失所有首选项和缓存...似乎可以解决问题
就我而言,我在我的应用程序文件路径中使用了一个特殊字符。我关闭了 Android Studio 并从我的应用文件路径中删除了 ' 字符。当我重新打开该项目时,一切正常。
我已经使用顶部窗口中的 Build 选项和 Build APK 解决了构建 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)
}
}
Build ---> Build APK(s) 并确保它有效
文件 -> 使缓存无效/重新启动
如果您尝试了上述所有答案但均无效,请尝试禁用“即时运行”功能。经过所有尝试,这对我有所帮助。
文件 -> 设置 -> 构建、执行、部署 -> 即时运行 -> 取消选中复选框
在清理构建后,我也遇到了这个问题。对我来说,解决方案是我只是同步 gradle,它对我有用。
在我的情况下,问题是调试配置以某种方式变得无效,即使测试方法名称、类或包没有改变。
我在这里从 Run->Edit Configurations 中删除了配置:
https://i.stack.imgur.com/blhP0.png
Android Studio 会自动创建一个新的。
同步、清理、重建和无效缓存并重新启动
他们都没有为我工作。
我已经删除了发布文件夹和调试文件夹中的 APK 和 output.json 文件,然后尝试同步、清理和构建,然后它工作正常。
或者简单地删除包含 apk 和 output.json 文件的文件夹(在调试/发布的情况下)
gradle 1.5面临同样的问题
我不得不清理构建文件:
构建 -> 清理项目
并构建一个 APK 来强制完整编译和同步 gradle 文件:
构建 -> 构建 APK
我仍然不知道为什么或如何发生。
如果您使用的是 Linux,请尝试将写入权限设置为 app/build 文件夹。
我有同样的问题。这是由于路径中的错误名称。路径中有一个特殊字符,如下所示:C:\User\My App\Projekte-Tablet&Handy 我删除了“&”字符,效果很好。
我的问题是在文件名中包含分钟数 - 当生成的文件为 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)
}
}
对我来说,问题是它以某种方式真的找不到 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 解决。删除 app 文件夹中的 .gradle、.idea 和 build 目录。然后尝试再次运行它,您将不会看到错误。
我将 build.gradle 文件更改了一些信息,然后单击“立即同步”,就可以了。
删除目录 ~/.gradle/caches/。在 Android Studio 打开时执行此操作是可以的。 (参考 pm 安装错误的包名) 在 Android Studio 上按“Sync project with Gradle files”图标运行项目,远程路径将正确。
参考答案@Android Studio gets package name wrong when running .apk
确保在您的日志中生成的路径中 - 在您的情况下:
/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk
文件夹“输出”确实有一个“apk”文件夹。
那是我的问题,如果不存在,您需要按照以下屏幕截图在 gradle 中运行“assembleRelease”任务;
https://i.stack.imgur.com/3nPDu.png
以上没有任何帮助我,但我通过在“构建工具”面板中切换到另一种风格然后切换回所需的风格来解决这个问题。
修改文件:build.gradle(app 目录)。事实上:你不应该改变这个文件,只有通过这个来获得同步提示,然后同步项目。