Skip to content

速查 09 · Flutter 命令行 ​

按场景索引,⭐ = 日常高频。Ctrl+F 页内搜索。 Widget/布局速查见 01 · Flutter,构建报错见 踩坑 · Flutter 构建与打包。

目录 ​

⚠️ 本项目使用 fvm 锁版本,所有 flutter / dart 命令前要加 fvm,如 fvm flutter run。见 16 篇。


环境与诊断 ​

bash
flutter doctor                    # ⭐ 体检:SDK/Android Studio/Xcode 依赖是否齐全
flutter doctor -v                 # 详细输出(排查环境问题必看)
flutter --version                 # 查看版本
flutter channel                   # 查看当前版本通道(stable/beta/master)
flutter channel stable            # 切换通道
flutter upgrade                   # 升级 Flutter + 依赖
flutter precache                  # 预下载指定平台工件
flutter config --list             # 查看配置项
flutter config --no-enable-web    # 开关平台支持(--enable-web / --enable-windows-desktop 等)

项目管理与依赖 ​

bash
flutter create my_app             # ⭐ 创建项目
flutter create --org com.example --project-name my_app .   # 在当前目录创建(指定包名)
flutter create -t skeleton .      # 用官方脚手架模板创建
flutter create --platforms=web,windows .   # 给现有项目补齐缺失平台目录

flutter pub get                   # ⭐ 安装 pubspec.yaml 中的依赖
flutter pub add <package>         # ⭐ 添加依赖(flutter pub add dio)
flutter pub add dev:<package>     # 添加开发依赖
flutter pub remove <package>      # 移除依赖
flutter pub upgrade               # 升级所有依赖到允许的最新版本
flutter pub upgrade <package>     # 只升级某个包
flutter pub outdated              # 查看哪些依赖可升级
flutter pub deps                  # 依赖树
flutter pub cache clean           # 清空全局 pub 缓存
flutter clean                     # ⭐ 清理构建产物(build/ .dart_tool/)

运行与调试 ​

bash
flutter run                       # ⭐ 运行(默认 debug)
flutter run -d <deviceId>         # ⭐ 指定设备(设备 id 见 flutter devices)
flutter run -d windows            # 在 Windows 桌面端运行
flutter run -d chrome             # 在 Chrome 运行 Web 版
flutter run -t lib/main_dev.dart  # ⭐ 指定入口文件(多环境入口)
flutter run --release             # release 模式(测真实性能)
flutter run --profile             # profile 模式(配合 DevTools 分析性能)
flutter run --flavor dev          # 指定 flavor(多渠道)
flutter run --dart-define=KEY=VAL # 传入环境变量
flutter run --no-sound-null-safety  # 旧项目关闭空安全(不推荐)

flutter attach                    # ⭐ 连接到已运行的应用(热重载一个已经在跑的进程)
flutter logs                      # 查看设备日志
flutter screenshot                # 截取当前设备屏幕
flutter drive --driver=test_driver/e2e.dart --target=integration_test/app.dart  # 跑集成测试

运行中的快捷键(终端内按):

r        热重载(保留状态,毫秒级)⭐
R        热重启(状态丢失,原生改动也能生效)⭐
v        在浏览器打开 DevTools ⭐
i        开关 Widget Inspector(布局检查)
P        开关性能浮层(FPS / UI / GPU 线程)
p        开关绘制边界线(排查溢出)
w        打印 Widget 树到终端
t        打印渲染树(RenderObject)到终端
L        打印 Layer 树到终端
o        切换平台亮度(深色模式预览)
M        打印 VM 内存信息
d        detach(退出 run,但应用在设备上继续跑)
q        退出
c        清屏
h        重复显示全部快捷键

⚠️ 原生侧改动(Platform Channel、插件注册)热重载无效,要 R 热重启或冷启动。


调试工具(DevTools) ​

安装与启动 ​

bash
dart pub global activate devtools          # 安装独立版(一般 SDK 已内置,可跳过)
dart devtools                              # 启动,默认 http://127.0.0.1:9100
dart devtools --vm-service-uri=<uri>       # 直接连接正在运行的应用(uri 在 flutter run 输出里)
dart pub global list                       # 查看已安装的全局工具
dart pub global deactivate devtools        # 卸载

打开 DevTools 的三种方式 ⭐ ​

bash
flutter run          # ① 运行后终端按 v,浏览器自动打开(最常用)
# ② 直接点 flutter run 输出的 "A Dart VM Service ... is available at" 后的 DevTools 链接
# ③ VS Code:Ctrl+Shift+P → "Flutter: Open DevTools in Web Browser"(可同步选中 Widget)

DevTools 面板 → 排查场景对照 ​

