Bug 出现

事情是这样的,昨天早晨我正做着项目,坐在我旁边的小伙伴呼唤了我一下,说项目运行不起来了。

我纳闷着,前天的时候还好好的,怎么过了一晚就出问题了。我问他是不是改了什么配置,或者添加了什么东西。他说,没有啊,刚打开 AndroidStudio,运行就报错,昨天晚上还是好的。

Bug 真身

好吧,我也没多想,看了下报错的 log 提示,额,没见过。怎么办?直接stackoverflow一下吧!

Error:Could not read entry ':xxx:packageDebug' from cache taskArtifacts.bin (xxx.gradle\2.10\taskArtifacts\taskArtifacts.bin).
com.android.build.gradle.tasks.PackageApplication$DexPackagingPolicy

开始 Debug

首先,在stackoverflow上试着搜了下“Could not read entry ':xxx:packageDebug' from cache taskArtifacts.bin”,无果。
那好删点内容,继续搜“Could not read entry from cache taskArtifacts.bin”。还是无果,那好,来看看是不是配置改动了。

对比了下两台机器上项目中所有和项目构建相关的配置文件,我这边是好的啊,那按我这边的来。改完后,重新编译,运行,依旧报错。

这都折腾十几分钟了,果断不能忍了。仔细看看报错的提示信息:“Could not read entry ':xxx:packageDebug' from cache taskArtifacts.bin.”。这里说的不能从什么 bin 中读取 entry。嗯,那应该可能是文件坏了,读不了;或者权限变化了,不让读了。

OK,这好办,让我看看你的属性。一看,想简单了,属性中看不出什么异常。那好,用我机器上的给你替换了,这回该行了吧!于是将整个“.gradle”文件夹替换掉,我再试。额,还不行。

Debug 三板斧

网上找不到解决方案(当然没有 Google 试一下),试了这么久又没见效果。咋办?好吧!逼我使出杀手锏 —— 重装、重启、还原,对就是我以前修电脑的那套。

重装,在这里用不好,为什么?因为其他的项目是好用的,说明 AndroidStudio 应该没“坏”。
重启,这个可以试一下。说干就干,把 AndroidStudio 关了,重新打开,一个样,还是报同样的错。
只剩下还原大法没用了,这个貌似也不符合目前的场景啊(不到那一步我可不想重新从仓库 down 代码来构建个新工程,这是“下策”,有木有)。

重整旗鼓再战

第一招杀手锏失效了,不怕,我可不是程咬金,就这三板斧。虽然,还有很多招数没有使出来,但我知道,该坐下来好好分析下问题了。下面,看看我的分析思路:

  1. 定位报错位置,这好办,就是这个taskArtifacts.bin
  2. 查看报错原因,Could not read entry ...
  3. 综合上述现象,推测可能的原因 —— 不能从这个什么 bin 中读出东西来(这还用你说,人家就是这样提示的,呵呵)
  4. 等一下,少了个关键点,这个文件是哪里来的

想到这,我有点眉目了。这个文件不是我们自己写的,是工具帮我们生成的(这个我没有深入研究是哪个工具生成的,姑且认为是 AndroidStudio 中的某个工具吧)。那问题来了,既然都不是我写的,你给我报错,那应该是你生成的时候出问题了(相信大家以前在使用 Eclipse 的时候都遇到过 R 文件不存在的问题,想想这个一般都是怎么解决的)。那好那我让你重新给我生成一下,这下该可以了吧!

要怎么让 AndroidStudio 给我们重新生成这个 taskArtifacts.bin 是个问题。为什么这么说?因为很显然重新编译的时候这个文件没有更新的说,至少目前现象来看,它没有更新。这也好办,我把你全部删了,这回该给我生成新的了吧!

Bug 解决

没错,把项目中 .gradle 文件夹下面的所有内容删除,然后 clean 一下项目,就好了。如下图:

说明:到这里,本文应该告一段落了。虽然最后解决了问题,但是却有个不爽的事 —— 自始至终没找出问题出在哪里。

当时也没有截图,只是保存了当时报错的信息。我想还是应该记录一下这个问题,为减少以后再采坑里去。

下面,我演示一下如何模拟复现这个问题,权当是一次记录。

在文件夹中定位到 taskArtifacts.bin 文件

定位到 taskArtifacts.bin,修改属性,将其改为只读属性

错误复现


这里请不要较真,当时的场景已经没有办法复现,这里仅仅是模拟...

解决问题

在这里只要把只读属性去掉就好了。

说明:这里想提醒自己,以后要是遇到类似的问题,首先要仔细阅读错误 log 提示,然后,冷静思考问题出现的可能原因,不要过于依赖搜索引擎,要养成勤思考的习惯。

