美文网首页
禁止aapt2编译后出现错误:Caused by: org.gr

禁止aapt2编译后出现错误:Caused by: org.gr

作者: 一份土豆 | 来源:发表于2019-02-21 18:11 被阅读0次

    情况概述:

    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.gr

          本文链接:https://www.haomeiwen.com/subject/fitjdqtx.html