CLAUDE.md 2.3 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

模块概述

这是 frame/aab 模块 - 一个基于 Google Play Core API 的 Android App Bundle (AAB) 动态特性分发框架,负责管理按需模块的安装和卸载。

核心架构组件

核心类:

  • AAB: 主要的单例门面类,负责协调模块下载和安装
  • IDynamicModule: 动态特性模块接口,包含生命周期回调
  • IAABConfig: 配置接口,需要 Application 上下文
  • AABDownloadActivity: 处理安装过程中用户确认对话框的界面

下载系统:

  • ModuleDownloader: 基于队列的下载器,具备智能重试和取消逻辑
  • DownloadTask: 单个下载操作及其状态管理
  • DownloadType: 下载操作的触发类型(用户主动、前台、网络变化)
  • DownloadState: 当前状态跟踪(IDLE, DOWNLOADING, FINISHED)

安装系统:

  • ModuleInstaller: Google Play Core SplitInstallManager 的封装
  • IInstallListener: 安装进度和完成状态的回调
  • 支持立即安装和延迟安装两种策略

构建配置

  • 命名空间: com.adealink.frame.aab
  • 目标 SDK: 使用项目级版本目录(libs.versions.*
  • Java 版本: 17
  • 核心依赖: Google Play Feature Delivery API、AndroidX 组件
  • 构建输出: 发布为 com.wenext.android:frame-aab:6.0.1

框架依赖

该模块依赖多个内部 frame 模块:

  • frame/base: 核心应用基础和日志功能
  • frame/mvvm: ViewModel 支持
  • frame/util: 工具类,包括网络监控和 Activity 生命周期
  • frame/spi: 服务发现框架
  • frame/coroutine: Kotlin 协程支持

使用模式

  1. 通过 AAB.init(config) 初始化,提供 Application 上下文
  2. 为每个动态特性实现 IDynamicModule 接口
  3. 调用 AAB.download(module) 将模块加入下载队列
  4. 通过 IInstallListener 回调监控安装进度
  5. 使用 AAB.isInstalled(module) 检查可用性

关键实现细节

  • 线程安全: 任务队列操作使用同步代码块
  • 网络感知: 网络可用时自动恢复下载
  • 生命周期集成: 应用进入前台时恢复下载
  • 错误处理: 完善的错误码和状态管理
  • 上下文管理: 模块安装后创建新的包上下文以访问资源