Gradle问题: AAPT2 error和"aapt.exe'' finished with non-zero exit value 1或者AAPT2与Robelectric不兼容

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

转自:https://blog.csdn.net/yi_master/article/details/80363372

就当是做笔记,之前百度了好多问题都没有准确答案,要么就是直接说问题怎么解决,没有解释为什么会出现这个问题的原因,然后以后再遇到这样的问题就又不知道怎么解决了。这里转自别人的一篇文章,解释的很详细。

 

在使用Android Studio编译工程的时候,时常会遇到aapt2和aapt的问题,如下

Caused by: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:454)
    at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:411)
    at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332)
    at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

Process 'command 'D:\SoftWare\AndroidSDK\build-tools\26.0.2\aapt.exe'' finished with non-zero exit value 1
那这个问题是如何发生,该如何解决?顺着来看

1)首先介绍下什么是Gradle
       简单的来说,Gradle是一个自动化项目构建工具,他可以帮助你配置项目的依赖,将项目进行编译,打包,部署…,也可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用;
       我们的Android Studio其实就是基于Intellij IDEA的安卓开发环境的一个开发工具,他集成了Gradle插件,这样我们就可以在AS愉快的撸代码了

2)那怎么查看自己Android Studio上Gradle的版本?
方法一:如下图

è¿éåå¾çæè¿°
方法二:查看gradle-wrapper.properties文件,如下图

è¿éåå¾çæè¿°


3)aapt和aapt2是做什么用的?
aapt即Android Asset Packaging Tool,安卓资源打包工具,他负责将资源文件如xml,图片打包成R.Java(资源索引表),以及.arsc资源文件;随着Gradle版本的升级,在Android Plugin for Gradle 3.0.0里面,默认开启了AAPT2增量资源处理功能,

引用了这么多,那么我们就来看看aapt2 error和aapt.exe finished with non-zero exit value 1是如何产生的

我们用Android Studio来新建一个Module,我的AS版本为3.2 Canary 11,默认集成的Gradle版本为4.1,新建的Module如下

è¿éåå¾çæè¿°

可以看出我是基于Android5.0构建的一个Moudle,Moudle结构如下

 

è¿éåå¾çæè¿°

然后你编译一下工程,就会报aapt2 erro的错误,如下图

è¿éåå¾çæè¿°


正如上面所说Android Gradle 3.0.0默认开启aapt2,那我们既然用不到,关掉他就好,关掉的方法如下

如果您的构建因为 AAPT2 资源处理问题失败或者您想要使用 Roboelectric,您可以通过以下方式停用 AAPT2:在您的 gradle.properties 文件中设置 android.enableAapt2=false,并从命令行运行 ./gradlew --stop,重新启动 Gradle 后台程序。

但是我们的Module里面没有gradle.properties文件啊?好吧,我们自己新建一个,并添加android.enableAapt2=false,最新的项目结构如下

è¿éåå¾çæè¿°

可是重新编译之后,报"aapt.exe’’ finished with non-zero exit value 1错误,如下图

è¿éåå¾çæè¿°

这又是为什么?
aapt是资源打包工具,那么我们就跟踪下项目的资源文件,看下项目的Manifest.xml,如下

è¿éåå¾çæè¿°

在看下项目的res文件

è¿éåå¾çæè¿°

可以发现manifest.xml中引入了mipmap/ic_launcher资源,而ic_launcher.xml使用的是vector这样的标签,因为我们项目是基于android 5.0编译的,但是5.0还不支持vcetor这样高级属性,顾出现了"aapt.exe’’ finished with non-zero exit value 1的错误,那解决办法就是删除这个资源,使用默认的png替换即可,替换的项目结构如下

è¿éåå¾çæè¿°


我删除了原有项目中的mipmap文件夹,删除了ic_launcher_background.xml这样的利用vector属性的xml文件,重新编译项目,一切恢复正常.

