禁止aapt2编译后出现错误:Caused by: org.gradle.process.internal.ExecException: Process 'command '项目路径xxx\26...

情况概述:

AAPT2 (Android Asset Packaging Tool) is a build tool that Android Studio and Android Gradle Plugin use to compile and package your app’s [resources].AAPT2 parses, indexes, and compiles the resources into a binary format that is optimized for the Android platform.这是官方的AS用户指南定义的.

简单来说,aapt2就是编译和打包资源的工具,一般使用到的都是输入为资源文件,输出为带有.flat扩展名的中间二进制文件。在Android Studio 3.0.0或者更高版本默认开启aapt2,当然也可以在配置文件gradle.properties中 手动关闭aapt2。


关闭aapt2.png

另外,还存在一个废弃的aapt,aapt2是在aapt上做了优化,作用一样,aapt2为资源的增量编译提供了支持。

简单介绍后 ,谈一下bug,报错如下

Caused by: org.gradle.process.internal.ExecException: Process 'command '项目路径xxx\26.0.2\aapt.exe'' finished with non-zero exit value 1

另外发现布局报错,具体已经显示得很明显了:


布局错误.png

找到错误位置:


xml文件1.png
xml文件2.png

使用到相对布局中相对另一个View的位置,红色标志属性报错,但是这个id在此xml已存在了,试图在id前多加一个“+”。修改正确。

aapt2用户指南链接:https://developer.android.google.cn/studio/command-line/aapt2
报错修改参考链接:https://blog.csdn.net/asdf9328/article/details/50360358

问题总结

小豆最先使用默认的aapt2进行编译,禁止后再次将资源文件进行编译,未改过除此其他的任何demo,出现此问题仍不知何种原因,在解决这个问题中,发现很多朋友也遇到过这个问题,总结有以下几点:

1.各种资源包之间存在冲突,或者重复,解决冲突就行
2.使用图片问题,把jpg格式的图片全部替换为png格式的图片
3.缓存问题,缓存的目录在\build\intermediates下面
4.使用高版本的AS和Gradle构建项目,而项目选择用的编译版本过低,可去除高版本的高级属性

这些朋友也解决了各自遇到的问题了,实属有效。所以要想解决问题,我们应该独自思考,去发现问题根本,小豆一直
不知aapt2和aapt内部编译机制,还应深入了解aapt才行,经常被师傅开玩笑说,自己写代码就是写bug,但是在bug路上,我学到了很多。若朋友们有不同想法,欢迎帮小豆指正啦。

你可能感兴趣的:(禁止aapt2编译后出现错误:Caused by: org.gradle.process.internal.ExecException: Process 'command '项目路径xxx\26...)