涵盖 Android 原生 Gradle 命令与 Flutter 构建命令,适用于 Windows / Mac / Linux 平台,所有命令均在项目根目录的 Terminal 中执行。
一、Android 原生 Gradle 命令
1.1 Gradle 与 Gradle Wrapper 的区别
| 命令 | 说明 | 推荐度 |
|---|
gradle | 全局安装的 Gradle 本体命令,需手动安装对应版本、配置环境变量 | ❌ 不推荐 |
gradlew | 项目自带的 Gradle Wrapper 启动脚本(gradlew / gradlew.bat),版本由项目锁定,自动下载 | ✅ Android 标准用法 |
为什么必须用 gradlew?
- 版本兼容:Android 项目对 Gradle 版本有强绑定,
gradlew 自动使用项目预设版本,避免版本不一致导致编译失败。
- 团队协作:团队成员拉取代码后直接执行
gradlew 即可构建,环境零差异。
- 配置隔离:
gradlew 读取项目内配置,全局 gradle 走系统配置,容易互相干扰。
执行逻辑:gradlew clean → 读取 gradle-wrapper.properties → 检查本地对应 Gradle 版本 → 没有则自动下载 → 执行 clean 任务。
Windows:执行 gradlew(即 gradlew.bat)
Mac/Linux:执行 ./gradlew(首次需 chmod +x gradlew)
1.2 基础通用命令
| 功能 | 命令(Windows) | 命令(Mac/Linux) |
|---|
| 清理构建缓存 | gradlew clean | ./gradlew clean |
| 查看所有可用任务 | gradlew tasks | ./gradlew tasks |
| 查看 app 模块依赖树 | gradlew app:dependencies | ./gradlew app:dependencies |
| 离线模式执行 | 任意命令后加 --offline | 同上 |
gradlew clean 删除编译产物、缓存文件,解决编译异常、打包旧残留问题。
1.3 APK 打包命令
Android 分 Debug 测试包 和 Release 正式包。
| 功能 | 命令 | 输出路径 |
|---|
| 打 Debug 测试包 | gradlew assembleDebug | app/build/outputs/apk/debug/ |
| 打 Release 正式包 | gradlew assembleRelease | app/build/outputs/apk/release/ |
| 同时打 Debug + Release | gradlew assemble | — |
| 清理后打 Debug 包 | gradlew clean assembleDebug | — |
| 清理后打 Release 包(标准流程) | gradlew clean assembleRelease | — |
Release 包必须先配置签名文件,否则打包失败。
1.4 AAB 打包(Google Play 上架专用)
Android App Bundle 是谷歌官方推荐上架格式,体积更小。
| 功能 | 命令 |
|---|
| 打 Release 版 AAB | gradlew clean bundleRelease |
| 打 Debug 版 AAB | gradlew bundleDebug |
输出路径:app/build/outputs/bundle/release/
1.5 安装 / 运行 APK
| 功能 | 命令 |
|---|
| 编译 + 安装 Debug 包到设备 | gradlew installDebug |
| 卸载 Debug 包 | gradlew uninstallDebug |
| 卸载 Release 包 | gradlew uninstallRelease |
| 运行(等效 Run 按钮) | gradlew run |
1.6 编译校验 & 检查
| 功能 | 命令 |
|---|
| 仅编译代码(快速查语法错误) | gradlew compileDebugSources / gradlew compileReleaseSources |
| Lint 代码静态检查 | gradlew lint(报告:app/build/reports/lint-results.html) |
| 本地单元测试 | gradlew test |
| 设备仪器测试 | gradlew connectedAndroidTest |
1.7 多渠道 / 多变种打包(Product Flavor)
格式:assemble[变种名][构建类型]
gradlew assembleXiaomiRelease
1.8 常用参数
| 参数 | 作用 |
|---|
-q | 精简日志,只看关键输出 |
--info | 详细日志,排查打包报错 |
--stacktrace | 打印完整堆栈,编译崩溃必加 |
--parallel | 并行构建,多模块项目加速 |
--offline | 离线模式,无网络时使用 |
1.9 命令速查表
| 功能 | 命令 |
|---|
| 清理缓存 | gradlew clean |
| 打 Debug APK | gradlew assembleDebug |
| 打 Release APK | gradlew assembleRelease |
| 标准正式打包 | gradlew clean assembleRelease |
| 打 Release AAB | gradlew clean bundleRelease |
| 安装 Debug 包 | gradlew installDebug |
| 代码 Lint 检查 | gradlew lint |
| 查看依赖 | gradlew app:dependencies |
1.10 补充小技巧
- 命令输错、打包卡住:先执行
gradlew clean 再重试。
- 签名报错:检查
build.gradle(Module) 中 signingConfigs 签名配置。
- Mac 权限问题:首次执行
chmod +x gradlew。
二、Gradle 同步与依赖刷新
2.1 手动同步命令
等效于 AS 界面「Sync Now」:
gradlew --refresh-dependencies
./gradlew --refresh-dependencies
2.2 使用场景
| 场景 | 说明 |
|---|
修改 build.gradle / gradle.properties | 改依赖、SDK 版本、签名、渠道、仓库地址等 |
| 依赖缓存异常 | 报 Failed to resolve、版本错乱、旧版本残留 |
| 切换分支 / 拉取团队代码 | 别人改了 Gradle 配置,本地缓存旧 |
| 升级 Android Studio / Gradle | 版本不匹配、构建卡住、诡异报错 |
| 纯命令行构建(CI/CD) | 无图形界面,只能用命令刷新 |
| 顽固问题 | gradlew clean --refresh-dependencies 组合执行 |
2.3 与 clean 的区别
| 命令 | 作用 |
|---|
gradlew clean | 只删除编译产物、APK、class,不碰依赖和 Gradle 配置 |
gradlew --refresh-dependencies | 只刷新依赖、Gradle 配置、仓库,不删编译产物 |
简单记忆:
- 改代码/资源编译报错 →
clean
- 改 Gradle 配置/依赖/版本拉取失败 →
--refresh-dependencies
三、Flutter 构建命令
3.1 前置说明
- 先确保环境正常:
flutter doctor
- 所有命令在 Flutter 项目根目录 执行
- 打包前建议先清理缓存:
flutter clean
3.2 通用基础命令
| 功能 | 命令 |
|---|
| 清理构建缓存 | flutter clean |
| 检查环境 & 依赖 | flutter doctor |
| 拉取项目依赖 | flutter pub get |
| 强制刷新依赖缓存 | flutter pub upgrade / flutter pub cache repair |
| 运行项目 | flutter run |
| 查看设备列表 | flutter devices |
| 实时查看日志 | flutter logs |
| 代码静态检查 | flutter analyze |
flutter pub get 对应 Android 的 Sync Now / gradlew --refresh-dependencies。
flutter clean 对应 Android 的 gradlew clean。
3.3 Android 平台打包
| 功能 | 命令 | 输出路径 |
|---|
| Debug 测试 APK | flutter build apk --debug | build/app/outputs/flutter-apk/app-debug.apk |
| Release 正式 APK | flutter build apk --release | build/app/outputs/flutter-apk/app-release.apk |
| 仅 arm64 架构(推荐) | flutter build apk --release --target-platform android-arm64 | — |
| 仅 arm32 架构 | flutter build apk --release --target-platform android-arm | — |
| AAB(Google Play 上架) | flutter build appbundle --release | build/app/outputs/bundle/release/app-release.aab |
| 多渠道打包 | flutter build apk --release --flavor 渠道名 | — |
Release 包必须提前配置 Android 签名。
3.4 iOS 平台打包(仅 Mac)
| 功能 | 命令 |
|---|
| 模拟器调试包 | flutter build ios --debug |
| 真机 Release 包 | flutter build ios --release |
| iOS Flavor 打包 | flutter build ios --release --flavor 环境名 |
flutter build ios --release 后,用 Xcode 打开 ios/Runner.xcworkspace → 归档 → 导出 IPA。
3.5 桌面 / 网页端打包
| 平台 | 命令 |
|---|
| Web | flutter build web --release(产物:build/web) |
| Windows | flutter build windows --release |
| macOS | flutter build macos --release |
| Linux | flutter build linux --release |
3.6 安装 / 运行命令
| 功能 | 命令 |
|---|
| 连接设备运行 | flutter run |
| 只安装不启动 | flutter install |
| 卸载应用 | flutter uninstall |
| 指定 Flavor 运行 | flutter run --flavor dev --debug |
3.7 常用组合命令(生产标准流程)
flutter clean && flutter pub get && flutter build apk --release
flutter clean && flutter pub get && flutter build appbundle --release
flutter clean && flutter pub get && flutter build web --release
3.8 关键参数速查
| 参数 | 作用 |
|---|
--debug | 调试包,可断点、日志完整 |
--release | 正式包,代码混淆、压缩、性能优化 |
--flavor xxx | 指定多环境/多渠道变种 |
--target-platform | 指定 Android CPU 架构 |
--no-codesign | iOS 编译不签名,后续手动签名 |
四、Flutter 进阶命令详解
4.1 flutter run 完整解析
flutter run --flavor staging --dart-define=DEV_HOST=xxx
--flavor staging:指定 Flavor 为预发环境,加载对应原生配置、签名、渠道、包名、图标等。
--dart-define=DEV_HOST=xxx:编译期注入环境变量,Dart 代码中通过 String.fromEnvironment('DEV_HOST') 读取。
Dart 读取示例:
const String devHost = String.fromEnvironment('DEV_HOST', defaultValue: '');
const bool isDebug = bool.fromEnvironment('ENABLE_LOG', defaultValue: false);
const int port = int.fromEnvironment('PORT', defaultValue: 8080);
4.2 Flavor 相关(多环境 / 多渠道)
flutter run --flavor dev
flutter run --flavor staging
flutter run --flavor prod
flutter build apk --release --flavor staging
flutter build appbundle --release --flavor prod
前提:必须在 android/build.gradle 和 iOS 工程中配置好对应 Flavor。
4.3 --dart-define 系列(注入常量)
flutter run --dart-define=API_BASE_URL=https://api.test.com
flutter run --dart-define=API_HOST=https://staging.xxx.com --dart-define=APP_ENV=staging
flutter build apk --release --flavor prod --dart-define=API_HOST=https://prod.xxx.com
4.4 常用附加参数
| 参数 | 作用 |
|---|
--no-sound-null-safety | 关闭空安全(老项目兼容) |
-d 设备ID | 指定设备运行 |
--profile | Profile 模式(性能分析) |
--release | Release 模式运行 |
--no-hot | 不开启热重载 |
-q | 静默运行,精简日志 |
4.5 进阶组合命令
flutter run --flavor staging --dart-define=API_HOST=https://staging-api.com -d 设备ID
flutter clean && flutter pub get && flutter build apk --release --flavor prod --dart-define=API_HOST=https://prod-api.com
flutter run --flavor dev --dart-define=API_HOST=xxx --no-run
4.6 关键说明
--dart-define 是编译期常量,适合传域名、环境标识、功能开关;不要传密钥或私密令牌(可被逆向提取)。
--flavor 控制原生层(包名、签名、渠道、图标);--dart-define 控制 Dart 业务层(接口域名、功能开关)。
- Flutter
--flavor ≈ Android productFlavors
- Flutter
--dart-define ≈ Android buildConfigField
五、Flutter ↔ Android 命令对照表
| 场景 | Flutter 命令 | Android 原生命令 |
|---|
| 清理编译缓存 | flutter clean | gradlew clean |
| 同步依赖/配置 | flutter pub get | Sync Now / gradlew --refresh-dependencies |
| 打 Debug 包 | flutter build apk --debug | gradlew assembleDebug |
| 打 Release 包 | flutter build apk --release | gradlew assembleRelease |
| 查看日志 | flutter logs | Logcat |
六、使用建议
- 日常开发:改代码 →
flutter run 运行,用 r 热重载;改 pubspec.yaml 必执行 flutter pub get。
- 打包发布:固定用组合命令
flutter clean && flutter pub get && 对应打包指令。
- 编译报错:先
flutter clean 再重试;依赖异常执行 flutter pub cache repair。
- 原生层报错:切到
android 目录,使用原生 gradlew 命令排查。
- 混合项目:在 Flutter 项目
android/ 目录下可直接执行原生 Gradle 命令。
cd android
gradlew clean
gradlew assembleDebug
cd ..