Skip to content

[codex] 增加 Android Early 应用内更新#86

Merged
utopiafar merged 1 commit into
memex-lab:mainfrom
utopiafar:codex/android-early-updates
May 15, 2026
Merged

[codex] 增加 Android Early 应用内更新#86
utopiafar merged 1 commit into
memex-lab:mainfrom
utopiafar:codex/android-early-updates

Conversation

@utopiafar
Copy link
Copy Markdown
Collaborator

背景

Closes #85

Android Daily Early 已经通过 GitHub prerelease 产出 globalEarly / cnEarly APK,但 Early 用户仍然需要自己打开 GitHub Releases、判断版本、选择 APK 并处理 Android 安装权限。这个 PR 在 Android Early 包内补齐应用内检测和安装引导,让 prerelease 分发形成更完整的使用闭环。

改动

  • 新增 Early 更新服务:
    • 拉取 memex-lab/memex GitHub prerelease。
    • 仅选择匹配当前 flavor 的 APK,避免 Global Early / CN Early 混用。
    • 使用 build number 判断是否有新版本。
    • 兼容 [codex] 补充 Android Early 版本号和保留策略 #75 workflow 的 release notes 版本格式,例如 Version: 1.0.30-early.YYYYMMDD.sha+BUILD_NUMBER
    • 下载 APK 到 app cache 下的 updates/ 目录。
  • 新增 Android 原生 MethodChannel:
    • 检查当前是否为 Wi-Fi。
    • 检查 Android 8+ “允许安装未知来源应用”权限。
    • 缺少权限时打开系统设置页。
    • 通过 FileProvider 将 APK 交给 Android 系统安装器。
  • 仅对 globalEarly / cnEarly flavor 声明 REQUEST_INSTALL_PACKAGES,Stable 包不增加该权限。
  • 设置页新增「Early 体验版更新」卡片:
    • 自动检测更新,默认开启。
    • 仅在 Wi-Fi 下载,默认开启。
    • 自动下载并安装,默认关闭。
    • 立即检查、状态提示和下载进度。
  • 主界面启动后对 Android Early 包做低频自动检测:
    • 最多 12 小时一次。
    • 发现更新后默认弹窗提示。
    • 用户开启自动下载并安装时,下载完成后打开系统安装器。
  • 补齐英文/中文 ARB 文案并重新生成 Flutter l10n。
  • 新增 service 单元测试和设置卡片 widget test。

设计说明

  • iOS 不实现 GitHub IPA 下载和应用内安装,因为 iOS 普通应用不能从应用内直接下载安装包;iOS Early 更适合通过 TestFlight 或 App Store 更新提醒承载。
  • Dart 负责 GitHub 请求、release 解析、策略判断、下载和设置持久化;Android 原生代码只负责系统能力:Wi-Fi 查询、未知来源权限、FileProvider URI 和系统安装器 Intent。
  • Wi-Fi-only 策略只限制 APK 下载,不限制小体积的更新检测请求。
  • 这个能力只访问 GitHub release 元数据和 APK,不上传用户数据,也不涉及 Memex 工作区内容。

验证

  • flutter test test/data/services/app_update_service_test.dart
  • flutter test test/ui/settings/widgets/early_update_settings_card_test.dart
  • flutter build apk --debug --flavor globalEarly
  • flutter analyze 2>&1 | tee /tmp/memex_analyze.log >/dev/null; rg "error •|app_update|early_update|EarlyUpdate" /tmp/memex_analyze.log || true
    • 结果:没有新增 error,也没有命中本次新增 update 文件。
    • 说明:整仓 flutter analyze 仍有既有 warning/info 噪音,当前为 374 条。
  • git diff --check

已知限制

  • Android 不支持普通应用静默安装 APK,本 PR 会打开系统安装器。
  • 本地尝试启动 memex_api35 AVD,但 adb 没有识别到设备,未完成模拟器安装/启动实测;已通过 globalEarly debug APK 构建验证 Android manifest merge 和 Kotlin channel 编译。

@utopiafar utopiafar marked this pull request as ready for review May 15, 2026 06:28
@utopiafar utopiafar merged commit 048ee29 into memex-lab:main May 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

为 Android Early 渠道增加应用内更新检测与安装引导

1 participant