flutter 壳子项目 用于web_view 使用
Go to file
Max a3b970d2b8 test: 测试覆盖率 54→75 用例
新增 7 个测试组:
- ShellEnvironment 配置验证(字段/默认URL/https地址)
- Bridge JS 协议格式(版本号/通道守卫/8 Action/成功响应/失败响应)
- AndroidCompatibilityPlan describe 格式(fallback/现代设备/F136A/空字段)
- 相机边界场景(无 controller/不弹窗/返回 null)
- 多文件序列化(多 XFile/空列表/URI 转换)
- 看门狗常量验证(旧相机脚本/版本解析)
2026-03-19 20:05:43 +08:00
apps/quanxue docs: 完善全部项目文档 2026-03-19 20:00:04 +08:00
doc docs: 完善全部项目文档 2026-03-19 20:00:04 +08:00
flavors Refactor: migrate to Monorepo N-brand architecture with automated scaffolding 2026-03-19 16:58:03 +08:00
packages test: 测试覆盖率 54→75 用例 2026-03-19 20:05:43 +08:00
tool chore: 中文化日志注释 + 测试覆盖率 25→54 + iOS 清理 + 代码优化 2026-03-19 19:54:29 +08:00
.gitignore Initial commit: Flutter web android shell project 2026-03-19 16:00:05 +08:00
README.md docs: 完善全部项目文档 2026-03-19 20:00:04 +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/                      # 品牌配置 YAML
│   └── quanxue.yaml
├── 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
# 3) 运行生成脚本
dart run tool/generate_app.dart 新品牌

生成脚本会自动完成:

  • 创建 Flutter 应用 → apps/新品牌/
  • 添加 web_shell_core 依赖
  • 覆写 MainActivity 继承 CoreShellActivity
  • 生成品牌入口 main.dart
  • 配置 flutter_launcher_icons

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"            # 次要文字色

调试说明

部分教育平板设备使用 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 平台已移除。