今天遇到一个很坑的问题,排查了许久,网上也找了资料都没解决,最后还是耐下心来分析Log和网上的解决思路才知道问题所在,最终只修改了一丢丢代码和配置即解决了上述问题
问题描述
运行一个之前OK的Flutter项目时报错,Log类似如下:
* What went wrong:
Execution failed for task ':firebase_core:javaPreCompileDebug'.
> Could not resolve all files for configuration 'xxx'.
> Could not find xxxxx.
Searched in the following locations:
https://xxxx
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
本地flutter doctor -v 检查了下,也没有任何问题
网上查资料
然后简单看了Log大概清楚是某个库没找到的原因,然后因为 懒~ 就直接网上搜搜解决方案了。
常见的几种解决方案基本是让你去android目录下的build.gradle中补充一个maven地址,然后重新get库来解决,基本如下图:
试了几乎大部分方法,重新请了缓存N次,重新跑了代码N次都还是报错…
决定泡杯茶休息休息,找找灵感
问题解决
眯了一会儿后感觉这个问题可能是我的个例,不是直接copy就能解决的问题。
结合上述的解决思路和报错Log以及我的一小点灵感,我觉得问题出在我的maven仓库配置和flutter对库的搜索上,然后我又详细的浏览了一遍所有的报错库,发现似乎都是公司内部组件库,到这里我想大家都知道原因了~应该是flutter/dart的环境配置问题
接着我去环境变量配置发现官方SDK的路径是排在公司SDK的路径之前,于是我瞬间啪啪将他们调换了下位置,重开了IDE,自信满满的重新RUN起来~
然后又…报错了,还是一样的错,但是flutter doctor -v 已经显示切换到公司的SDK了啦,为啥还错呢?难道有Bug?又喝了杯茶,来了点灵感,开始全局搜索公司库名,发现无论是.package文件还是.flutter-plugins等缓存的地址仍然是官方SDK的path…
为啥呢?突然回忆起我的pub get操作都是直接点击的IDE来实现的,会不会是IDE哪里配置了我的bin路径?果不其然,在Settings -> Languages&FrameWork -> Dart发现配置的path还是官方SDK,一顿操作后改回了公司SDK
最后重新执行了最后一次的RUN,OK~build成功,问题圆满解决!
回顾
- 遇到问题一定要仔细分析Log,不一定能直接解决但是能帮你扩宽点思路
- 网上的解决方案除了直接copy,也要尝试分析下解决思路
- 遇到瓶颈的话可以喝点茶散散步,也许灵感就来咯