当前位置: 首页 > news >正文

Android Studio Narwhal 4:创建空应用报错 —— AAPT2 process unexpectedly exit 的排查与解决

网罗开发(小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


文章目录

    • 前言
    • 问题回顾
    • 一步步的“从快到深”修复建议
      • 1) 清空 Gradle 缓存 + 重启 Android Studio(最常见、最快)
      • 2) 刷新依赖、强制重新下载(`--refresh-dependencies`)
      • 3) 检查杀软 / 文件锁 / Windows 特殊问题
      • 4) 检查 Android SDK Build-Tools / aapt2 版本兼容性
      • 5) 增大 Gradle / aapt2 的内存(万一是 OOM)
      • 6) 如果报错特定到某个 PNG(资源损坏),尝试定位并替换该资源
      • 7) 作为最后手段:收集日志并上报或搜索相同版本的已知 issue
    • 为什么这些方法能解决问题
    • 可运行的最小 Demo
    • 实用调试命令合集
    • 如果以上都不能解决,收集这些信息发帖求助
    • 快速总结

前言

最近你在 Android Studio Narwhal 4 创建了一个空项目,运行就报这个错误:

AAPT2 aapt2-8.13.0-13719691-windows Daemon #0: Unexpected error during compile '...notification_oversize_large_icon_bg.png', attempting to stop daemon.

这是个常见但不太好定位的错误:看起来是 AAPT2 在处理 aar 里的 PNG 资源时崩溃了。下面我把可能的原因、一步步的检查与修复方案,以及能直接运行/验证的 demo 和脚本都放齐了,方便你直接试。

我在下面的关键建议引用了社区/issue 实例:清理 Gradle 缓存是常见且有效的快速修复办法,还有一些 buildserver / CI 中也出现了类似 aapt2 在处理 PNG 时报错的案例,可参考。(Stack Overflow)

问题回顾

  • Android Studio:Narwhal 4(即比较新的 Studio 版本)

  • Gradle wrapper:gradle-9.2.0

  • compileSdk / targetSdk = 36

  • 报错集中在 :app:processDebugResources,进一步是 AarResourcesCompilerTransform 在 transform androidx.core:core:1.13.1 的资源(notification_oversize_large_icon_bg.png)编译时报错并停止 aapt2 daemon。

  • 你已尝试网上很多方法但仍未解决。

从错误信息看,核心是 AAPT2 在编译某个 PNG 时“意外退出”。社区里的常见有效方法有:清理 / 删除 Gradle 缓存、Invalidate Caches / Restart、检查本地 Gradle 缓存是否损坏、排查杀毒/锁文件、检查构建工具版本等。(Stack Overflow)

一步步的“从快到深”修复建议

下面把最常见且实用的修复按优先级列出,按顺序做,通常前三条就能解决大多数因缓存或临时文件损坏导致的 aapt2 崩溃问题。

1) 清空 Gradle 缓存 + 重启 Android Studio(最常见、最快)

许多报 AAPT2 的问题是 Gradle 缓存或 transform 中间产物损坏导致的。可以先删掉 .gradle\caches(Windows)或 ~/.gradle/caches(Linux/Mac),然后 Android Studio 执行 Invalidate Caches / Restart。这个方法在社区帖里多次验证有效。(Stack Overflow)

Windows PowerShell(管理员)示例:

# 关闭 Android Studio
Stop-Process -Name studio -ErrorAction SilentlyContinue# 删除 .gradle 缓存(路径按你的用户目录调整)
Remove-Item -Recurse -Force "$env:USERPROFILE\.gradle\caches"# (可选)删除项目里的 .gradle 和 build 目录
Remove-Item -Recurse -Force ".gradle"
Remove-Item -Recurse -Force "app\build"# 重新打开 Android Studio,执行 Build -> Clean Project -> Rebuild Project

Linux / macOS:

# 退出 Android Studio,然后
rm -rf ~/.gradle/caches
rm -rf <your-project>/.gradle
rm -rf <your-project>/app/build
# 打开 Android Studio -> File -> Invalidate Caches / Restart

为什么:AAPT2 的中间产物(transform 的 workspace)存放在 Gradle cache 里,如果某个资源在缓存里损坏或 transform 中间状态不对,AAPT2 会在处理该文件时崩溃。清缓存能让构建重新下载 AAR 和资源并重新 transform。(Stack Overflow)

2) 刷新依赖、强制重新下载(--refresh-dependencies

在项目目录运行 gradle 刷新依赖,避免使用损坏的缓存 artifact:

./gradlew clean assembleDebug --refresh-dependencies --no-daemon --stacktrace

--stacktrace 会打印更完整的堆栈,便于进一步排查。

3) 检查杀软 / 文件锁 / Windows 特殊问题

