轉(zhuǎn)載地址http://blog.sina.com.cn/s/blog_5de73d0b0102yffd.html
AAPT 是全稱是 Android Asset Packaging Tool,它是構(gòu)建 App,甚至是構(gòu)建 Android 系統(tǒng)都必不可少的一個工具。它的作用是將所有資源文件壓縮打包到Android APK 當(dāng)中。我們在 Android SDK 目錄下可以找到它。
AAPT2 是 AAPT 的全新版本,從 Android Studio 3.0 開始,它被作為默認(rèn)的資源打包工具。
在開發(fā) App 的時候,有時候會遇到 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 以解決該錯誤,具體做法是:在 gradle.properties 文件中,增加一行 “android.enableAapt2=false”。
但是,Android Studio 會提示你,你不應(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 的情況下解決這些錯誤。
首先,AAPT2 是打包資源文件的工具,如果 AAPT2 報(bào)錯了,那么可以肯定是資源文件有問題(且不論AAPT2內(nèi)部錯誤)。
構(gòu)建 App 的時候,打開 Build 窗口,點(diǎn)擊 “Toggle View” 切換到文本輸出。
切換后如下圖所示:
在這種視圖下,可以看清楚 gradle 的執(zhí)行輸出。通過 仔細(xì)翻閱 這些輸出內(nèi)容,我們可以分析出錯誤原因:
上述輸出內(nèi)容說明:
1)發(fā)生錯誤的文件是 bedit_activity.xml;
2)錯誤原因是 android:background 屬性值不被兼容,當(dāng)然有時候經(jīng)常是xml屬性填寫錯誤導(dǎo)致AAPT2的ERROR。
我們打開文件看一下:
這里很明顯就看出問題了, 就是顏色值填寫錯了,多一個“#”號,修正之后,重新 build 一下,問題解決。