# 报错背景: android和flutter混合开发,使用android studio以创建flutter项目的形式将flutter创建为一个module,然后再将android原生项目和flutter module关联起来,这一切都很正常,但有次把android studio关掉了再次打开这个android原生项目的时候就报错了。报错信息如下。 # 报错信息: ```java Could not create task ':path_provider_android:generateDebugUnitTestConfig'. this and base files have different roots: D:\Android_Studio\Workspace\work\Pos\PosManager\code\kinny_pos_manager_flutter_module\.android\plugins_build_output\path_provider_android and C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\path_provider_android-2.0.23\android. ``` # 原因及解决: flutter系统包缓存文件夹位置冲突。 > 默认情况下,系统包缓存位于.pub-cache 主目录的子目录中(在 macOS 和 Linux 上),或在%LOCALAPPDATA%\Pub\Cache(在 Windows 上;位置可能因 Windows 版本而异)。 >摘自: [https://dart.dev/tools/pub/cmd/pub-get#the-system-package-cache](https://dart.dev/tools/pub/cmd/pub-get#the-system-package-cache) 我使用的电脑是Windows,因此默认系统包缓存路径是:C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\path_provider_android-2.0.23\android. 而项目必须和flutter系统包缓存路径在同一个盘里面,否则会报上面的错误。 因此**有一个最快的解决办法就是**将项目代码移动到flutter系统包缓存路径同一个盘下面进行运行,例如我这里就需要把原来D:盘下的项目移动到C:盘中任意目录下。 **另外还有一个解决方法是**:修改默认系统包的缓存路径。[参考此处](https://dart.dev/tools/pub/environment-variables "参考此处") 即可以使用PUB_CACHE环境变量指定另一个位置来覆盖默认位置。创建好这个环境变量后在flutter项目中运行命令:`flutter pub get`,运行后在android项目中点击同步,此时就成功了, 若还是报错,那就是资源还没有重新下载到新的位置,这时可以尝试将`C:\Users\Administrator\AppData\Local\Pub`这个默认位置的Pub文件夹先剪切到其他盘符中,然后再去运行`flutter pub get`,再去android项目中同步一下,此时会报错找不到刚刚剪切的文件夹中的内容,这时候再把剪切掉的Pub文件夹放回到`C:\Users\Administrator\AppData\Local`路径下,重新回到android项目同步一下就好了。 总之,如果一直报错上面的报错信息,那就是新改的位置里还没有下载下来系统包缓存资源。 最后编辑:2023年03月02日 ©著作权归作者所有
最新回复