android studio排错,记一次Android Studio智能功能失灵问题的排查

本文记录了一次对Android Studio智能感知功能失效问题的排查

背景

前些时日,为了增进自己在Android领域的技能,创建了一个试验性质的项目——Scavenger。

这个项目的特点有:

使用最新的AS(目前的版本号是3.3 Canary 12)进行开发

整个项目只使用Kotlin语言

依赖各种最新的功能库(例如:AndroidX等等)

在一次对依赖库的版本进行升级之后,AS竟然成了纯文本编辑器,声明跳转、智能代码提示等等IDE标配功能都失效了,于是开始了漫漫修复路。

过程

猜测1: AS项目配置混乱?

由于在日常工作中,时有发生AS中无法识别到Android SDK的方法、类,进而导致无法跳转到相应的代码,同时代码中充斥大量的红色波浪线。通常遇到这种情况,我们会

Invalidate and Restart

删除Project的Idea配置,重新初始化项目

因此,当遇到这次的问题之后,第一时间使用上述2种方法进行尝试,尝试多次之后发现问题依旧。

猜测2: Android Gradle插件兼容性问题

由于在出现这个问题之前,有对各种插件、依赖库、Kotlin的版本号进行升级,因此在排除了项目配置问题之后,开始考虑是否是因为Android Gradle插件出现兼容性问题,于是将它从3.3.0-alpha12降回3.3.0-alpha11。

问题依旧。

猜测3: kotlin版本兼容性问题

将kotlin版本从1.2.71降回1.2.61

问题依旧

猜测4: 修改SourceSet导致

在出现问题前的多次代码修改中,其中有一次是将代码从src//java迁移至src//kotlin,然后在build.gradle中配置SourceSet使AS能识别到kotlin目录下的代码。

因此,当发现这个问题后,理所当然的重新迁移到java目录下。

然,问题依旧

猜测5: 尝试各种关键词去google上搜索

在尝试了各种能想到的情况之后,开始尝试各种关键词去google,看看有没有类似的问题被网友提出。由于这种智能感知问题通常和AS的Indexing有关,所以关键词都和它有关。

然而,很可惜的是,无论是中文、还是英文关键词,搜索出的结果都和现状不符。

Finally

最后,在尝试了以上种种猜测之后,偶然间点开AS右下角的IDE Fatal Errors,发现了一条疑似和代码有关的错误。

In file: file:///Users/wankey/Documents/GitHub/Scavenger/android/app/src/main/java/io/github/wankey/scavenger/App.kt

com.google.common.util.concurrent.UncheckedExecutionException: java.io.IOException: File format error reading /Users/wankey/.gradle/caches/transforms-1/files-1.1/constraintlayout-2.0.0-alpha2.aar/7abcd58f437e1b16ae4458788cc6387d/R.txt line 1743: 'int[] styleable GradientColor { 0x0101020b, 0x010101a2, 0x010101a3, 0x0101019e, 0x01010512, 0x01010513, 0x010101a4, 0x0101019d, 0x01010510, 0x01010511, 0x01010201, 0x010101a1 }'

Caused by: java.io.IOException: File format error reading /Users/wankey/.gradle/caches/transforms-1/files-1.1/constraintlayout-2.0.0-alpha2.aar/7abcd58f437e1b16ae4458788cc6387d/R.txt line 1743: 'int[] styleable GradientColor { 0x0101020b, 0x010101a2, 0x010101a3, 0x0101019e, 0x01010512, 0x01010513, 0x010101a4, 0x0101019d, 0x01010510, 0x01010511, 0x01010201, 0x010101a1 }'

Caused by: java.io.IOException: Values string { 0x01010532, 0x0101053f, 0x01010533, 0x7f04009c, 0x7f0400a4, 0x7f0400a5, 0x7f0400a6, 0x7f040189 } should have 10 item(s).

在无计可施的情况下,以其中的Exception信息作为关键词google搜索

com.google.common.util.concurrent.UncheckedExecutionException: java.io.IOException: File format error reading

惊喜地发现在5日前,万能的stackoverflow上有人提过这个问题,于是根据他的描述将引起问题的ContraintLayout降回到1.1.3版本,AS的智能感知功能终于复活了。

结论

无论是AS、还是依赖的Library,切勿在线上项目中使用Alpha、Beta版本,不然风险不可控。像这种试验性质的项目可以尝试,但是也需慎重,否则可能会浪费自己宝贵的时间。

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值