背景:
项目上需要修改一个实现,跑的是Git上下载下来的代码,第一次编译,报错。看了一下依赖、引用等内容,确定依赖包都存在,又进行了一次编译,再次报错。
报错内容很明确:错误: 找不到符号
,并指出了所找不到的类和所在行。
分析:
观察发现,无法找到的类、方法、变量都是和蓝牙相关的,所以第一时间反应是使用了定制的Framework。到gradle文件里看了一下配置,确实引用了。
第一次调试:
于是去 .idea/moudle/*.iml 文件中调整Framework引用位置,重新编译。
第一次调试结果:
依旧提示编译失败,错误内容一样。但在Java文件中发现报错的引用均已找到,并且点击可以完成跳转到对应位置。
第 2 到 N 次调试:
因为判断不出来明确的原因,所以一直在猜测的去调。这期间改过gradle tools 版本,改过buildToolsVersion版本,等等等等,均没效果。
其实没有效果也是意料之中,因为这是已经完成的项目,这些基本配置是运行起来过的,所以不应该有问题。
这期间还在网上看了很多大家提出的解决办法,比如有人提到包依赖重复等,但都不适合我这次问题。
成功:
settings --> Build,Execution,Deployment --> Build Tools --> Gradle,将Gradle JDK 版本从11改到了1.8。
编译成功!
说来惭愧,我现在也没想起来为什么要去改Gradle JDK版本,但确实,改完了就好了。
其他:
Android Studio Version:
Android Studio Arctic Fox | 2020.3.1 Patch2
built on August 27 , 2021
这是我的AS版本,好像是这个版本默认就将Gradle JDK 设为11。
挺幸运的解决了这个问题,折腾了小一天,这个坑真还不怎么好发现。