添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
精彩文章免费看

AndroidStudio升级3.3.1后打包生成APK报AAPT2的错误解决办法

AndroidStudio升级到3.3.1后项目较长一段时间没有发布新版本的需求,所以一直也就没有打包APK,直到最近运营需求需要上新版本了,打包生成签名后的APK时发现报AAPT2的错误,但点击AndroidStudio里的Run也能在真机上正常运行调试,就是打包的时候报AAPT2的错误。

以下为部分错误log:

Caused by: org.gradle.internal.UncheckedException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.1-5013011-windows Daemon #1: Unexpected error during compile 'F:\android\studioWorkSpace\xxx\xxx\res\drawable-hdpi\off_line_step.png', attempting to stop daemon.This should not happen under normal circumstances, please file an issue if it does. at

从log中可以看到是off_line_step.png这张图片导致的问题,但刚开始没注意到这些,直接去百度、Google中搜com.android.builder.internal.aapt.v2.Aapt2InternalException,确实找到很多网友也遇到了这个问题。

大概是以下几种:

1.在项目gradle.properties文件中添加 --------android.enableAapt2=false来解决。

尝试这种方式后编译报出警告:

WARNING: The following project options are deprecated and have been removed:

android.enableAapt2

This property has no effect, AAPT2 is now always used.

大概意思说这个属性已经不起作用了,不管有没有设置,AAPT2都会被使用。当然这种方式也没有解决我的问题,设置后还是报同样的错误。

2.Gradle缓存目录(一般在用户目录下, C: \Users\用户名\.gradle)中含有中文名称

但我的Gradle缓存目录中确实不好中文,所以肯定也不是这个原因导致的。


AndroidStudio Gradle缓存路径

3.删除.9.png文件

log中的文件也不是.9.png的,所以也不是这个问题导致的。

4.AndroidStudio->Preferences->InstantRun 把钩全部去掉;

试过,在我这不起作用。

5.clean project, Rebuild project

试过,在我这不起作用。

6.file->invalidate caches restart

试过,在我这不起作用。



到此为止,网上所有能搜到的方法都试了一遍,就是不起作用,报的都是同一个错误,很奇怪了,这时再回过头仔细的看log日志,发现是 off_line_step.png这张图片导致的错误。联想到偶尔为了省事会把.jpg等其他非png文件直接改后缀名为.png文件,那是不是这张图片本身有问题呢?打开这张图片,发现这张图片是透明的,那肯定也不是.png格式的问题了。好像进入了死胡同,不管怎么改都会出现这个错误。

最后偶然想到会不会是图片文件大小的问题,死马当活马医的态度,看了下这张图片的大小,不看不知道,看完一激灵。这张图片足足1.9Mb,心理大概有谱了,八九不离十就是图片太大的问题,去 https://tinypng.com/把图片压缩一下,压缩后还有12KB,再次打包运行,终于看到了久违的Build Success。:)



总结一下,上面查到的6种方式,部分人按上述操作后确实解决了他们的问题,只是在我这不适用。

现在的AndroidStudio虽然还会有些bug,有些不可预见的问题,但相比之前,已经很好用,进步太多了。之所以这次这么个小小的问题竟然耗费了这么长时间,还是由于我没有仔细看log日志。如果早点仔细看log日志,而不是按之前的经验直接去百度搜索,也不会绕这么多弯路走。毕竟log日志里已经写的清清楚楚,错误文件都定位到了,如果一早就注意到这张图片,仔细研究下这张图片,就不会浪费这么长时间了。

最后,希望能帮到遇到同样问题的人吧(估计不会,毕竟估计很少会有人允许一张几M的图片打包进APK里:))