ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Vivi-Music如何实现应用内OTA更新?updater设计、changelog渲染与版本演进详解

Vivi-Music如何实现应用内OTA更新?updater设计、changelog渲染与版本演进详解 Vivi-Music如何实现应用内OTA更新updater设计、changelog渲染与版本演进详解【免费下载链接】vivi-musicVivi-Music is an expressive Material 3–based YouTube Music client for Android.项目地址: https://gitcode.com/gh_mirrors/vi/vivi-musicVivi-Music 是一款基于 Material 3 的 YouTube Music 安卓客户端它不仅能在应用内检查、下载并安装 OTA 更新还内置了支持富文本与视频动图的 changelog 渲染引擎。本文带你从零看懂它的 updater 设计、changelog 渲染机制与版本演进路线哪怕你是新手也能轻松上手。一、更新模块架构总览四个文件撑起一套 OTA 系统 Vivi-Music 的更新能力全部集中在 updater/ 模块结构非常清晰文件职责vivimusicupdater.kt更新主界面、版本检查逻辑、SDUI 渲染引擎UpdaterModels.kt状态模型检查中/可更新/无更新/错误与 JSON 数据结构UpdateStorageUtils.ktAPK 下载目录管理、旧包自动清理UpdateDownloadWorker.kt基于 WorkManager 的后台下载任务整个流程可以概括为一句话查版本 → 拉 changelog → 后台下载 → 通知栏跟进 → 一键安装全程无需打开商店。二、版本检查稳定/测试双通道与智能比较更新检查的核心是 vivimusicupdater.kt 中的checkForUpdate函数它做了几件很贴心的事双通道选择标签以v开头是稳定版以b开头是测试版beta。用户没开测试通道时只看稳定版健壮版本号比较isNewerVersion函数L750-L779能正确处理b5.0.7、v5.0.6-r2这类带前缀和构建次数的版本号优雅的回滚逻辑如果你正使用测试版但关闭了 beta 通道更新器会主动提示你回退到最新的官方稳定版而不是什么都不显示APK 资产定位从发布附件中精准匹配vivi.apk或 FOSS 渠道的对应包并读取体积展示给你。三、下载与安装WorkManager 驱动 自动备份 点击下载后任务交给 UpdateDownloadWorker.kt 这个后台 Worker 执行更新前自动备份如果开启了更新前自动备份会先执行一次数据库备份保证升级可回滚可暂停的下载通过 WorkManager 的setProgress上报进度界面与通知栏同步显示百分比点Pause即可取消多格式兼容检测到的.zip如 nightly 包会自动解压出里面的 APK空间自律UpdateStorageUtils.kt 会自动删除超过 1 天的旧 APK防止下载目录越积越大安全安装Android 8 会先引导授权未知来源再通过FileProvider唤起系统安装器。四、changelog 渲染changelog.json SDUI 引擎 ✨Vivi-Music 的更新日志不是干巴巴的文本列表而是一套服务端驱动 UISDUI。每个版本发布时附带一个 changelog.json仓库根目录就有一份样例结构如下{ version: 6.0.6, description: 欢迎体验 VIVI MUSIC 最大的一次更新 b加粗/b与font color\#F44336\彩色文字/font都支持, image: …/NEW-UI/update/v6.0.6.jpg, changelog: [ { title: Whats New in v7 Engine, blocks: [ { type: row, children: [ { type: image, url: …/1.png, modifier: { weight: 1.0 } }, { type: video, url: …/1.webm, modifier: { weight: 1.0 } } ] } ], items: [全新 bListen Together/b 界面] } ] }渲染侧同样精彩HTML 富文本转 ComposeparseMarkdownAndUrls函数L956-L999把b、i、font color等标签映射成 Compose 样式链接自动高亮且可点击跳转动态布局块RenderSDUIBlockL1040-L1096能按 JSON 指令排布 row/column甚至内嵌循环播放的视频让更新页变成一场小型发布会离线缓存独立的 ChangelogScreen 页面支持切换历史版本、下拉刷新并把 changelog 缓存到本地 JSON 文件弱网也能看开发者文档完整的 JSON 写法指南见 Changelog/Instructions/instructionchangelojson.md想定制自己的发布日志可以直接照抄。五、版本演进从 4.x 到 6.x 的视觉跃迁 打开 NEW-UI/update/ 目录能看到一套完整的版本宣传图时间线直观记录了项目的进化史阶段代表版本看点4.xv4.0.7Material You 初代界面5.x5.0.2 → 5.0.9播放引擎重构、歌词引擎重写6.0V6.0.0全新 UI 大改版6.0.x6.0.1 ~ 6.0.6Player v17、SponsorBlock、Glassmorphism每个版本的文字草稿沉淀在 Changelog/Stablemd/如 76.md、77.md而面向商店渠道的逐版说明则存放在 fastlane/metadata/android/en-US/changelogs/ 目录共 70 个文件堪称一部项目的编年史。六、写给普通用户的设置速查 ️在设置页的更新入口UpdateSettings.kt里你能控制自动检查更新进入更新页时自动查新版本默认开启Beta 测试通道开关决定你追新b 标签还是求稳v 标签下载通知 / 更新通知分别控制后台下载与新版本提醒已下载 APK 管理查看数量、一键清空释放手机空间。小贴士更新页显示的Last successful check时间戳来自 SharedPreferences键名last_checked_time如果显示已是最新点一次底部按钮即可强制重查。写在最后Vivi-Music 的 OTA 更新方案给出了很好的参考状态机驱动 UIsealed class WorkManager 后台下载 JSON 驱动的 SDUI changelog三件套组合拳让应用内更新这件事既可靠又有仪式感。如果你是开发者不妨从 updater/ 目录入手顺着checkForUpdate → UpdateDownloadWorker → RenderSDUIBlock这条链路读一遍收获会非常大。【免费下载链接】vivi-musicVivi-Music is an expressive Material 3–based YouTube Music client for Android.项目地址: https://gitcode.com/gh_mirrors/vi/vivi-music创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表