android gradle plugin 升级到3.6.1的艰难之路。

没有aapt2.3.6.1:xxxx的缓存.

首先了解一下Aapt。

  1. aapt是androidstudio资源打包的工具,打包的资源包括assets目录和res以及androidmenifest.xml。
  2. aapt2是aapt的升级版。aapt是全量资源打包,即使只有一个资源文件的更改都会进行全部资源的重新打包流程。aapt2采用增量打包方式,流程分为编译和链接两步。修改某个文件后只需要对这个资源重新编译然后链接到之前的打包好的资源里面。aapt2的打包结果为arsc文件和Androidmenifest.xml以及res目录。

原因和解决方法。

. 原因:aapt2的安装在SDK包的build-tools里面。在当前目录执行aapt2
-version会显示当前版本,所以原因之一就是版本不兼容。
解决办法:升级aapt2。不能直接通过sdk manager升级,因为SDK升级的时候是按照platform版本来下载aapt2版本的。根据官网提示需要我们手动下载bug提示的版本。

温馨提示
*android.enableAapt2=false,已经无效,强制使用aapt2. *

额外记录
androidstudio打包分为三部分。java代码的编译从.java到.dex;资源文件的打包即aapt1;c/c++代码的编译链接。

ButterkNife9.0.0-rc2升级

 implementation 'com.jakewharton:butterknife:9.0.0-rc2'
 annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc2'

问题描述。
butternife的作用以及配置不在介绍。上面是在module的gradle文件里的配置。一直报本地不存在butterknife-compiler:9.0.0-rc2的缓存。不论什么版本的butterknife,第一行都能通过,并且在硬盘里面能看到下载的对应的jar包,但是没有compiler的包。
解决办法。
新建一个项目引入butterknife对应版本的配置,即可自动下载butterknife-compiler包。然后切换回之前的项目即可。所以问题的原因应该是之前的项目的某些配置问题,但不可能是网络问题,因为是同一套的官网资源,理论是放在一起的,一个能下载,另外一个也能下载才对。

你可能感兴趣的:(android gradle plugin 升级到3.6.1的艰难之路。)