flutter环境配置中遇到的问题

flutter环境配置中遇到的问题


在配置鸿蒙SDK环境变量步骤中,我不知到如何来添加系统变量,在我看的教程中,那一部分写的有些模糊,况且我是第一次接触系统变量和用户变量这些东西,根本不知道是干什么的,所以,为了让第一次配置的新手能跟清楚一些,我们先来了解一下系统变量和用户变量的本质、区别与实战意义:

系统变量和用户变量是 操作系统中用于存储程序运行配置的核心机制 ,本质是"键值对"(变量名=变量值)形式的"全局参数"------核心作用是告诉电脑"去哪里找软件""怎么运行软件",我们配置Flutter、Git时用到的Path变量,就是最典型的应用场景。

一、先明确:环境变量(总称)是什么?

环境变量是操作系统为所有程序提供的"公共配置容器",可以理解为电脑的 "全局通讯录+运行规则手册"

  • 变量名:固定标识(比如PathJAVA_HOME),相当于"通讯录里的联系人姓名";
  • 变量值:具体的路径或配置(比如C:\Git\bin),相当于"联系人的详细地址"。

核心作用(解决的实际问题)

  1. 无需输入完整路径就能运行程序:比如输入flutter --version时,系统会通过Path变量里的路径,自动找到flutter.exe并运行,不用手动输入D:\flutter\bin\flutter.exe
  2. 统一传递配置信息:比如JAVA_HOME变量告诉所有Java相关工具"JDK安装在哪个文件夹",避免每个工具都手动配置。

二、系统变量 vs 用户变量:核心区别(表格对比)

环境变量分为"系统变量"和"用户变量",关键差异在 "生效范围",其他特性随之不同:

对比维度 系统变量(System Variables) 用户变量(User Variables)
生效范围 电脑上所有用户账号共用(全局生效) 仅当前登录的用户账号可用(局部生效)
权限要求 编辑需管理员权限(影响全局,需谨慎) 普通用户可直接编辑(仅影响自己,无风险)
适用场景 所有用户都需要用的软件/工具(比如Git、Windows系统命令) 仅个人使用的软件(比如专属开发工具、个性化配置)
优先级 与用户变量同名时,用户变量优先级更高 不影响其他用户,独立隔离
典型例子 C:\Windows\System32(系统命令路径)、C:\Git\bin(全局Git路径) D:\MyTools\flutter\bin(个人Flutter路径)

通俗类比(一看就懂)

把电脑想象成"一套房子":

  • 系统变量 = 房子里的"公共设施清单"(比如水电总阀位置、快递收发点),所有住客(用户账号)都能使用;
  • 用户变量 = 你自己房间里的"私人用品清单"(比如你的书桌抽屉位置、私人工具箱),只有你能用到,不影响其他住客。

三、实战场景:为什么配置软件时要区分这两类变量?

以你之前配置Flutter和Git为例,核心逻辑是:

  1. 配置Git到系统变量:因为Git可能全家都要用(比如家人也需要用命令行提交代码),全局生效更方便,且系统工具(如Flutter)需要全局调用Git;
  2. 配置Flutter到用户变量:如果只是你自己用Flutter开发,配在用户变量里即可,避免占用系统全局资源,也不会影响其他用户的环境;
  3. Path变量是核心 :不管是系统变量还是用户变量里的Path,本质都是"程序查找路径清单"------只有把软件的bin目录(比如flutter\binGit\bin)加入Path,才能直接在命令行输入命令运行。

四、常见问题:为什么之前配置时系统变量的Path很关键?

你之前遇到的"闪退""找不到git"问题,本质都是Path变量配置不全:

  • 缺少C:\Windows\System32:系统找不到wherecmd等基础命令,导致程序运行时依赖缺失;
  • 缺少C:\Git\bin:Flutter运行时需要调用Git,但系统找不到Git的执行文件,直接闪退;
  • 补充路径后生效:相当于给系统补全了"通讯录",程序能顺利找到依赖的工具,自然就能正常运行。

总结

  • 核心逻辑:系统变量和用户变量都是"配置容器",区别仅在"生效范围";
  • 实用原则:
    1. 全家共用的软件(Git、Java、系统工具)→ 配系统变量;
    2. 个人专属的软件(开发工具、个性化工具)→ 配用户变量;
    3. 所有需要在命令行直接运行的软件,必须把其bin目录加入Path变量(系统或用户的Path均可,看需求)。

简单说:系统变量管"所有人",用户变量管"你自己",Path变量管"程序能不能直接运行"。

