(2020年8月MAC版)李叔叔的Flutter之路:环境搭建路上遇到的那些妖魔鬼怪
前言
首先对使用Mac来配置Flutter开发环境的小伙伴们表示默哀,特别是在国内,因为众所周知的原因,配置体验真的是差,需经历九九八十一难,方可修成正果,取得真经。
具体环境配置的步骤在Flutter中文网里已经说的很清楚了,今天主要说一说环境搭建路上遇到的那些妖魔鬼怪,看我李三棍如何棍扫一大片。
我手里的棍子有:
Mac Pro(128G)系统版本:10.15.6
Java版本:1.8.0_181
Flutter版本:1.20.2
Dart版本:2.9.1
Android Studio版本:4.0.1
Gradle版本:6.1.1
Android Sdk包含版本:24,28,30(包括对应的Tools)
Ndk版本:21.0.6113669
那些有背景的妖怪们:
1. URI is not registered(Setings | Project Seting…)
这个问题一般出现在第一次安装Android Studio后,在AndroidManifest.xml中的命名空间报红,导致下方一大片的Android:属性无法被识别。
解决方法:
- 确保mac中已经正确下载并安装了Java JDK(无需手动配置环境变量)
- 确保Android Studio中正确配置了对应的Gradle
- Android Studio版本过低,导致与所安装的Gradle版本不兼容,更新Android Studio版本即可
2. 卡在”Download Gralde directly from … ”
这个问题往往出现在第一次创建工程,会自动联网下载Gralde,而在天朝,并不会给你下的这么顺利,此时需要将distributionUrl改为本地路径 。
解决方法:
- 手动下载所需版本的Gradle,具体版本号看卡住的时候下载的是哪个版本,然后去”https://services.gradle.org/distributions/”这里下载,免费,无需积分,可以用某雷提高下载速度
- 找到项目中”android”->“gradle”->”wrapper”文件夹内的”gradle-wrapper.properties”文件,打开它,并注释掉最后一行,把下载的Gralde的Zip文件路径替换进去,可参考我的配置:
distributionUrl=file\:/Users/lz/gradle/gradle-6.1.1-all.zip
#/Users/lz/gradle/这部分替换成你自己的路径
3. Flutter SDK is not found in the specified location.
新建Flutter项目时,在选择Flutter的sdk路径中有可能会碰到,原因是你没有正确填写你下载的Flutter sdk路径
解决方法:
- 如果你已经下载了flutter sdk,切记不要点”Install sdk”,直接点右侧的”…”按钮,选择到第一个flutter目录即可,也可直接使用环境变量里配置的路径
4. 卡在”creating flutter project”
这个问题其实和问题2差不多,只不过更加恶心,如果你死等,等一晚上都不会有结果(不要问我为什么知道)
解决方法:
-
在卡住以后,等待5分钟差不多就可以强制退出了,此时其实你的flutter项目已经创建完毕(强退快捷键:esc+option+command)
-
重新打开Android studio,选择
你会惊喜的发现刚才卡住的项目,已经出现在了你的项目目录中,不要犹豫,双击它。 -
打开.bash_profile文件:执行命令 open -e .bash_profile
-
在文件内添加以下内容:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
- 存储并退出文件,执行命令 source ~/.bash_profile
- 打开项目中的”build.gradle”(不是app里的),并修改如下:
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
// 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 { url "http://download.flutter.io" }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
// 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 { url "http://download.flutter.io" }
}
}
- 同时修改”flutter”->“packages”->“flutter_tools”->”gradle”中的”flutter.gradle”文件如下:
buildscript {
repositories {
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 { url "http://download.flutter.io" }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
}
- 至此,经过后续一系列自动的镜像下载,你的项目应该可以正常进入了。
- 如果出现任何奇怪的问题,可以删除”flutter”->“bin”->”cache”中的”locklife”文件,后重启Android studio
5. 环境变量配置了却没有生效?或者生效了一次后又失效了?
不得不吐槽这里真的是神坑,对于mac不熟悉的小伙伴多多少少要在这栽个跟头。
在新版的mac系统中,bash_profile只是临时保存的环境变量,并不会一直有效,如果想自己设置的环境变量一直生效,那么你需要使用”~/.zshrc “来保存
解决方案:
-
确保mac中存在Homebrew,如果没有需要手动安装:
首先执行打开hosts命令:sudo vim /etc/hosts
在hosts文件中添加:199.232.28.133 raw.githubusercontent.com
执行安装Homebrew命令:/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh) - 安装好Homebrew后,执行命令安装zsh:brew install zsh
- 在~下执行:ls -all ,看看是否存在.zshrc 文件
- 如果不存在,执行命令手动创建:touch .zshrc
- 打开.zshrc,执行命令:open -e ~/.zshrc
- 将环境变量写入文件内,并在最后写上:source ~/.bash_profile
- 存储文件,并执行命令保存:source ~/.zshrc
6. The option setting ‘android.enableR8=true’ is deprecated.
代码压缩工具,flutter并不推荐使用这个设置
解决方法:
-在”gradle.properties”文件内,直接注释掉,然后重新编译即可
7. No version of NDK matched the requested version
正如字面意思,你的NDK需要下载安装正确的版本号
解决方法:
- 根据报错信息的提示,找到对应的ndk版本号并下载安装,然后重新编译项目即可
8. 模拟器启动了却出现”no devices”
这是因为android sdk路径未被flutter识别导致的adb异常
解决方法:
- 确保已经下载了Android sdk
- 在环境变量中正确配置Android sdk路径,如下:
export ANDROID_HOME=/Users/lz/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
其中/Users/lz替换成你自己的路径
- 或使用命令执行:flutter config –android-sdk /Users/lz/Library/Android/sdk
- 如果出现:Setting “android-sdk” value to “/Users/lz/Library/Android/sdk”.
- 则代表配置成功,删除locklife后重启项目即可
最后
希望今天看了我的博客,能让你取经的道路走的顺一点,另外建议第一次使用Android studio的小伙伴先运行好一个安卓项目,并发布到模拟器上,再加载Flutter项目,这样先保证Android环境,再着手Flutter环境。