android studio 3.0 -Aapt2Exception




系统打包工具异常,什么鬼?

解决方案:

  在gradle-wrapper.properties文件里添加:android.enableAapt2=false 。解决!!!

那就有必要了解下AAPT了:

   AAPT-Android Asset Packaging Tool(android资源打包工具);

   对于怎么构建apk的,借用google官网的一张图,看一下流程:

   

  流程简单说一下:

  1.工程的资源文件(res下的文件),通过AAPT打包成R.java类文件(资源ID索引表),及arsc资源文件;

  2.如果有AIDL(Android Interface definition Language),通过aidl工具,打包成java接口;

  3.R.java和aidl.java通过java编译器编译成.class文件;

  4.class文件和第三方jar或者library通过dx工具打包成dex文件。dx工具的主要作用是将java字节码转换成Dalvik字节码,在此过     程中会压缩常量池,消除一些冗余信息等;

  5.apkbuilder工具会将所有没有编译的资源,.arsc资源,.dex文件打包到一个完成apk文件中中。  6.签名,5中完成apk通过配置的签名文件(debug和release都有),jarsigner工具会对齐签名。得到一个签名后的apk,signed.apk  7.zipAlign工具对6中的signed.apk进行对齐处理,所谓对齐,主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数    倍,这样通过内存映射访问apk文件时的速度会更快。对齐的作用主要是为了减少运行时内存的使用。