AndroidStudio报错AAPT: libpng error: Not a PNG file

Android Studio在执行Clean任务时遇到'Execution failed for task ':app:mergeDebugResources''错误,原因是资源文件hq_point.png并非PNG格式。错误日志表明文件实际格式与PNG不符,可能由JPG文件直接改名导致。解决方案是使用Photoshop打开图片,将其正确保存为PNG格式并替换原文件。部分网上建议在build.gradle中添加配置来禁用PNG检查,但这可能不是最佳实践。

AndroidStudio在Clean时报的错误信息(在Gradle Console里):

AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
Error: java.lang.RuntimeException: Some file crunching failed, see logs for details
:app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: java.lang.RuntimeException: Some file crunching failed, see logs for details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 21.053 secs

从错误的日志的提示上是说:Not a PNG file。从而引发了

Execution failed for task ‘:app:mergeDebugResources’.
Error: java.lang.RuntimeException: Some file crunching failed, see logs for details

刚开始也是不是太理解这个错误,而且错误也没有非常明显的定位,只是说这不是一个PNG的文件。不过经过多次Clean的结果AS还是定位出了具体是哪个文件,是在drawable文件(Eclipse转AS沿用了drawable)下的名为hq_point.png的文件,乍一看没啥问题,文件名就是以png结尾的,可以是点开图片来看看就出现了如下的情况:
这里写图片描述
文件的真实格式和文件名的结尾完全不是一个格式,在Eclipse中没有检查出来,可是到了Studio中就过不了,估计最大的可能是直接将后缀名为jpg格式的图片直接改为后缀名为png格式的图片。
解决方法:用ps打开(如果打不开就将图片后缀改为jpg格式,然后 File ——Save For Web ),存储为PNG格式,替换掉原工程里面的就可以了。

网上的解决方法:
在buildToolsVersion 下面加入如下的两句话(Gradle学的不好具体不知道是什么意思),大概是禁止了检查是否是png功能

    compileSdkVersion 23
    buildToolsVersion '23.0.3'
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false

如有阐述不对,欢迎指导。

Android Studio 构建应用时出现 `:app:processDebugResources Android resource linking failed` 错误,通常是因为资源文件(如 XML 文件、清单文件等)中存在无法解析的引用或配置错误。以下是常见的几种原因及其解决方案: ### 1. **检查 AndroidManifest.xml 中的属性错误** 在引用[2]和引用[3]中提到,错误信息显示: ``` error: attribute android:dataExtractionRules not found. error: failed processing manifest. ``` 该问题可能出现在使用了新版本 SDK 或 Gradle 插件,但项目未正确适配相关特性。 - 确保使用的 `compileSdkVersion` 至少为 **31** 或更高,因为 `dataExtractionRules` 是从 Android 12(API 31)开始引入的属性。 - 如果不需要该功能,可尝试移除该属性声明。 ### 2. **清理并重建项目资源** 引用[5]指出,有时资源文件虽然被删除,但构建系统未能及时更新缓存,导致链接失败。 - 执行 **Build > Clean Project** 和 **Build > Rebuild Project**。 - 删除 `app/build` 目录下的所有内容,重新构建。 - 若仍存在问题,可尝试手动删除 `intermediates` 文件夹中的 `packaged_manifests` 和 `res` 缓存目录。 ### 3. **检查布局文件中的资源引用** 引用[5]中还提到了如下错误: ``` error: resource drawable/view_selector (aka 包名:drawable/view_selector) not found. ``` 这表明某个 `.xml` 布局文件引用了一个不存在的资源文件(例如 `view_selector.xml`)。 - 检查报错的 XML 文件,确认引用的资源名称是否拼写错误。 - 确保资源文件确实存在于 `res/drawable/` 或其他对应的资源目录中。 - 使用 `R.drawable.xxx` 引用时确保资源类型匹配。 ### 4. **处理空资源文件或无效 XML 文件** 引用[5]指出,在撤销新建 XML 文件时仅清除了内容而未删除文件,可能导致 AAPT2 在构建过程中无法正确处理资源。 - 检查是否存在空的 XML 文件或无效的资源文件,并将其删除。 - 可以尝试切换到旧版本 Gradle 插件(如 3.0.1)来暴露此类问题,修复后再切回当前版本。 ### 5. **更新 Gradle 插件与同步设置** 引用[5]提到使用较新版本的 Gradle 插件(如 3.2.1)可能会隐藏某些资源错误。 - 更新 `gradle.properties` 文件,启用 AndroidX 支持: ```properties android.useAndroidX=true android.enableJetifier=true ``` - 在 `build.gradle` 中更新插件版本并同步: ```groovy classpath 'com.android.tools.build:gradle:7.2.1' ``` ### 6. **使用命令行查看详细错误日志** 如果 Android Studio 的错误提示不够明确,可以通过命令行获取更详细的构建日志: ```bash ./gradlew assembleDebug --stacktrace ``` 或启用 `--info` 输出级别以获得更多信息: ```bash ./gradlew assembleDebug --info ``` ### 7. **检查 Gradle 和 SDK 版本兼容性** - 确保 `Gradle` 版本与 `Android Gradle 插件版本` 兼容,参考 [官方兼容性表](https://developer.android.com/studio/releases/gradle-plugin#updating-gradle)。 - 升级至最新稳定版 Android Studio 并更新 SDK 工具。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值