首页 > 解决方案 > 处理大原始文件时android studio aapt构建超时

问题描述

我尝试使用 android studio 4.2.1 在原始文件夹中包含一个大小为 1.6G 的文件。aapt 将在 10 分钟后超时。当然我们也可以把文件放到云端或者服务器上,然后在用户第一次使用的时候下载。Apple Xcode 可以轻松完成,没有任何问题。这就是 android studio 永远不会成为顶级 IDE 的原因:你不能只是把一堆开源工具放在一起,然后希望它们一起创造奇迹。你需要有人像 Xcode 一样照顾整体性能。Gradle 需要 5G 内存(org.gradle.jvmargs=-Xmx5000m),仍然无法理解 1.6G 文件。它继续逐步淘汰 gcc、ndk-build 等好东西,推出无用的功能、不同语法的 gui……,发明无用的新语言。llvm 真的给了他们那个愚蠢的选择。

AAPT2 aapt2-4.2.1-7147631-windows 守护进程#0 未能在超时内关闭 java.util.concurrent.TimeoutException:AAPT2 aapt2-4.2.1-7147631-windows 守护进程#0:未能在 30 秒内关闭。在 com.android.builder.internal.aapt.v2.Aapt2Daemon.shutDown(Aapt2Daemon.kt:171) 在 com.android.builder.internal.aapt.v2.Aapt2Daemon.shutDown(Aapt2Daemon.kt:171) 强制关闭.android.builder.internal.aapt.v2.Aapt2Daemon.handleError(Aapt2Daemon.kt:206) 在 com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError$default(Aapt2Daemon.kt:191) 在 com.android .builder.internal.aapt.v2.Aapt2Daemon.link(Aapt2Daemon.kt:129) 在 com.android.builder.internal.aapt.v2.Aapt2DaemonManager$LeasedAaptDaemon.link(Aapt2DaemonManager.kt:176) 在 com.android.builder .internal.aapt.v2.Aapt2DaemonManager$leasingAapt2Daemon$1.link(Aapt2DaemonManager.kt:

任务:app:processDebugResources 失败

任务 ':app:processDebugResources' 执行失败。

执行 com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction AAPT2 aapt2-4.2.1-7147631-windows 守护进程 #0:链接超时,试图停止守护进程时发生故障。这在正常情况下不应该发生,如果发生,请提出问题。

标签: android

解决方案


不要将 1.6 GB 的文件作为原始文件包含在内。首先,如果您这样做,您的应用程序可能无法运行,因为资源在启动时加载到内存中,并且您将超过单个应用程序的 RAM 限制。其次,这对于您的 APK 来说下载时间非常长。如果您绝对必须将 1.6 GB 的文件作为应用程序的一部分,那么它应该是扩展文件或下载文件,而不是应用程序本身的一部分。

如果您绝对必须将其作为 apk 本身的一部分 - 它不能是原始文件。它需要成为一种资产。

真的,如果你不明白为什么一个巨大的 RAW 文件是个坏主意,你不应该抱怨 XCode(很可能是我自 DOS 时代以来使用过的最糟糕的 IDE)与 Android Studio。您显然不了解该平台并且正在滥用它。您的应用程序使用的内存将超出其应有的千兆字节。


推荐阅读