轉(zhuǎn)載地址http://blog.sina.com.cn/s/blog_5de73d0b0102yffd.html
AAPT 是全稱是 Android Asset Packaging Tool卿泽,它是構(gòu)建 App揍拆,甚至是構(gòu)建 Android 系統(tǒng)都必不可少的一個(gè)工具窜司。它的作用是將所有資源文件壓縮打包到Android APK 當(dāng)中。我們?cè)?Android SDK 目錄下可以找到它迎吵。
AAPT2 是 AAPT 的全新版本铣缠,從 Android Studio 3.0 開始捺宗,它被作為默認(rèn)的資源打包工具。
在開發(fā) App 的時(shí)候屎即,有時(shí)候會(huì)遇到 AAPT2 error,一般如下:
Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.
at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.
at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.
at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.
網(wǎng)上很多人說事富,可以禁用 AAPT2 以解決該錯(cuò)誤技俐,具體做法是:在 gradle.properties 文件中,增加一行 “android.enableAapt2=false”统台。
但是雕擂,Android Studio 會(huì)提示你,你不應(yīng)該禁用 AAPT2贱勃,相反井赌,無論如何你都應(yīng)該使用 AAPT2:
The option 'android.enableAapt2' is deprecated and should not be used anymore.
Use 'android.enableAapt2=true' to remove this warning.
It will be removed at the end of 2018..
我們看看如何在不禁用 AAPT2 的情況下解決這些錯(cuò)誤谤逼。
首先,AAPT2 是打包資源文件的工具仇穗,如果 AAPT2 報(bào)錯(cuò)了流部,那么可以肯定是資源文件有問題(且不論AAPT2內(nèi)部錯(cuò)誤)。
構(gòu)建 App 的時(shí)候纹坐,打開 Build 窗口枝冀,點(diǎn)擊 “Toggle View” 切換到文本輸出。
切換后如下圖所示:
在這種視圖下耘子,可以看清楚 gradle 的執(zhí)行輸出果漾。通過 仔細(xì)翻閱 這些輸出內(nèi)容,我們可以分析出錯(cuò)誤原因:
上述輸出內(nèi)容說明:
1)發(fā)生錯(cuò)誤的文件是 bedit_activity.xml谷誓;
2)錯(cuò)誤原因是 android:background 屬性值不被兼容绒障,當(dāng)然有時(shí)候經(jīng)常是xml屬性填寫錯(cuò)誤導(dǎo)致AAPT2的ERROR。
我們打開文件看一下:
這里很明顯就看出問題了片林, 就是顏色值填寫錯(cuò)了端盆,多一個(gè)“#”號(hào),修正之后费封,重新 build 一下焕妙,問題解決。