在 Windows 下,杀毒软件或文件索引程序可能会锁定 Gradle 缓存里的文件,导致 aapt2 读写异常或崩溃。常见做法:

  • 临时关闭杀毒软件(或把 C:\Users\<你>\.gradle\caches 加入白名单);

  • 检查是否有权限问题(以管理员身份运行 Android Studio);

  • 检查路径过长问题(Windows 下 path length),把项目放到 C:\projects\myapp 这样短路径试试。

4) 检查 Android SDK Build-Tools / aapt2 版本兼容性

虽然 AAPT2 是随 Android Gradle Plugin (AGP) 提供,但如果 build-tools 或 AGP 版本出现兼容问题,也可能触发 aapt2 崩溃。建议:

  • 在 SDK Manager 中确保已安装 Android SDK Build-Tools(对应 API 36 的推荐版本);

  • 确保使用的 JDK 是 Java 11(你的 compileOptions 已设 Java 11,确认 Android Studio 使用的 JDK 也是 11)。

你可以在 gradle.properties 或 Studio 配置里设置 org.gradle.java.home 指向 JDK 11。

5) 增大 Gradle / aapt2 的内存(万一是 OOM)

有时候 aapt2 在处理大量或复杂资源(某些 PNG)时会因内存问题崩溃。可以在 gradle.properties 中增加 JVM 内存:

org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8

注意不要把内存设得超过机器可用内存。

6) 如果报错特定到某个 PNG(资源损坏),尝试定位并替换该资源

错误中指出具体文件 notification_oversize_large_icon_bg.pngandroidx.core:core:1.13.1 aar 里。通常这是库内资源,你不应该直接修改库。但可以:

  • 手动解压该 aar(位于 Gradle 缓存),查看该 PNG 是否损坏;

  • 如果确实损坏,可以删除该 aar 缓存,强制重新下载(第 1、2 步已涵盖);

  • 如果你有公司镜像/离线仓库,确认仓库里的 artifact 没问题。

7) 作为最后手段:收集日志并上报或搜索相同版本的已知 issue

如果以上步骤都没解决,收集完整构建日志(带 --stacktrace --debug),并把 aapt2 的崩溃堆栈贴到 Issue Tracker / StackOverflow / Android Issue Tracker。社区里也有类似 CI 报错案例(aapt2 在 Linux/Windows 上处理某些 PNG 崩溃的记录),能作为参考。(about.gitlab.com)

为什么这些方法能解决问题

  • Gradle 缓存损坏或中间 transform 文件损坏,是 aapt2 崩溃的高频原因;删除缓存通常能复原。(Stack Overflow)

  • Windows 文件锁、杀毒或路径问题会导致 aapt2 无法正常读取资源,从而退出。

  • aapt2 有时会因为 OOM 或资源损坏崩溃,增加内存或替换资源可以避免。

  • 如果是库 artifact 本身损坏(rare),需要重新下载或从其他源获取正确的 artifact。(monitor.f-droid.org)

可运行的最小 Demo

下面给出一个最小 build.gradle(Gradle Kotlin DSL 或 Groovy 都行),以及 gradle-wrapper.properties。你可以新建一个项目,直接替换成下面配置来验证构建是否成功(目的是排除你项目里其他自定义配置的问题)。

settings.gradle(Groovy):

rootProject.name = 'MyApp'
include ':app'

app/build.gradle(Groovy 最小示例;把你的 libs alias 风格先去掉以便排查):

plugins {id 'com.android.application' version '8.2.0' apply falseid 'org.jetbrains.kotlin.android' version '1.9.0' apply false
}apply plugin: 'com.android.application'
apply plugin: 'org.jetbrains.kotlin.android'android {namespace 'com.example.myapplication'compileSdk 36defaultConfig {applicationId "com.example.myapplication"minSdk 24targetSdk 36versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled false}}compileOptions {sourceCompatibility JavaVersion.VERSION_11targetCompatibility JavaVersion.VERSION_11}kotlinOptions {jvmTarget = '11'}buildFeatures {compose true}
}dependencies {implementation 'androidx.core:core:1.13.1'implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'implementation 'androidx.activity:activity-compose:1.7.2'implementation platform('androidx.compose:compose-bom:2024.09.00')implementation 'androidx.compose.ui:ui:1.6.0'implementation 'androidx.compose.material3:material3:1.1.0'testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.6'
}

gradle-wrapper.properties(保持你当前的 gradle-9.2.0):

distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip

运行:

./gradlew clean assembleDebug --refresh-dependencies --no-daemon --stacktrace

如果最小项目能成功构建,说明问题更可能出在你原项目的某个插件、libs alias 或 buildSrc/catalog 配置上;如果最小项目也失败,那问题更可能和本地 Gradle 缓存 / aapt2 二进制 / SDK 安装 / 系统环境相关。

实用调试命令合集

  • 强制刷新依赖并看详细日志:
./gradlew clean assembleDebug --refresh-dependencies --no-daemon --stacktrace --info
  • 只删除特定缓存文件夹(Windows 示例):
# 删除 specific transformed workspace(按报错路径定位)
Remove-Item -Recurse -Force "$env:USERPROFILE\.gradle\caches\9.2.0\transforms\7cda8e4fd21abbb6eb18516f272159af"
  • 查看 aapt2 可执行文件(AGP 会通过 gradle cache 提供 aapt2):
# 在 Linux/macOS 上
find ~/.gradle -type f -name "aapt2*"# 在 Windows PowerShell
Get-ChildItem -Path "$env:USERPROFILE\.gradle" -Recurse -Filter "aapt2*"

如果以上都不能解决,收集这些信息发帖求助

  1. 完整的错误堆栈(用 --stacktrace --info--debug);

  2. gradle.propertiesbuild.gradle(project + app)、gradle-wrapper.properties

  3. java -version(确认 JDK 版本);

  4. 运行 OS(Windows 版本 / mac / linux)和 Android Studio 版本;

  5. 是否使用公司内部 Maven 镜像或离线仓库;

  6. 是否能复现在最小 demo(如上示例)上。

把这些信息提供给 StackOverflow / Android Issue Tracker / Android Studio 问题反馈,开发者或社区能更快定位 root cause。社区里已有类似 CI/构建服务遇到 aapt2 在处理 notification_oversize_large_icon_bg.png 时崩溃的 issue,可作为参考。(about.gitlab.com)

快速总结

  1. 先删 ~/.gradle/caches + 项目 .gradle/build,Invalidate Caches / Restart Studio。(Stack Overflow)

  2. ./gradlew clean assembleDebug --refresh-dependencies --stacktrace(观察是否重现)。

  3. 关杀毒或把 .gradle\caches 加白名单;尝试短路径(如 C:\proj)避免 Windows 路径问题。

  4. 检查 JDK 11、SDK Build-tools 安装与 AGP 版本是否匹配;增加 org.gradle.jvmargs 内存(如必要)。

  5. 若依然失败,收集 --stacktrace --debug 日志并上报社区 / issue。

http://www.dtcms.com/a/552780.html

相关文章:

  • 九寨:在山水间触摸生活的诗意
  • C++(23):延长for循环临时变量生命期
  • Android Studio gradle下载失败报错
  • 贵州 做企业网站的流程58同城最新消息招聘
  • Kubernetes 双层 Nginx 容器环境下的 CORS 问题及解决方案(极端情况)
  • Kimi发布新一代注意力架构!线性注意力实现75% KV缓存减少、6倍解码速度提升
  • 做电子商务系统网站建设wordpress图片加水印
  • 电机参数标幺化与定点计算在整数MCU上的实现
  • Rust开发之错误处理与日志记录结合(log crate使用)
  • 2025年11月1日(星期六)骑行笔架山
  • opencv 学习: 03 初识 cv:Mat
  • 数据结构(c++版):邻接矩阵的实现
  • 在华为TaiShan 200系列服务器基于CentOS 7.6/7.7创建虚拟机
  • Parallels Desktop 26.1.1 for Mac 秋叶QiuChenly中文解锁直装版,最好用的macOS虚拟机
  • Linux chmod权限速成指南
  • 企业网站建设市场的另一面写字就能赚钱做网站
  • 【已解决】解决CondaVerificationError:PyTorch安装包损坏问题
  • UI引擎里AceAbility::OnStart函数1
  • 卸载工具uninstall tool下载安装教程(附安装包)绿色版
  • Bug: 升级内核后有线网络无法使用
  • 帕金森症手绘图像分类数据集
  • 本地生活曝光缺失?GEO语义锚点来救场
  • Rust开发之Result枚举与?运算符简化错误传播
  • Rust专项——其他集合类型详解:BTreeMap、VecDeque、BinaryHeap
  • 软件开发模式架构选择
  • 网站开发设计注册注册小程序
  • Git命令(三)
  • Spring Security 新手学习教程
  • 72.是否可以把所有Bean都通过Spring容器来管
  • DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(四)