面板用途
Widget Inspector查看 widget 树与布局约束,"这个尺寸怎么来的"用它
Performance帧耗时瀑布图、UI/GPU 线程,卡顿优先看这里
CPU Profiler函数级火焰图,找热点函数
Memory内存快照对比,排查泄漏(dispose 漏没漏)
Network抓应用内 HTTP 请求与响应
Debugger断点调试、表达式求值

性能分析相关参数 ​

bash
flutter run --profile                   # ⭐ profile 模式(测性能必须真机 + profile,别用 debug)
flutter run --trace-startup             # 记录启动耗时,导出 start_up_info.json
flutter run --trace-skia                # 记录 Skia 渲染调用(排查 shader 编译卡顿)
flutter run --purge-persistent-cache    # 清 shader 持久缓存(复现首帧卡顿)
flutter run --route=/detail/1           # 指定初始路由(深链调试)

截图 / 录屏 / 符号化 ​

bash
flutter screenshot                      # 设备截图 → flutter_01.png
flutter screenshot --type=skia --out=skia.fl    # 导出 Skia picture(DevTools 可打开)
flutter build apk --obfuscate --split-debug-info=build/symbols  # 混淆打包(先留符号表)
flutter symbolize -d build/symbols/app.android-arm.symbols -i stack.txt  # 混淆堆栈还原

模拟器与设备管理(启动 / 关闭) ​

Flutter 自带(推荐入口) ​

bash
flutter devices                   # ⭐ 列出所有已连接的真机/模拟器/桌面端
flutter emulators                 # ⭐ 列出所有可用的 Android 模拟器(AVD)
flutter emulators --launch apple_ios_simulator   # 启动 iOS 模拟器
flutter emulators --launch <emulator_id>         # 启动指定 Android 模拟器
flutter run -d all                # 在所有可用设备上同时运行
flutter install -d <deviceId>     # 把 build 产物安装到设备
flutter uninstall -d <deviceId>   # 从设备卸载应用

Android 模拟器(emulator / avdmanager) ​

bash
# 位置:Android SDK 的 emulator 目录,Windows 一般在
# %LOCALAPPDATA%\Android\Sdk\emulator\ (或 $ANDROID_HOME/emulator)

emulator -list-avds               # ⭐ 列出所有 AVD
emulator -avd Pixel_8_API_34      # ⭐ 启动指定 AVD
emulator -avd Pixel_8 -no-snapshot-load   # 冷启动(跳过快照,排查诡异问题时用)
emulator -avd Pixel_8 -writable-system    # 可写系统分区

avdmanager list avd               # 列出 AVD(sdkmanager 同目录)
avdmanager create avd -n test -k "system-images;android-34;google_apis;x86_64"  # 创建 AVD
sdkmanager --list                 # 列出可安装的 SDK 组件

iOS 模拟器(仅 macOS,simctl) ​

bash
xcrun simctl list                 # 列出所有模拟器
xcrun simctl list devices booted  # 只看已启动的
xcrun simctl boot "iPhone 15"     # 启动指定模拟器
xcrun simctl boot all             # 启动全部
open -a Simulator                 # 打开 Simulator 界面
xcrun simctl shutdown "iPhone 15" # ⭐ 关闭指定模拟器
xcrun simctl shutdown all         # ⭐ 关闭全部模拟器
xcrun simctl erase "iPhone 15"    # 恢复出厂(清除数据)
xcrun simctl install booted app.ipa / xcrun simctl uninstall booted com.example.app

关闭模拟器 / 清理设备连接 ​

bash
adb -s <deviceId> emu kill        # ⭐ 关闭指定 Android 模拟器
adb kill-server && adb start-server  # ⭐ 重启 adb(设备列表异常、连不上时先试这个)
adb disconnect                    # 断开所有无线调试连接

adb 常用命令 ​

bash
adb devices                       # ⭐ 列出已连接设备(含状态 device/offline/unauthorized)
adb install -r app.apk            # ⭐ 安装(-r 覆盖更新)
adb uninstall com.example.app     # ⭐ 卸载
adb logcat                        # ⭐ 查看全部日志
adb logcat --pid=$(adb shell pidof -s com.example.app)   # 只看本应用日志
adb logcat -c                     # 清空日志
adb shell am force-stop com.example.app   # 强杀应用进程(模拟冷启动)
adb shell pm clear com.example.app        # 清应用数据(等于卸载重装但保留 apk)
adb shell screencap /sdcard/s.png && adb pull /sdcard/s.png   # 截屏并拉取
adb shell screenrecord /sdcard/r.mp4       # 录屏
adb reverse tcp:8080 tcp:8080     # 端口反向代理(真机调试访问本机服务)⭐
adb forward tcp:9000 tcp:9000     # 端口正向代理
adb shell input tap 500 800       # 模拟点击
adb shell input swipe 500 1200 500 400   # 模拟滑动
adb shell dumpsys battery         # 查看电量
adb shell wm size / wm density    # 查看或修改分辨率、密度

