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