其实还有一种情况就是你的manifest.xml文件出现了报错,但是运行的时候没有指向报错的文件,运行的时候也会出现aapt2这个问题。也可以着手在这里解决。

综述:

在使用高版本的AS和Gradle构建项目的时候,会自动生成带有高级属性的项目,如利用vector属性的xml,mipmap资源;如果你的项目选择用的编译版本即android版本过低,则会出现aapt2和aapt的问题;

解决方法也很简单,去除这些高级属性
--------------------- 
作者:yi_master 
来源:CSDN 
原文:https://blog.csdn.net/yi_master/article/details/80363372 

 

AAPT2 AAPT2(Android 资源打包工具)是一种构建工具,Android Studio Android Gradle 插件使用它来编译打包应用的资源。AAPT2 会解析资源、为资源编制索引,并将资源编译为针对 Android 平台进行过优化的二进制格式。Android Gradle 插件 3.0.0 及更高版本在默认情况下会启用 AAPT2。您通常不需要自行调用 aapt2。不过,如果您更愿意使用自己的终端构建系统而不是 Android Studio,则可以从命令行使用 AAPT2 阅读详情

相关推荐

android错误 aapt.exe已停止工作的解决方法

在使用eclipse进行安卓java的编程的时候,有时候我们会遇到这样的问题:那就是无故弹出aapt.exe停止工作的提示,虽然程序不会崩溃,但是这个提示经常弹出很是烦人。今天,小编就来教大家aapt.exe停止工作如何解决 android异常——aapt.exe已停止工作 在android开发时,当build项目时,发生如下异常aapt.exe已停止工作,其他无任何错误提示,发生这个错误一般是资源文件或是xml文件中有错误造成的。 解决方法: clean一下,可以发现console中会有错误提示,然后根据错误提示解决。 我的的情况: [2013-04-20 14:35:50 – Big

AAPT2 编译报错 AAPT2 error

1用windows10 下android studio 3.0 新建项目报错 2.错误提示 Error:Execution failed for task ':app:mergeDebugResources'. Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: A

weifengdada的博客 3410

Moveit Servo学习

MoveIt Servo功能配置指南 摘要:本文介绍了MoveIt Servo的功能特性,包括支持关节速度、末端执行器速度位置控制,以及安全功能如奇点检查、碰撞检测等。通过示例展示了如何运行伺服控制demo,详细解析了关键节点话题。最后以睿尔曼rml_63机器人为例,讲解了如何自定义伺服配置文件,包括环境设置、输入输出参数配置、平滑滤波器规划场景监控等关键配置项。文章提供了从基础使用到自定义机器人配置的完整指导,帮助开发者实现高效的实时运动控制。

Fisher的博客 1135

Aapt2异常

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666 from:https://blog.csdn.net/qq_29760591/article/details/78351004 今天android studio提示可以升级到3.0,升级后gradle也提示升级...

孤云博客 2061

安卓14适配编译问题坑总结

如果Gradle升级到8.0以上,jdk需要升级至17以上,建议使用Tools-AGP Upgrade Assistant自动升级,会自动对项目下需要变更的文件进行升级否则需要手动添加很多配置,升级时需要注意将所有Maven仓的Http改为Https,不允许使用Http拉库了。如果使用了R8混淆,Java17默认会开启R8 fullMode混淆模式,在网络请求序列化数据结构时会出现崩溃,可以关闭fullMode混淆,在gradle.properties中配置。具体适配方式都是参考官方文档。

CruxFinn的博客 1万+

AAPT2错误

一个图片资源错误错误 错误产生原因:美工给了一个jpg格式的图片 而程序要求png格式。自己自作聪明直接将jpg后缀名替换成png后缀名。可以直接运行程序到手机上,但是打包签名APK文件就会报AAPT2错误,导致打包错误。这种错误不容易查出来。 解决方法:千万不要怕麻烦,耍聪明。一定要问美工要对应格式的对应你需要的格式图片文件替换。 ...

jz07306的博客 766

android aapt2 error,AAPT2错误:一旦我将我的android工作室更新到最新版本,就会发生此错误...

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:app:processDebugResources’.at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsT...

weixin_29119033的博客 886

彻底解决aapt2异常

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。 from:https://blog.csdn.net/qq_34879948/article/details/80313690 升级android studio 3.0后,在创建新项目时会报一个异常Error:...

孤云博客 1万+

4、Android SDK命令行工具AAPT2

AAPT2(Android 资源打包工具)是一个Android SDK构建工具,Android Studio Android Gradle 插件使用它来编译打包应用的资源。AAPT2 会解析资源、为资源编制索引,并将资源编译为针对 Android 平台进行过优化的二进制格式。 Android Gradle 插件 3.0.0 及更高版本默认情况下会启用 AAPT2,因此您通常不需要自行调用 aapt2。不过,如果您更愿意使用自己的终端构建系统而不是 Android Studio,则可以从命令行使用

w00347190的博客 1968

aapt2 错误

android.enableAapt2=false Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict 发生这类型的错误,是当我们修改了.build中的compileSdkVersion,产生所依赖的dependency当前版本不一致导致的 解决办法 build->Rebuid...

weixin_34409822的博客 248

AAPT2 process unexpectedly exit. Error output

AAPT2 process unexpectedly exit. Error output

qq_46237697的博客 941

AAPT2命令行使用总结

AAPT2(Android Asset Packaging Tool)是一种构建工具,Android Studio Android Gradle 插件使用它来编译打包应用的资源。AAPT2 会解析资源、为资源编制索引,并将资源编译为针对 Android 平台进行过优化的二进制格式

qq_19942717的博客 3811

Gradle配置】AAPT2 aapt2-7.0.3-7396180-windows Daemon #0: Unexpected error during link

Android Gradle build error "AAPT2 aapt2-4.1.0-6503028-windows Daemon #0: Unexpected error during link, attempting to stop daemon."

xiaoyu_wu的博客 1万+

aapt2.exe 已停止工作错误

android开发

ailianshuoliuyux的专栏 1019

android studio运行报错解决ERROR:AAPT: aapt2.exe E 07-28 20:50:04 2192 14540 LoadedArsc.cpp:94] RES_TABLE_

