(2020年8月MAC版)李叔叔的Flutter之路:环境搭建路上遇到的那些妖魔鬼怪

  • Post author:
  • Post category:其他


(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环境。



版权声明:本文为lzzhu2006原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。