问题
Flutter开发中在运行pubspec.yaml文件中的Packages upgrade后,由于访问不到pub服务器(HTTP error 478: status code 478),所以更新任务一直处于重试机制,这个时候运行其它任何任务都会报Waiting for another flutter command to release the startup lock。分析及解决
1.如何停止正在运行的upgrade任务?
首先Flutter中库的引用及管理都可在命令行通过flutter pub <命令>去执行,经过查找后发现并没有提供相应的可以退出任务的命令。于是只能通过以下步骤退出upgrade任务:
(1)结束任务管理器中的dart.exe进程
(2)删除flutter安装目录下的\bin\cache\lockfile文件。
2.如何才能访问到pub服务器?
配置flutter官方为中国搭建的镜像服务器,windows在环境变量中配置,配置好后重启Android Studio。
PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
关于pubspeck.yaml中packages引用的一些知识点。
版本号运算符:
(1)写一个固定的版本号,如:dio: '3.0.0';
(2)使用<,<=,>,>=等操作运算符,这些运算符可限制使用的最低版本及最高版本。如:dio: '>=2.0.0 <3.0.8';
(3)使用^符,这个操作符限制了可使用的同系列最高版本,如使用dio: '^3.0.0'这个时候可以更新到3.后面的最新版本,如出现了'4.0.0'系列的版本则无法更新到。
Packages get和Packages upgrade的区别:
Packages get:Flutter中引用的所有库的信息都会在pubspec.lock文件中保存,包括版本号,调用Packages get后,会获取这个文件中所对应的版本号库,这样在团队协作中保证了库的一致性,如何文件中没有对应库的信息,则会从服务器中获取对应的库,然后将信息写入这个文件中。
Packages upgrade:根据pubspec.yaml中所引用库的版本号规则,从服务器获取最新的库,并更新到pubspec.lock文件中。