[Android]解决 Could not read entry xxx from cache taskArtifacts.bin
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 代码来构建个新工程,这是“下策”,有木有)。
重整旗鼓再战
第一招杀手锏失效了,不怕,我可不是程咬金,就这三板斧。虽然,还有很多招数没有使出来,但我知道,该坐下来好好分析下问题了。下面,看看我的分析思路:
- 定位报错位置,这好办,就是这个taskArtifacts.bin
- 查看报错原因,Could not read entry ...
- 综合上述现象,推测可能的原因 —— 不能从这个什么 bin 中读出东西来(这还用你说,人家就是这样提示的,呵呵)
- 等一下,少了个关键点,这个文件是哪里来的
想到这,我有点眉目了。这个文件不是我们自己写的,是工具帮我们生成的(这个我没有深入研究是哪个工具生成的,姑且认为是 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相关推荐
- Android Studio 编译失败 Could not read entry ':app:processDebugManifest' from cache taskArtifacts.bin
背景: 升级了Android studio 2.0 版本后 编译之前的项目失败 出现了以下提示: 解决办法: 进入到当前工程文件夹下, 删除".gradle\2.10\taskArtifa ...
- MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法
在MySQL中执行加字段等操作时可能会报Duplicate entry 'xxx' for key 'PRIMARY'的错,例如: mysql> alter table test add aa ...
- Android 解决XXX Layout leaked 使用Navigation 踩坑 XML内存泄漏
Android 解决XXX Layout leaked 使用Navigation 踩坑 XML内存泄漏 报错日志 排查过程 泄漏原因 解决方案 最近维护一个项目,一个内存泄漏的的原因查了很久,这里记录 ...
- SQLIntegrityConstraintViolationException: Duplicate entry 'xxx' for key 'yyyzzz'异常解决
SQLIntegrityConstraintViolationException: Duplicate entry 'xxx' for key 'yyyzzz'异常解决 一. 异常现象 在做Java ...
- 解决Duplicate entry ‘XXX‘ for key ‘XXX‘
Duplicate entry 'XXX' for key 'XXX',表示插入的值在表中有重复的数据.这个key是唯一索引,要么取消唯一索引,要么在后端判断是否已存在这个数据,如果有把它挡住,不让它 ...
- android 解决getColor()方法过时
今天,简单讲讲android里如何解决getColor()方法过时的问题. 之前,我写博客讲了程序员需要解决过时的方法的问题,Google会提供过时函数的替代函数,程序员有责任找到替代函数,并且解决过 ...
- Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。
mysql insert时报错:Duplicate entry 'XXX' for key 'XXX.PRIMARY' 今天在插入数据时,出现一个错误 com.jfinal.plugin.active ...
- android sqlite动态创建表,Android 解决sqlite无法创建新表的问题
使用SQLite时,继承SQLiteOpenHelper, onCreate方法只有在第一次创建数据库的时候才会被调用, 因此,重新更改或者添加表时,需要在DDMS里面删掉原来的.db文件,重新运行, ...
- android 自定义view文字不齐,Android 解决TextView排版参差不齐的问题
Android 解决TextView排版参差不齐的问题 在app中,展示数据时,里面有汉字.数字.特殊字符时,由于全角.半角问题导致TextView参差不齐.在网上找了许多,半角转全角并没什么用,还有 ...
最新文章
- 链表问题6——环形单链表的约瑟夫问题(初阶)
- python开发安卓程序-python可以编写android程序吗?
- Python学习之路 (六)爬虫(五)爬取拉勾网招聘信息
- CentOS中启动Jar包、后台启动、查看输出日志、查看服务进程、杀死进程
- 软件工程的瀑布, 大泥球, 教堂,集市,和银弹
- 数据库中的DML,DCL,DDL分别是那些操作?
- MySQL按时间查找
- 3-3:常见任务和主要工具之网络
- ubuntu中由apt-get获得的文件包保存在哪里?
- 值对于 int32 太大或太小。_失效值处理
- 用pcl读ply文件_一分钟详解PCL中点云配准技术
- SSH免密码登录,搭建Flink standalone集群
- 解决后台传入的大于js最大数值精度的问题
- 【转】影响光纤传输距离的因数和传输衰减损耗的原因
- 三分钟教你如何用Github找开源项目--值得一看!
- 使用VMware启动centos6.6并使用Qume+kvm虚拟化linux和windows虚机
- FunCoolShell
- java 实现 word 文档的在线编辑以及流转
- [VCS]Coverage Options Introduction
- Spring Boot - 让人抓狂的ClassNotFoundException