Android Studio & Flutter 构建命令完全指南

1 阅读7分钟

涵盖 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.batMac/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 assembleDebugapp/build/outputs/apk/debug/
打 Release 正式包gradlew assembleReleaseapp/build/outputs/apk/release/
同时打 Debug + Releasegradlew assemble
清理后打 Debug 包gradlew clean assembleDebug
清理后打 Release 包(标准流程)gradlew clean assembleRelease

Release 包必须先配置签名文件,否则打包失败。


1.4 AAB 打包(Google Play 上架专用)

Android App Bundle 是谷歌官方推荐上架格式,体积更小。

功能命令
打 Release 版 AABgradlew clean bundleRelease
打 Debug 版 AABgradlew 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[变种名][构建类型]

# 渠道名 xiaomi,构建类型 Release
gradlew assembleXiaomiRelease

1.8 常用参数

参数作用
-q精简日志,只看关键输出
--info详细日志,排查打包报错
--stacktrace打印完整堆栈,编译崩溃必加
--parallel并行构建,多模块项目加速
--offline离线模式,无网络时使用

1.9 命令速查表

功能命令
清理缓存gradlew clean
打 Debug APKgradlew assembleDebug
打 Release APKgradlew assembleRelease
标准正式打包gradlew clean assembleRelease
打 Release AABgradlew clean bundleRelease
安装 Debug 包gradlew installDebug
代码 Lint 检查gradlew lint
查看依赖gradlew app:dependencies

1.10 补充小技巧

  1. 命令输错、打包卡住:先执行 gradlew clean 再重试。
  2. 签名报错:检查 build.gradle(Module)signingConfigs 签名配置。
  3. Mac 权限问题:首次执行 chmod +x gradlew

二、Gradle 同步与依赖刷新

2.1 手动同步命令

等效于 AS 界面「Sync Now」:

# Windows
gradlew --refresh-dependencies

# Mac/Linux
./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 前置说明

  1. 先确保环境正常:flutter doctor
  2. 所有命令在 Flutter 项目根目录 执行
  3. 打包前建议先清理缓存: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-dependenciesflutter clean 对应 Android 的 gradlew clean

3.3 Android 平台打包

功能命令输出路径
Debug 测试 APKflutter build apk --debugbuild/app/outputs/flutter-apk/app-debug.apk
Release 正式 APKflutter build apk --releasebuild/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 --releasebuild/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 桌面 / 网页端打包

平台命令
Webflutter build web --release(产物:build/web
Windowsflutter build windows --release
macOSflutter build macos --release
Linuxflutter build linux --release

3.6 安装 / 运行命令

功能命令
连接设备运行flutter run
只安装不启动flutter install
卸载应用flutter uninstall
指定 Flavor 运行flutter run --flavor dev --debug

3.7 常用组合命令(生产标准流程)

# Android Release APK
flutter clean && flutter pub get && flutter build apk --release

# Google Play AAB
flutter clean && flutter pub get && flutter build appbundle --release

# Web 打包
flutter clean && flutter pub get && flutter build web --release

3.8 关键参数速查

参数作用
--debug调试包,可断点、日志完整
--release正式包,代码混淆、压缩、性能优化
--flavor xxx指定多环境/多渠道变种
--target-platform指定 Android CPU 架构
--no-codesigniOS 编译不签名,后续手动签名

四、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指定设备运行
--profileProfile 模式(性能分析)
--releaseRelease 模式运行
--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 cleangradlew clean
同步依赖/配置flutter pub getSync Now / gradlew --refresh-dependencies
打 Debug 包flutter build apk --debuggradlew assembleDebug
打 Release 包flutter build apk --releasegradlew assembleRelease
查看日志flutter logsLogcat

六、使用建议

  1. 日常开发:改代码 → flutter run 运行,用 r 热重载;改 pubspec.yaml 必执行 flutter pub get
  2. 打包发布:固定用组合命令 flutter clean && flutter pub get && 对应打包指令
  3. 编译报错:先 flutter clean 再重试;依赖异常执行 flutter pub cache repair
  4. 原生层报错:切到 android 目录,使用原生 gradlew 命令排查。
  5. 混合项目:在 Flutter 项目 android/ 目录下可直接执行原生 Gradle 命令。
cd android
gradlew clean
gradlew assembleDebug
cd ..