构建与打包 ​

bash
# Android
flutter build apk                 # ⭐ 打 debug/release APK(默认 release)
flutter build apk --release       # ⭐ release 包
flutter build apk --debug         # debug 包
flutter build apk --split-per-abi # 按 ABI 拆分(体积更小,arm64 真机装 arm64-v8a)
flutter build apk --flavor prod   # 多渠道打包
flutter build appbundle           # ⭐ 生成 .aab(上架 Google Play 用)
flutter build apk -t lib/main_prod.dart   # 指定入口打包

# iOS(仅 macOS)
flutter build ios                 # ⭐ 构建iOS 产物
flutter build ipa                 # ⭐ 生成 .ipa(需要签名配置)
flutter build ipa --export-method ad-hoc   # 指定导出方式

# Web
flutter build web                 # ⭐ 构建 Web 版
flutter build web --release --base-href /app/   # 指定部署子路径

# 桌面端
flutter build windows             # Windows
flutter build macos               # macOS
flutter build linux               # Linux

# 产物位置:build/app/outputs/flutter-apk/(apk)、
#           build/app/outputs/bundle/release/(aab)、
#           build/ios/ipa/(ipa)

测试 · 分析 · 格式化 ​

bash
flutter analyze                   # ⭐ 静态检查(不运行,找代码问题)
flutter analyze lib               # 只检查指定目录
flutter test                      # ⭐ 跑全部单元测试
flutter test test/unit/           # 跑指定目录/文件
flutter test --coverage           # 生成覆盖率报告(coverage/lcov.info)
flutter test --update-goldens     # 更新 golden 测试基准图
dart format .                     # ⭐ 格式化整个项目
dart format lib/main.dart         # 格式化单文件
dart fix --apply                  # 自动修复可机械修复的问题(配合 analyze 用)⭐
dart fix --dry-run                # 先预览会改什么

代码生成与国际化 ​

bash
# build_runner(freezed/json_serializable 等,见 08 篇速查)
dart run build_runner build --delete-conflicting-outputs          # ⭐ 一次性生成
dart run build_runner watch --delete-conflicting-outputs          # 监听模式,边写边生成

# 国际化
flutter gen-l10n                  # 生成 l10n 本地化代码
flutter pub add intl_utils        # 或用 intl_utils 方案
dart run intl_utils:generate      # 生成多语言类

# 图标与启动页
dart run flutter_launcher_icons   # 生成 App 图标(需配置 flutter_launcher_icons.yaml)
dart run flutter_native_splash    # 生成启动页

Dart 命令 ​

bash
dart run <file.dart>              # 运行 Dart 脚本
dart run <package>:<command>      # 运行包的命令(如 build_runner)
dart pub get / add / remove       # 纯 Dart 包的依赖管理
dart format / fix / analyze       # 同上,纯 Dart 项目用
dart compile exe bin/main.dart    # 编译成原生可执行文件
dart compile js bin/main.dart     # 编译成 JS
dart create my_cli                # 创建 Dart(非 Flutter)项目

救急与排障 ​

症状解法
改了依赖 / 改了原生代码 / 同步异常flutter clean → flutter pub get → 重新 run ⭐
Waiting for another flutter command删 flutter/bin/cache/lockfile,或重启 IDE
adb devices 里设备 offline / 连不上adb kill-server && adb start-server
模拟器行为诡异(黑屏、卡死)冷启动:emulator -avd <id> -no-snapshot-load
pub 下载慢 / 卡住配置国内镜像(PUB_HOSTED_URL / FLUTTER_STORAGE_BASE_URL)
Gradle 卡死 / 构建挂起cd android && ./gradlew stop,或杀 java 进程后重试
Gradle 依赖下载慢android/gradle.properties 配置国内镜像仓库
缓存彻底损坏flutter pub cache clean + flutter clean + 重新 get
iOS 真机不识别flutter devices 无果时检查 Xcode 签名,重插后 brew 下 ios-deploy 日志
Web 端包冲突 / cache 问题flutter clean && flutter pub get && flutter run -d chrome
bash
# Android Gradle 补充(android 目录下)
./gradlew clean                   # 清 Gradle 构建缓存
./gradlew assembleRelease         # 只构建 Android release(不经过 flutter)
./gradlew signingReport           # 查看签名信息(配高德/微信 SDK 时要用)

相关:01 · Flutter 速查 | 08 · Freezed 与 build_runner | 踩坑记录 | 返回速查区