Windows下配置 flutter + Win + Android 开发环境

Windows下配置 flutter + Win + Android 开发环境

本文环境:

  • OS:Windows 11 22H2

官网链接:

前言

官网的Get Started写的挺好的,中文网站的也挺好,我这就不赘述了,

写这个主要是给自己单篇内快速回忆和整点偷懒脚本加速新机器配置用的,

总的来说咱这主要追求一个

本篇配置目标是搭配代理进行开发,不会涉及配置镜像,如果要配置镜像详见在中国网络环境下使用 Flutter | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

安装Flutter

下载SDK压缩包

现在的最新版是3.29.0,但是现在还没稳定,不建议用,这里是3.27.4的快捷链接

在这里查适合国内环境的资源:

解压缩(略)

注意:

下面的配置要用到flutter SDK路径,以我的情况为例,我解压之后把SDK放到 S:\SDK\flutter 这个路径下,

打开这个路径,至少要能看到下面图里这么些个文件,大家应该是没什么差别,有可能版本变了文件有些变化,

但是如果连bindevpackages这几个都看不到,那肯定是找错路径了,

image-20250305200407399

配置环境变量

注意

直接点击下载的脚本是GBK编码,如果你的系统设置了UTF-8编码直接运行会有乱码是正常的,

如果你使用了中文Windows镜像安装的Windows系统然后手动设置了UTF-8编码,

相信你看得懂我上面说的是什么意思,要怎么改,我就不多赘述了,至少提一下,知悉乱码原因

(Linux用户,就更懂了吧,都捣腾Linux了)

不会配置环境变量的可以看:Windows配置环境变量 | 柒柒の小碎步

Windows batch脚本

点击展开 (点击下载)env-auto-configure.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
:: f15c3ed2-3c16-4655-88fc-01ef694143b7
:: 2025-03-02-1-3.bat
@echo off
setlocal enabledelayedexpansion

:: 是否启用颜色代码,1为启用,0和其他为不启用,默认为启用且交互中不再次设置
set enable_color_code=1
set env_path_in_reg_of_user="HKCU\Environment"
set env_path_in_reg_of_system="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set target_env_path_in_reg=
set MSG_1=

:: 此脚本不期望手动指定的参数,
:: 这一行是用于选择设置系统环境变量时,会请求管理员权限并传入跳转指令,
:: 此跳转由这里执行
%1 %2

goto :input_env_type_option

:user_env_type_preproc
set target_env_path_in_reg="%env_path_in_reg_of_user%"
set MSG_1=用户
goto :main_proc

:system_env_type_preproc
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :system_env_type_preproc_inner","","runas",1)(window.close)&goto :eof
:system_env_type_preproc_inner
set target_env_path_in_reg="%env_path_in_reg_of_system%"
set MSG_1=系统
goto :main_proc

:main_proc
set /p flutter_path="请输入或粘贴你的flutter SDK路径:"
echo.
echo 将会对%MSG_1%环境变量覆盖写入FLUTTER_HOME,并在PATH中添加一些东西,
echo 没有做取消功能,不想继续运行就Ctrl + C终止,继续就按点东西比如回车键
echo.
pause

reg add "%target_env_path_in_reg:"=%" /v "FLUTTER_HOME" /t REG_EXPAND_SZ /d "%flutter_path%" /f
call :add_to_env_path %%%%FLUTTER_HOME%%%%\bin
call :print_green_line 设置完成
echo.
echo 下面可能存在 值显示异常,通常是由异常的变量替换引起的,正常,这只是预览一下,实际生效情况还是去环境变量那看看的好
call :view_reg_var FLUTTER_HOME
call :view_reg_var PATH
pause
goto :eof

:input_env_type_option
echo.
echo 可用选项如下(一个数字)
echo 1. 用户环境变量
echo 2. 系统环境变量
set /p env_type_option=请输入选项:
if "%env_type_option%"=="1" (
goto :user_env_type_preproc
) else if "%env_type_option%"=="2" (
goto :system_env_type_preproc
) else (
call :print_red 输入错误,请重新输入
@REM pause
goto :input_env_type_option
)

:view_reg_var
::应传入的参数如下
:: 1: 要从注册表中查询的环境变量名
call :query_reg_save_to_var "%target_env_path_in_reg:"=%" "%~1" "temp_path_var"
call :print_blue_line "从注册表%MSG_1%环境变量中读取到的 %~1 值为:"
call :print_blue_line "%temp_path_var%"
goto :eof

:add_to_env_path
::应传入的参数如下
:: 1: 要添加到PATH的目录
call :query_reg_save_to_var "%target_env_path_in_reg:"=%" "PATH" "temp_path_var"
reg add "%target_env_path_in_reg:"=%" /v "PATH" /t REG_EXPAND_SZ /d "!temp_path_var!;%~1" /f
goto :eof

:query_reg_save_to_var
::应传入的参数如下
:: 1: 注册表路径
:: 2: 注册表键名
:: 3: 要把查到的值存入的变量名
:: 使用 for /f 循环解析输出
for /f "usebackq skip=2 delims=?" %%i in (`reg query "%~1" /v "%~2"`) do (
for /f "tokens=1,2,* delims= " %%a in ("%%i") do (
set "%~3=%%c"
)
)
goto :eof

:print_green
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo %~1
)
goto :eof

:print_green_line
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo 
echo %~1
)
goto :eof

:print_blue
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo %~1
)
goto :eof

:print_blue_line
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo 
echo %~1
)
goto :eof

:print_red
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo %~1
)
goto :eof

:print_red_line
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo 
echo %~1
)
goto :eof

endlocal

检查

配置好之后,打开一个新的终端,输入flutter --version,第一次运行的话要等一会儿是正常的,

然后如果能看到版本信息就说明上面的步骤弄好了,