转载于:https://www.cnblogs.com/zhousysu/p/5483802.html

[Android]解决 Could not read entry xxx from cache taskArtifacts.bin相关推荐

  1. Android Studio 编译失败 Could not read entry ':app:processDebugManifest' from cache taskArtifacts.bin

    背景: 升级了Android studio 2.0 版本后 编译之前的项目失败 出现了以下提示: 解决办法: 进入到当前工程文件夹下,  删除".gradle\2.10\taskArtifa ...

  2. MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法

    在MySQL中执行加字段等操作时可能会报Duplicate entry 'xxx' for key 'PRIMARY'的错,例如: mysql> alter table test add aa ...

  3. Android 解决XXX Layout leaked 使用Navigation 踩坑 XML内存泄漏

    Android 解决XXX Layout leaked 使用Navigation 踩坑 XML内存泄漏 报错日志 排查过程 泄漏原因 解决方案 最近维护一个项目,一个内存泄漏的的原因查了很久,这里记录 ...

  4. SQLIntegrityConstraintViolationException: Duplicate entry 'xxx' for key 'yyyzzz'异常解决

    SQLIntegrityConstraintViolationException: Duplicate entry 'xxx' for key 'yyyzzz'异常解决 一. 异常现象 在做Java ...

  5. 解决Duplicate entry ‘XXX‘ for key ‘XXX‘

    Duplicate entry 'XXX' for key 'XXX',表示插入的值在表中有重复的数据.这个key是唯一索引,要么取消唯一索引,要么在后端判断是否已存在这个数据,如果有把它挡住,不让它 ...

  6. android 解决getColor()方法过时

    今天,简单讲讲android里如何解决getColor()方法过时的问题. 之前,我写博客讲了程序员需要解决过时的方法的问题,Google会提供过时函数的替代函数,程序员有责任找到替代函数,并且解决过 ...

  7. Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。

    mysql insert时报错:Duplicate entry 'XXX' for key 'XXX.PRIMARY' 今天在插入数据时,出现一个错误 com.jfinal.plugin.active ...

  8. android sqlite动态创建表,Android 解决sqlite无法创建新表的问题

    使用SQLite时,继承SQLiteOpenHelper, onCreate方法只有在第一次创建数据库的时候才会被调用, 因此,重新更改或者添加表时,需要在DDMS里面删掉原来的.db文件,重新运行, ...

  9. android 自定义view文字不齐,Android 解决TextView排版参差不齐的问题

    Android 解决TextView排版参差不齐的问题 在app中,展示数据时,里面有汉字.数字.特殊字符时,由于全角.半角问题导致TextView参差不齐.在网上找了许多,半角转全角并没什么用,还有 ...

最新文章

  1. 链表问题6——环形单链表的约瑟夫问题(初阶)
  2. python开发安卓程序-python可以编写android程序吗?
  3. Python学习之路 (六)爬虫(五)爬取拉勾网招聘信息
  4. CentOS中启动Jar包、后台启动、查看输出日志、查看服务进程、杀死进程
  5. 软件工程的瀑布, 大泥球, 教堂,集市,和银弹
  6. 数据库中的DML,DCL,DDL分别是那些操作?
  7. MySQL按时间查找
  8. 3-3:常见任务和主要工具之网络
  9. ubuntu中由apt-get获得的文件包保存在哪里?
  10. 值对于 int32 太大或太小。_失效值处理
  11. 用pcl读ply文件_一分钟详解PCL中点云配准技术
  12. SSH免密码登录,搭建Flink standalone集群
  13. 解决后台传入的大于js最大数值精度的问题
  14. 【转】影响光纤传输距离的因数和传输衰减损耗的原因
  15. 三分钟教你如何用Github找开源项目--值得一看!
  16. 使用VMware启动centos6.6并使用Qume+kvm虚拟化linux和windows虚机
  17. FunCoolShell
  18. java 实现 word 文档的在线编辑以及流转
  19. [VCS]Coverage Options Introduction
  20. Spring Boot - 让人抓狂的ClassNotFoundException

热门文章

  1. 算法导论 10.1-6
  2. Notes on UNPv1 Ch.5
  3. 银行卡预留号码注销了怎么改?
  4. 25岁做什么,可在5年后受益匪浅?
  5. 脚艺人什么意思,网络上脚艺人什么梗,变身脚艺人意思
  6. 这年头,千万不要花钱创业
  7. 盘点《令人心动的offer》中让人敲黑板的重点
  8. 为什么有这么多网站有操作系统下载呢?做系统的会不会放病毒呢?
  9. 2021 年高教社杯全国大学生数学建模竞赛题目(C 题 生产企业原材料的订购与运输)
  10. 1.1.1 计算机网络的概念、组成、功能和分类(转载)