今天打开AS,突然发现项目跑步起来了,报一堆编译错误,错误大致信息如下:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task(省略若干无用信息)
仔细看完之后,这一堆红色的错误信息,没有什么明显的收获。。。
解决步骤:
在terminal中输入如下命令,得到较为详细的信息
gradlew compileDebugSources
,仔细看了输出信息之后,发现(捡重点贴出来):
C:\Users\xxx\.gradle\caches\transforms-1\files-1.1\support-compat-26.1.0.aar\3b922a701778fe94e5fdb7afe6cca6bd\res\values-v21\values-v21.xml:14:5-18:13: AAPT: error: resource drawable/notification_action_background (
aka com.wdcloud.companyo2oplatform.qxzx:drawable/notification_action_background) not found.
F:\Android-Project\xxxx\android\xxxx\build\intermediates\incremental\mergeDebugResources\merged.dir\values-v21\values-v21.xml:301: error: resource drawable/notification_action_background (aka com.packagename:drawable/notification_action_background) not found.
说是没找到什么资源文件,可是,项目之前都是好的,啥也没动啊,怎么就少了呢?看到是caches下的,为缓存文件,于是就删除了该目录下的所有文件,重新编译,成功了。
网上有类似的问题,不少。有些问题,是比较容易看出来的,比如:中文路径、图片问题等等。
总体来讲,编译出错的话,解决问题的途径:
1、有明显问题提示的时候,直接修正即可;
2、无明显问题提示的时候,先把所有build\.gradle\.idea 等临时文件都删掉,重新编译;
3、第2步执行之后还是不行的话,terminal下 执行gradlew compileDebugSources,仔细查看输出的问题信息,从中找到线索;
对于我遇到的这种情况,因为涉及到了C:\Users\xxx\.gradle\caches,我猜测原因估计是:同时打开几个AS,有些没编译通过就关掉了,产生了缓存、临时文件等,下次再编译的时候,就对应不上了。这个时候,要手动删除一下公共目录下的C:\Users\xxx\.gradle\caches 缓存文件,重新编译生成就行了。
不知道哪位大神,对这一块有更深的认识,恳请不吝赐教!后面有时间,我也会深入了解下AS的编译全过程。
-----------补充一个
gradlew assembleDebug --info