看不到就再回去检查检查

2025-03-05-22-08-57

配置Windows目标构建支持

官网文档看:Make Windows desktop apps | Flutter

这个没啥好配置的,Win下就是装Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器,然后装负载,

然后运行flutter doctor检测,没乱改啥东西的话,装好了能自动检测到的

doctor结果应该像下面这样Visual Studio这行正常,(后面如果你那边不是生成工具是正常的,绿了就行,)

2025-03-05-22-13-01

如果已经装好Visual Studio了的话,手动检查负载或者安装,就像下面这样

使用C++的桌面开发选上

2025-03-05-22-15-09

2025-03-05-22-15-29

配置Android目标构建支持

官网文档看:Make Android apps | Flutter

下载Android Studio:下载 Android Studio 和应用工具 - Android 开发者 | Android Developers

用不用这个做为使用的IDE都行,装这个主要是便于管理Android SDK,

安装过程中,如果不知道SDK默认安装文件夹位置的,或者要改安装位置的,

安装类型这一步选自定义 Custom 去看看,

2025-03-05-22-48-59

2025-03-05-22-49-33

然后装一些必要的工具

image-20250308195517772

image-20250308195536646

Windows batch脚本

点击展开 (点击下载)env-auto-configure.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
:: f15c3ed2-3c16-4655-88fc-01ef694143b7
:: 2025-03-02-1-4.bat
@echo off
setlocal enabledelayedexpansion

:: 是否启用颜色代码,1为启用,0和其他为不启用,默认为启用且交互中不再次设置
set enable_color_code=1
set env_path_in_reg_of_user="HKCU\Environment"
set env_path_in_reg_of_system="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set target_env_path_in_reg=
set MSG_1=

:: 此脚本不期望手动指定的参数,
:: 这一行是用于选择设置系统环境变量时,会请求管理员权限并传入跳转指令,
:: 此跳转由这里执行
%1 %2

goto :input_env_type_option

:user_env_type_preproc
set target_env_path_in_reg="%env_path_in_reg_of_user%"
set MSG_1=用户
goto :main_proc

:system_env_type_preproc
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :system_env_type_preproc_inner","","runas",1)(window.close)&goto :eof
:system_env_type_preproc_inner
set target_env_path_in_reg="%env_path_in_reg_of_system%"
set MSG_1=系统
goto :main_proc

:main_proc
set /p target_sdk_path="请输入或粘贴你的Android SDK路径:"
echo.
echo 将会对%MSG_1%环境变量覆盖写入Android SDK,并在PATH中添加一些东西,
echo 没有做取消功能,不想继续运行就Ctrl + C终止,继续就按点东西比如回车键
echo.
pause

reg add "%target_env_path_in_reg:"=%" /v "ANDROID_HOME" /t REG_EXPAND_SZ /d "%target_sdk_path%" /f
call :add_to_env_path %%%%ANDROID_HOME%%%%\tools
call :add_to_env_path %%%%ANDROID_HOME%%%%\tools\bin
call :add_to_env_path %%%%ANDROID_HOME%%%%\platform-tools
call :print_green_line 设置完成
echo.
echo 下面可能存在 值显示异常,通常是由异常的变量替换引起的,正常,这只是预览一下,实际生效情况还是去环境变量那看看的好
call :view_reg_var ANDROID_HOME
call :view_reg_var PATH
pause
goto :eof

:input_env_type_option
echo 请输入要设置的环境变量类型选项
:input_env_type_option_loop_inner
echo.
echo 可用选项如下(一个数字)
echo 1 : 用户环境变量
echo 2 : 系统环境变量
set /p env_type_option=请输入选项:
if "%env_type_option%"=="1" (
goto :user_env_type_preproc
) else if "%env_type_option%"=="2" (
goto :system_env_type_preproc
) else (
call :print_red 输入错误,请重新输入
@REM pause
goto :input_env_type_option_loop_inner
)

:view_reg_var
::应传入的参数如下
:: 1: 要从注册表中查询的环境变量名
call :query_reg_save_to_var "%target_env_path_in_reg:"=%" "%~1" "temp_path_var"
call :print_blue_line "从注册表%MSG_1%环境变量中读取到的 %~1 值为:"
call :print_blue_line "%temp_path_var%"
goto :eof

:add_to_env_path
::应传入的参数如下
:: 1: 要添加到PATH的目录
call :query_reg_save_to_var "%target_env_path_in_reg:"=%" "PATH" "temp_path_var"
reg add "%target_env_path_in_reg:"=%" /v "PATH" /t REG_EXPAND_SZ /d "!temp_path_var!;%~1" /f
goto :eof

:query_reg_save_to_var
::应传入的参数如下
:: 1: 注册表路径
:: 2: 注册表键名
:: 3: 要把查到的值存入的变量名
:: 使用 for /f 循环解析输出
for /f "usebackq skip=2 delims=?" %%i in (`reg query "%~1" /v "%~2"`) do (
for /f "tokens=1,2,* delims= " %%a in ("%%i") do (
set "%~3=%%c"
)
)
goto :eof

:print_green
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo %~1
)
goto :eof

:print_green_line
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo 
echo %~1
)
goto :eof

:print_blue
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo %~1
)
goto :eof

:print_blue_line
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo 
echo %~1
)
goto :eof

:print_red
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo %~1
)
goto :eof

:print_red_line
if not "%enable_color_code%" == "1" (
echo %~1
) else (
echo 
echo %~1
)
goto :eof

endlocal

检查

很好的AK,使我的冰粥旋转

image-20250308195645140

然后建个新例程,分别在windows运行和打包一个apk出来,

都成功了,环境搭建成功,fufu

image-20250308201314873

发布于

2025-03-02

更新于

2026-04-28

许可协议

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...