速查 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 | 踩坑记录 | 返回速查区