Gitee地址的Flutter自动升级,Flutter命令无响应
如果能上墙的,可以略过本篇~
现象:
MAC命令行输入所有Flutter命令,都无法响应。
发现问题:
因为Flutter自动升级,会在Flutter的git下面添加一个名为__flutter_version_check__ 的remote 如下:
➜ Flutter git:(stable) ✗ git remote
__flutter_version_check__
origin
➜ Flutter git:(stable) ✗
解决:
1、先试一试尝试找到Flutter源码中相关内容
用如下命令查找所有包含https://github.com/flutter/flutter.git的字符串文件
➜ packages git:(stable) ✗ find . -depth | xargs grep https://github.com/flutter/flutter.git | grep github.com >> ~/tmp.txt
➜ packages git:(stable) ✗ cat ~/tmp.txt
./bin/flutter: echo " git clone -b stable https://github.com/flutter/flutter.git"
./bin/flutter.bat: ECHO git clone -b stable https://github.com/flutter/flutter.git
./packages/flutter_tools/test/integration.shard/downgrade_upgrade_integration_test.dart: 'https://github.com/flutter/flutter.git',
./packages/flutter_tools/test/general.shard/runner/flutter_command_runner_test.dart: when(processManager.runSync('git fetch https://github.com/flutter/flutter.git --tags'.split(' '),
./packages/flutter_tools/test/general.shard/version_test.dart: <String>['git', 'fetch', 'https://github.com/flutter/flutter.git', '--tags'],
./packages/flutter_tools/test/general.shard/version_test.dart: <String>['git', 'fetch', 'https://github.com/flutter/flutter.git', '--tags'],
./packages/flutter_tools/test/general.shard/version_test.dart: <String>['git', 'fetch', 'https://github.com/flutter/flutter.git', '--tags'],
./packages/flutter_tools/test/general.shard/version_test.dart: <String>['git', 'fetch', 'https://github.com/flutter/flutter.git', '--tags'],
./packages/flutter_tools/test/general.shard/version_test.dart: <String>['git', 'fetch', 'https://github.com/flutter/flutter.git', '--tags'],
./packages/flutter_tools/test/general.shard/version_test.dart: <String>['git', 'fetch', 'https://github.com/flutter/flutter.git', '--tags'],
./packages/flutter_tools/test/general.shard/version_test.dart: } else if (argsAre('git', 'remote', 'add', '__flutter_version_check__', 'https://github.com/flutter/flutter.git')) {
./packages/flutter_tools/test/general.shard/version_test.dart: } else if (argsAre('git', 'fetch', 'https://github.com/flutter/flutter.git', '--tags')) {
./packages/flutter_tools/lib/src/version.dart:const String _flutterGit = 'https://github.com/flutter/flutter.git';
./packages/flutter_tools/lib/src/version.dart: // Flutter 1.10.2-pre.69 • channel master • https://github.com/flutter/flutter.git
./dev/bots/test/prepare_package_test.dart: 'git remote set-url origin https://github.com/flutter/flutter.git': null,
./dev/bots/test/prepare_package_test.dart: 'git remote set-url origin https://github.com/flutter/flutter.git': null,
./dev/bots/test/prepare_package_test.dart: 'git remote set-url origin https://github.com/flutter/flutter.git': null,
./dev/bots/prepare_package.dart:const String githubRepo = 'https://github.com/flutter/flutter.git';
./dev/devicelab/lib/framework/utils.dart: await exec('git', <String>['clone', 'https://github.com/flutter/flutter.git']);
./.git/config: url = https://github.com/flutter/flutter.git
➜ packages git:(stable) ✗
于是就想替换掉所有github.com的地方是不是就可以解决问题了呢?但答案是不能解决,因为下载下来的Flutter是经过源码编译一次的可执行文件。
2、再想办法:
删除Flutter目录,重新下载一遍,是不是就跳过升级了?
➜ flutter-learning rm -rf Flutter
➜ flutter-learning git clone git@gitee.com:mirrors/Flutter.git -b stable
Cloning into 'Flutter'...
remote: Enumerating objects: 10755, done.
remote: Counting objects: 100% (10755/10755), done.
remote: Compressing objects: 100% (5683/5683), done.
remote: Total 251600 (delta 7500), reused 6658 (delta 4850), pack-reused 240845
Receiving objects: 100% (251600/251600), 84.03 MiB | 3.33 MiB/s, done.
Resolving deltas: 100% (197825/197825), done.
Updating files: 100% (4658/4658), done.
➜ flutter-learning
但是以上方法,会带来后遗症。每次需要重新修改gradle墙。如下:
➜ flutter-learning vi Flutter/packages/flutter_tools/gradle/flutter.gradle
具体修改如下:
buildscript {
repositories {
- google()
- jcenter()
+ // google()
+ // jcenter()
+ maven{ url 'https://maven.aliyun.com/repository/google' }
+ maven{ url 'https://maven.aliyun.com/repository/jcenter' }
+ maven{ url 'http://maven.aliyun.com/nexus/content/groups/public' }
}
以上maven地址可以改为你在用的地址。
然后,再使用任何flutter命令时,又会进行一次 Flutter Build。
但是Build之后还会自动升级(不清楚这部分的原因,知道的欢迎留个言),进入了死循环。任然无法使用flutter命令。。。。。。
3、别放弃!!!
再重新git下载一遍Gitee代码后,不要立刻执行Flutter命令。应该先做 将包含Github仓库链接地址的文件中的内容 改为 Gitee对应的仓库地址即可。然后再执行一次Flutter命令,触发 Flutter Build 流程。待编译完后,即可正常使用Flutter命令了。
在替换仓库地址时,可以仅替换以下几个文件。当然全部替换最佳,因为你不知道后面会遇到什么问题。
// 需要更改的文件:
/dev/bots/prepare_package.dart
/dev/devicelab/lib/framework/utils.dart
/packages/flutter_tools/lib/src/version.dart
...
// 更改信息举例:
- const String _flutterGit = 'https://github.com/flutter/flutter.git';
+ const String _flutterGit = 'https://gitee.com/mirrors/Flutter.git';
4、Good luck
遇到升级问题欢迎留言。