具体报错信息如下:错误分析从你给出的错误信息可知,在尝试加载 Android SDK 平台资源时出现了问题,具体是在处理android-36版本的android.jar文件中的资源表时出错。错误类型为资源表条目偏移实际条目数据重叠,这往往是由 SDK 损坏或者版本不兼容造成的。

qq_24913133的博客 1363

android studio同步报错: ERROR:AAPT: aapt2.exe E 07-31 13:36:48 30256 18216 LoadedArsc.cpp:94] RES_TABLE_

报错显示要使用35版本需要更新的gradle插件, 这里说明我们的gradle吧版本不够新, 两种解决方案即使用最新的gradle插件, 或者按照报错提示使用当前版本兼容的32版本。即将bulid.gradle(app)文件的两处配置改为32即可。

white___1的博客 3582

完美解决Android编译时出现aapt.exe finished with non-zero exit value 1 吐血整理

问题描述 楼主几周前搞的一个项目,源代码:https://github.com/nikolajohn/NFC-Based-Multiplexed-Sensor 最近由于课题组需要,重新拿起这个项目使用 但是在打开时却出现了很神奇的报错: 报错信息很简洁,当然报错信息的简洁也意味着你拿到的信息很少 Process 'command 'C:\Users\Administrator\Ap...

Code for Coffee 4万+

程序出现aapt错误

Android Studio加载程序,出现了如此errorError:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT error: check logs for details Error:Execution failed for task ':app:mergeDebugR...

hpujsj14的博客 948
上一篇: Android AndroidManifest.xml文件权限出现“Permission is only granted to system apps”的解决办法
下一篇: Android】Retrofit网络请求参数注解,@Path、@Query、@QueryMap...
harvey_yihui
博客等级 码龄11年 14粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值