Skip to content

安装包打包流程

本页记录 Flutter App 安装包构建、环境注入、产物定位和签名边界。当前仓库可直接验证 Android APK 构建;iOS 工程结构存在,但正式归档与签名依赖 Apple 账号、证书和设备配置。

当前版本

项目当前值来源
App namefitdoc_apppubspec.yaml
Version1.0.29+23pubspec.yaml
Android applicationIdcom.fitdoc.appandroid/app/build.gradle.kts
Android minSdk/targetSdk使用 Flutter Gradle 配置值android/app/build.gradle.kts
NDK27.0.12077973android/app/build.gradle.kts

Android APK

powershell
cd D:\Fitdoc_app\apps\flutter_app
flutter pub get
flutter build apk --release

常见产物路径:

text
apps/flutter_app/build/app/outputs/flutter-apk/app-release.apk

带环境注入的生产构建:

powershell
flutter build apk --release `
  --dart-define=APP_ENV=production `
  --dart-define=API_BASE_URL=https://<domain>/api `
  --dart-define=VIDEO_BASE_URL=https://<domain>/static/videos

内网或测试环境构建:

powershell
flutter build apk --release `
  --dart-define=APP_ENV=staging `
  --dart-define=API_BASE_URL=http://<host>/api

构建前检查

检查命令预期
Flutter 环境flutter doctor关键平台无阻塞错误。
依赖解析flutter pub get成功生成依赖锁定。
静态分析flutter analyze无需要阻断发包的错误。
测试flutter test相关测试通过。
后端地址检查 --dart-define=API_BASE_URL包含协议、host 和 /api
视频地址检查 --dart-define=VIDEO_BASE_URL与 Nginx /static/videos/ 对齐。

Android 签名边界

当前 android/app/build.gradle.kts 的 release build 仍使用 debug signing:

kotlin
signingConfig = signingConfigs.getByName("debug")

这意味着当前 release APK 可以用于内部测试和阶段性交付,但不应被误认为已经接入正式应用商店签名。生产级发布需要补齐独立 keystore、签名配置、密钥管理和构建机注入方式;keystore 密码和私钥材料不得写入仓库或文档。

安装验证

powershell
adb install -r build\app\outputs\flutter-apk\app-release.apk
adb shell monkey -p com.fitdoc.app 1

验证重点:

场景预期
冷启动App 能进入首页或鉴权入口。
登录/验证码请求命中配置的 API_BASE_URL
AI 对话能访问 /api/chat/message,错误时给出可理解状态。
运动视频视频地址命中 VIDEO_BASE_URL
断网/超时前端不崩溃,展示错误或重试状态。

iOS 边界

仓库包含 Flutter iOS 工程结构。正式 iOS 打包需要在 macOS + Xcode 环境下完成 signing、provisioning profile、bundle identifier、archive 和 TestFlight/App Store 分发配置。本仓库当前没有可直接核验的完整 iOS 发布脚本。

常用入口:

bash
cd apps/flutter_app
flutter build ios --release

来源锚点

  • apps/flutter_app/pubspec.yaml
  • apps/flutter_app/lib/config/environment_config.dart
  • apps/flutter_app/android/app/build.gradle.kts
  • AGENTS.md