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