1. 程式人生 > >Android Studio AAPT2 error: check logs for details

Android Studio AAPT2 error: check logs for details

一般錯誤為:

com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details

AAPT 是全稱是 Android Asset Packaging Tool,它是構建 App,甚至是構建 Android 系統都必不可少的一個工具。它的作用是將所有資原始檔壓縮打包到Android APK 當中。我們在 Android SDK 目錄下可以找到它。

AAPT2 是 AAPT 的全新版本,從 Android Studio 3.0 開始,它被作為預設的資源打包工具。

有是人說出現這個是因為gradle的儲存路徑中有中文,不過我的沒有也報錯的。

一般的解決做法是在gradle.properties檔案中新增android.enableAapt2=false,這樣可以編譯通過,但是AS會給出下面的警告提示:

The option 'android.enableAapt2' isdeprecated and should not be used anymore.
Use 'android.enableAapt2=true' to removethis warning.
It will be removed at the end of 2018..

意思是這個東西已經棄用了,它將在2018年底被移除,建議你使用’android.enableAapt2=true’來移除警告。。。這下鬱悶了,你要設定為false, 它反而要你設定為true。。。而且置為false的話,到年底的時候新版本可能不支援了。。。所以最好的解決方法,還是要檢視詳細的錯誤日誌找到出錯的對應資源改掉。

例如,我在使用的時候,報的具體錯誤為:

style attribute @android:attr/windowEnterAnimation not found

對應的資原始檔為:

  <style name="myDialogAnim" parent="android:Animation">
      <item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
      <item name="@android:windowExitAnimation">@anim/dialog_exit</item
> </style>

這個是在一個styles.xml當中的,這裡需要把@android:windowEnterAnimation中的@符號去掉就好了,可能是新的版本中不支援這樣寫了,改為:

  <style name="myDialogAnim" parent="android:Animation">
      <item name="android:windowEnterAnimation">@anim/dialog_enter</item>
      <item name="android:windowExitAnimation">@anim/dialog_exit</item>
  </style>

同時要找出工程所有的這樣寫法的style資原始檔,將@符號都去掉。但是有一個地方是通過下面方式引用的上面的style, 怎麼改都不行:

<style name="Dialog.FullScreen" parent="Theme.AppCompat.Dialog">
        ...
        <item name="android:windowAnimationStyle">@myDialogAnim</item>
</style>

這樣總是報錯,最後沒辦法,改成下面這樣,不引用了

<item name="android:windowAnimationStyle">@null</item>

總之是出錯的地方,能改的都改掉,但是有時候我們引用的是第三方的遠端依賴庫,這時如果報AAPT2錯誤的話,就麻煩了。。。因為你改不了,只能android.enableAapt2=false了,但這又不是長久方法,無解了。。。只能等Google給解釋了