flutter 壳子项目 用于web_view 使用
Go to file
Max 4a235af054 feat(flavor): 新增云校嗨学 (yunxiao) 应用 Flavor 并支持自定义 defaultUrl
- 扩展:  支持注入  到
- 新增:  配置与资源图 (Icon & Splash)
- 产物: 生成  壳应用代码
2026-03-20 11:08:32 +08:00
.vscode feat: init 改为 测试web 2026-03-20 09:56:02 +08:00
apps feat(flavor): 新增云校嗨学 (yunxiao) 应用 Flavor 并支持自定义 defaultUrl 2026-03-20 11:08:32 +08:00
doc docs: 替换 AI 生成图为精准带标尺的程序化工程蓝图 2026-03-20 04:33:09 +08:00
flavors feat(flavor): 新增云校嗨学 (yunxiao) 应用 Flavor 并支持自定义 defaultUrl 2026-03-20 11:08:32 +08:00
packages test: 修复测试覆盖度 — 修复 LaunchOverlay 断言 + 扩展 Bridge 检测 + 补充 Phase 2 单测 2026-03-20 10:48:23 +08:00
tool feat(flavor): 新增云校嗨学 (yunxiao) 应用 Flavor 并支持自定义 defaultUrl 2026-03-20 11:08:32 +08:00
.fvmrc feat: init 改为 测试web 2026-03-20 09:56:02 +08:00
.gitignore feat: init 改为 测试web 2026-03-20 09:56:02 +08:00
README.md feat: 修复 generate_app.dart 品牌资源生成流程 2026-03-20 04:19:33 +08:00
analysis_options.yaml chore: 中文化日志注释 + 测试覆盖率 25→54 + iOS 清理 + 代码优化 2026-03-19 19:54:29 +08:00
pubspec.lock Refactor: migrate to Monorepo N-brand architecture with automated scaffolding 2026-03-19 16:58:03 +08:00
pubspec.yaml Refactor: migrate to Monorepo N-brand architecture with automated scaffolding 2026-03-19 16:58:03 +08:00

README.md

web_android_shell

Android 平板专用 H5 壳应用 — Monorepo 多品牌架构。

项目结构

web_android_shell/
├── apps/                         # 品牌应用(每个品牌一个 Flutter App
│   └── quanxue/                  # 全学通
├── packages/
│   ├── web_shell_core/           # 核心库WebView 引擎 + Bridge + 服务)
│   └── web_android_shell/        # 旧版入口(已迁移至 apps/quanxue
├── flavors/                      # 品牌配置 + 品牌资源
│   ├── quanxue.yaml              # 品牌配置
│   └── quanxue/                  # 品牌资源(图标、启动页)
│       ├── icon.png
│       ├── icon_foreground.png
│       └── splash.png
├── tool/
│   ├── generate_app.dart         # 一键生成新品牌应用
│   └── flutter_run_fresh.ps1     # Windows 调试脚本(自动杀旧进程)
└── doc/                          # 项目文档

快速开始

1. 运行已有品牌

cd apps/quanxue
flutter run

2. 生成新品牌

# 1) 在 flavors/ 下创建品牌配置
cp flavors/quanxue.yaml flavors/新品牌.yaml
# 2) 修改配置中的 app_name, application_id, app_key, theme, branding
# 3) 准备品牌资源(参见下方规格要求)
mkdir flavors/新品牌
cp 你的图标.png flavors/新品牌/icon.png
cp 你的前景图.png flavors/新品牌/icon_foreground.png
cp 你的启动图.png flavors/新品牌/splash.png
# 4) 运行生成脚本
dart run tool/generate_app.dart 新品牌

生成脚本会自动完成:

  • 创建 Flutter 应用 → apps/新品牌/
  • 添加 web_shell_core 依赖
  • 覆写 MainActivity 继承 CoreShellActivity
  • 更新 AndroidManifest.xml 应用名
  • 生成品牌入口 main.dart
  • 复制品牌资源到生成目录
  • 添加 flutter_launcher_icons / flutter_native_splash 依赖
  • 自动生成应用图标和启动页

3. 品牌配置格式

app_name: "全学通"                          # 应用名
application_id: "com.wanmake.quanxue"       # 包名
app_key: "quanxue_prod"                     # 业务标识
theme:
  accent_color: "0xFF3ED37B"                # 主题色
  bg_color: "0xFFFFFFFF"                    # 背景色
  text_color: "0xFF1F2937"                  # 主文字色
  muted_text_color: "0xFF6B7280"            # 次要文字色
branding:
  icon: "icon.png"                          # 应用图标(相对于 flavors/<品牌>/
  icon_background: "#FFFFFF"                # 自适应图标背景色
  icon_foreground: "icon_foreground.png"    # 自适应图标前景
  splash: "splash.png"                      # 启动页图片
  splash_color: "#FFFFFF"                   # 启动页背景色

4. 品牌资源规格

资源 文件名 最小尺寸 格式 说明
应用图标 icon.png 1024×1024 PNG 正方形,用于生成各尺寸 launcher icon
自适应图标前景 icon_foreground.png 1024×1024 PNG (透明背景) 主体内容需居中,四周留 25% 安全区
启动页图片 splash.png 1152×1152 PNG 用于生成 Android 12+ 和旧版启动页

提示: 资源文件放置在 flavors/<品牌名>/ 目录下,branding 中的路径相对于此目录。如果省略 branding 段,脚本会跳过图标和启动页生成。

调试说明

部分教育平板设备使用 Ctrl+C 结束 flutter run 后,旧进程可能留在后台影响 WebView 启动。

推荐做法:

  • 调试结束时在 flutter run 控制台按 q 退出
  • 或使用调试脚本自动杀旧进程再启动:
.\tool\flutter_run_fresh.ps1          # 自动选设备
.\tool\flutter_run_fresh.ps1 -d F136A # 指定设备

技术栈

组件 技术
框架 Flutter 3.x (Dart 3.11+)
WebView webview_flutter + webview_flutter_android
宿主能力 image_picker · file_picker · permission_handler · url_launcher
原生层 Kotlin Plugin + Java CoreShellActivity
代码规范 very_good_analysis

平台约束

仅支持 Android 平板。 iOS / Web / Desktop 平台已移除。