了解完这些后,接下来,我们来进行配置鸿蒙SDK环境变量

  1. 右键点击我们电脑桌面上的此电脑,再点击属性,点进去后,再点击高级系统设置,最后点击环境变量就进入了我们要进行编辑的页面了



  2. 在该页面中,应该找到系统变量中变量名为path的变量,双击改变量进如编辑页面,然后找到自己电脑中下载DevEco Stduio的位置,复制如下几个文件位置,编辑添加到path变量里,这里不要看我写的位置找一样的,你是找不到的,因为我们电脑中下载的位置不一样,你只找到自己下载DevEco Stduio的位置,找到后面的就行了:

    D:\vs code\dev\DevEco Studio\sdk\default\openharmony\toolchains

    D:\vs code\dev\DevEco Studio\tools\ohpm\bin

    D:\vs code\dev\DevEco Studio\tools\node

    D:\vs code\dev\DevEco Studio\tools\hvigor\bin

    添加到这个path里面:

    然后把上面四个变量添加进去就好了:


    以上我只示范了一个,其他的重复操作就好了。
    在这里我声明一下,我的系统变量中没有path这个变量,而是在我的用户变量中,我也不知道是什么原因,可能是电脑的问题,你们在进行添加这一步的时候,要先在自己的系统变量中找一下,找到了就在系统变量的path中添加上述的四个变量,如果系统变量中没有,那就在环境变量中找,反正这两个里面肯定是有的

  3. 接下来要在系统变量里新建一个变量名为DEVECO_SDK_HOME的变量

    ,变量值为,也就是位置:

    D:\vs code\dev\DevEco Studio\sdk

    这里你只要找到你电脑中下载DevEco Studio中sdk的系统位置即可,把位置复制好粘贴上去即可,下面的图片是操作步骤:

    弄完点击确定就好了

接下来是下载适配鸿蒙的flutter SDK

  1. 先创建一个专门防止flutter的文件夹

  2. 点完之后出现黑色控制面板,复制下面的代码,粘贴到控制面板里,点击回车就好了

    git clone -b oh-3.27.4-dev https://gitcode.com/openharmony-tpc/flutter_flutter.git

出现下面的页面就下载好了

接下来配置环境环境变量:

如图,在刚才创建好的flutter文件夹里找到该文件位置:

D:\Flutter\flutter_flutter\bin

粘贴完之后再添加到path里,如下图就可以了:

接下来在系统变量里添加下面两个变量

第一个变量名为:PUB_HOSTED_URL

变量值为:https://pub.flutter-io.cn

第二个变量名为:https://pub.flutter-io.cn

变量值为:https://storage.flutter-io.cn

这些都按照我的复制添加上即可:

配置完成后一直点击确定就可以了

接下来检查flutter的版本

  1. 在键盘上点击Win+R,输入cmd,打开这个界面

  2. 解下来输入这行代码

    flutter --version

点击回车,出现下面这些就好了

接下来诊断flutter环境

按上面1中的步骤,打开,输入以下代码

复制代码
flutter doctor -v

出现以下内容就好了

在这里说一下我在其中遇到的问题我在检查flutter的环境的时候,输入下面的代码后,一点击回车

这个页面就突然闪退,消失不见了,当时我不知道怎么回事,于是把这个问题告诉给了豆包,来让它帮我解决,最后我找到了问题所在,是因为系统找不到git程序的路径,于是我找到git软件的位置,但是我之前就安装了git了,原来是Git 的环境变量没配置好于是我在path中配置了Git 的环境变量

位置:D:\git\Git\bin

这样问题就解决了

相关推荐
程序员Ctrl喵1 天前
异步编程:Event Loop 与 Isolate 的深层博弈
开发语言·flutter
前端不太难1 天前
Flutter 如何设计可长期维护的模块边界?
flutter
小蜜蜂嗡嗡1 天前
flutter列表中实现置顶动画
flutter
始持1 天前
第十二讲 风格与主题统一
前端·flutter
始持1 天前
第十一讲 界面导航与路由管理
flutter·vibecoding
始持1 天前
第十三讲 异步操作与异步构建
前端·flutter
新镜1 天前
【Flutter】 视频视频源横向、竖向问题
flutter
黄林晴1 天前
Compose Multiplatform 1.10 发布:统一 Preview、Navigation 3、Hot Reload 三箭齐发
android·flutter
Swift社区1 天前
Flutter 应该按功能拆,还是按技术层拆?
flutter
肠胃炎1 天前
树形选择器组件封装
前端·flutter