欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android Studio AAPT2 error: check logs for details

程序员文章站 2022-05-12 23:33:11
...

一般错误为:

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给解释了