web_shell_flutter/doc/plan.md

39 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Role
你是一个拥有 8 年经验的资深 Flutter & Android 系统架构师。你擅长对已有的 Flutter 遗留项目进行工程化改造特别是接入多风味Flavors和白标White-label架构。
# Context & Goal
我目前已经有了一个开发好的 Flutter 壳项目。现在需要对这个**已有项目**进行 Flavors 改造,使其能够通过不同的打包命令,输出两个完全独立的 App。
**注意:本项目是纯 Android 定制平板项目,绝对不需要任何 iOS 相关的配置和代码!**
这两个 App 是:
1. 劝学 (Flavor: `quanxue`) - 包名: `com.wanmake.quanxue`,应用名: "劝学"
2. 点智学 (Flavor: `dianzhi`) - 包名: `com.wanmake.dianzhi`,应用名: "点智学"
# Execution Steps (请提供修改现有文件的差异代码与执行步骤)
## Step 1: Dart 侧运行环境变量改造
由于是已有项目,请帮我生成一个优雅的单例配置类 `AppEnvironment`
1. 使用 `const String.fromEnvironment('APP_FLAVOR')` 来捕获打包时传入的参数。
2. 根据捕获到的 Flavor向外暴露当前 App 的主题色、`appName` 和对应的接口 `baseUrl`
3. 请给出 `main.dart` 中如何初始化并读取这个配置类的极简示例。
## Step 2: Android 端 Gradle 深度改造
请直接输出 `android/app/build.gradle` 需要修改的补丁代码Patch
1. 移除 `defaultConfig` 中的硬编码 `applicationId`
2. 增加 `flavorDimensions "app_type"`
3. 编写 `productFlavors` 代码块,配置 `quanxue``dianzhi`,分别注入其 `applicationId`
4. 使用 `resValue` 将 "劝学" 和 "点智学" 注入为 `app_name`
## Step 3: AndroidManifest.xml 动态化
请给出 `android/app/src/main/AndroidManifest.xml` 的修改代码:
1.`<application>` 标签的 `android:label` 属性修改为读取注入的 `@string/app_name`
2. 确保没有任何硬编码的应用名称残留。
## Step 4: 资源配置文件 (YAML) 生成
1. 请帮我生成 4 个 YAML 配置文件,用于配合 `flutter_launcher_icons``flutter_native_splash` 插件。
2.`quanxue``dianzhi` 分别配置独立的图标和启动页路径,路径统一指向 `assets/branding/{flavor}/...`
3. **关键:** 在这 4 个 YAML 文件中,必须显式设置 `android: true` 并且 **`ios: false`**。
## Step 5: 打包与测试脚本
提供完整的终端测试与打包命令示例,仅限 Android 平台(包含如何传入 `--flavor``--dart-define` 打包 APK )。