当我在Android Studio上尝试调试应用程序时,会提供此日志输出:
磁盘上不存在APK文件/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk.
我重新启动了Android Studio,但我无法解决这个问题.我该如何解决?谢谢
单击此选项可解决错误:
当我更新到Android Studio 3.1时,我遇到了同样的问题.我在这里找到的所有其他解决方案都是非常手动的,因为每次都必须清理和重建,这一点都不好.但是感谢Iman Marashi在这里的答案,我能够解决它.
转到运行 - >编辑配置...
确保在"发布前"部分中有"Gradle-aware Make":
要添加它,请单击+号并选择Gradle-aware Make,然后会出现一个弹出窗口,只需将文本字段留空,然后单击OK和OK.
在我的例子中,执行"与Gradle文件同步项目"有帮助.重启Andoid Studio和清除缓存都没有做任何事情.
如果您只是想知道结论,请转到最后一节.谢谢.
通常在构建项目失败时,您可以尝试一些常见的技巧:
建立 - > 清洁项目
检查构建变体
重启 Android Studio(如您所述)
但是要更具体地解决您的问题 - 当Android Studio无法在磁盘上找到APK文件时.这意味着Android Studio实际上已经成功构建了项目,并且还生成了APK,但是,出于某种原因,Android Studio无法找到该文件.
在这种情况下,请根据日志检查打印目录.这很有帮助.
例如:
使用Android Studio 2.0 Preview(内部版本143.2443734).
签出特定的提交(以便它与头部分离):git checkout [commit_hash]
运行项目
Android Studio告诉:磁盘上不存在APK文件/ Users/MyApplicationName/app/build/outputs/apk/app-debug-HEAD.apk
转到目录,有一个实际命名的文件:app-debug-(HEAD.apk(附加一个括号))
运行git branch
*(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就是一张票.
在Android Studio 3.1.1中选择File | 使用Gradle文件同步项目.
在Android Studio 3中,选择"文件"| 同步.
然后再次运行您的项目.
今年是2018.Android Studio版本是3.2.0 alpha3,我们仍然遇到这个问题.由于以上都不适合我,这是我的2美分:
每次发生这种情况我只是从命令行生成apk:
gradlew assembleDebug
UPDATE
删除文件夹.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) } }