ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Legado 阅读内置更新日志 updateLog.md 解析:用户须知、版本要点与更新机制实现

Legado 阅读内置更新日志 updateLog.md 解析:用户须知、版本要点与更新机制实现 移动开发前端应用【免费下载链接】legado-with-MD3使用 Material Design 3 全新设计的阅读 3.0项目地址https://gitcode.com/gh_mirrors/le/legado-with-MD3点击查看免费下载本文以 app/src/main/assets/updateLog.md 为蓝本逐段拆解这份内置更新日志在 Legado 阅读本仓库 legado-with-MD3中的定位与内容它既是用户打开关于/检查更新时看到的版本说明与使用须知也是理解该项目发布节奏cronet 内核、Kotlin/KSP 工程链、功能迭代的一手资料。读完本文你将掌握这份日志的结构、每条更新背后的含义以及日志内容是如何被 App 内的更新检查与渲染链路GitHub API、Markwon驱动呈现的。一、updateLog.md 在应用中的定位updateLog.md位于应用的主资源目录 app/src/main/assets/updateLog.md是随安装包内置在assets中的 Markdown 文档而不是运行时从网络临时拉取的文本。它的内容同时服务于两个界面场景检查更新弹窗当 App 通过更新检查接口拿到新版本信息后把发布说明release note作为updateLog字段传入弹窗并渲染。见 AppUpdate.kt 中UpdateInfo数据类的定义tagName目标版本号updateLog更新日志正文downloadUrl/fileName下载地址与文件名。关于页展示已安装版本日志在关于页面中以VIEW_LOG模式把当前内置日志渲染出来见 AboutSheets.kt 与 UpdateDialog.kt。渲染层面更新日志并非以纯文本展示而是经过 Markdown 解析弹窗 UpdateDialog.kt 使用 Markwon 构建器挂载了GlideImagesPlugin支持日志内嵌图片、HtmlPlugin支持内联 HTML与TablePlugin支持表格关于页则使用 Compose 的MarkdownBlock渲染同一份updateLog内容。这意味着日志文件里出现列表、加粗、分隔线、链接等 Markdown 语法时用户端都能得到对应的排版效果而非一坨纯文本。二、更新日志的「必读」板块写给用户的四条关键须知文档开头在正式版本条目之前专门设置了一段必读这是理解该产品使用方式的核心信息也是新用户最容易踩坑的地方。四条须知逐条展开如下须知含义实际影响更新前务必做好备份数据安全红线升级失败或覆盖数据时可用备份恢复避免书源、书架、阅读进度丢失阅读是转码工具不提供内容产品定位首次安装后需手动导入书源书源可由书友在公众号、QQ 群、酷安评论等处制作分享正文缺字漏字/内容缺失/排版错乱 ≠ App Bug净化规则或简繁转换所致应从净化规则replace 规则与简繁转换配置入手排查漫画源与其他软件的源不通用源格式差异需导入阅读支持的漫画源直接迁移其他软件源会显示乱码其中净化规则与简繁转换两条与仓库中实际可配置能力一一对应书源解析依赖 assets/defaultData/bookSources.json 与 assets/defaultData/replace 相关默认数据 所承载的净化/替换体系而简繁转换在依赖清单中由quick-chinese-transfer-core见 gradle/libs.versions.toml提供底层能力。因此当读者看到正文异常先查净化与简繁的提示时可以在 App 的正文替换规则与简繁转换开关中实际验证。三、版本要点逐条解读日志主体按时间倒序记录了几轮关键更新下面结合仓库源码逐条说明其技术含义。3.1 cronet 内核版本128.0.6613.40当前基线文档顶部固定标注cronet版本: 128.0.6613.40。cronet 是 Chromium 的网络栈Legado 用它作为可选的底层 HTTP 实现以获取更优的 HTTP/2、QUIC 等协议能力。仓库内的实现证据非常具体预编译的 cronet 库以 jar 形式存放在 app/cronetlib/cronet_api.jar、cronet_impl_common_java.jar、cronet_impl_native_java.jar、cronet_impl_platform_java.jar、cronet_shared_java.jar并在 app/build.gradle.kts 中以fileTree方式整体引入是否启用 cronet 由偏好键控制PreferKey.kt 定义const val cronet Cronet对应设置项cronetEnabled默认关闭见 DownloadCacheSettings.ktHttpHelper.kt 在cronetEnabled为真时启用 cronet 通道实际拦截逻辑位于io.legado.app.lib.cronet包的CronetInterceptor/CronetLoader见 Cronet.kt。值得对照的是历史条目2024/02/20中的更新cronet: 121.0.6167.180——日志记录了从 121 系列升级到当前 128 系列的轨迹。若遇到部分站点加载异常可先确认是否启用了 cronet 并尝试切换。3.2 工程链版本Kotlin 与 KSP 的升级路径2024/02/20条目还记录了更新 kotlin-1.9.22 ksp-1.0.17。从当前仓库的 gradle/libs.versions.toml 看版本号已经进一步推进到kotlin 2.4.20、ksp 2.3.12即这份日志是 2024 年初工程链升级的快照后续仍在持续演进。KSP 是仓库中 Room 注解处理与依赖注入代码生成的关键支撑见同文件ksp插件声明与room-compiler依赖这类升级通常伴随构建产物与序列化行为的变更属于界面绘制优化 / Bug 修复之外最需要留意的工程层改动。3.3 2024/10/03功能型更新这是日志中功能信息最密集的一条包括web 书架支持加载网络字体、试读非书架书籍后弹窗、自定义后端 IP。对应的前端实现在 modules/web/Vue 3 TypeScript 的 Web 书架工程含 BookShelf.vue、ReadSettings.vue 等组件说明该功能是App 端服务 浏览器端界面的协同形态RSS 收藏分组管理对应仓库内置的 assets/defaultData/rssSources.json 所代表的 RSS 源体系新增了收藏分组能力朗读功能添加流式播放音频、来电自动暂停播放。朗读底层依赖的media3-exoplayer等库同样可以在 gradle/libs.versions.toml 中确认其他 Bug 修复与优化。3.4 2024/02/27数据导出与文档维护添加备用 URL 导出即给书源等数据在常规导出之外提供备用地址导出方式降低单一导出通道不可用时的迁移成本更新书源制作的帮助文档链接保证用户引用的书源编写指南与当前版本规则保持同步。四、更新日志背后的更新检查机制这份日志之所以能被用户看到是因为 App 内置了完整的更新检查链路而updateLog正是链路末端被展示的载荷。其核心实现位于 AppUpdateGitHub.kt渠道选择根据设置项updateToVariant决定检查范围——official_version正式版、beta_release_version预览版或all_version全部映射到 AppReleaseInfo.kt 中的AppVariant.OFFICIAL/BETA_RELEASE/ALL双通道拉取优先从update-manifests仓库分支读取official.json/beta.json清单带 2.5 秒超时失败或缺失时回退到 GitHub Releases API同时针对 403/429 限流会解析Retry-After、X-RateLimit-Remaining、X-RateLimit-Reset响应头给出用户可读的重试提示版本比较内置手写的 SemVer 解析器AppUpdateGitHub.kt处理major.minor.patch及-beta之类的预发布后缀只有比当前BuildConfig.VERSION_NAME更新的版本才会触发提示超时与空态整体检查在 10 秒内超时无新版本时抛出已是最新版本的本地提示避免无意义的 UI 干扰。当检查到新版本后UpdateInfo.updateLog即携带发布说明进入 UpdateDialog.kt 的更新弹窗展示当前版本、ABI、更新渠道渲染日志正文并通过Download.start(...)发起安装包下载。五、历史日志归档与版本追踪updateLog.md 末尾将 2021、2022、2023 年的日志分别归档在项目对应的历史记录分支中原文以record2021、record2022、record2023区分因此当前这份文件只保留最新若干条目避免主分支文档无限膨胀。这一做法与更新日志既面向新用户也面向开发者的双重定位相符普通用户通过弹窗/关于页快速了解本次更新要点与注意事项开发者与维护者通过条目中的版本号cronet、Kotlin、KSP与功能列表追踪工程链与能力的演进节点。此外更新弹窗的VIEW_LOG模式UpdateDialog.kt允许用户在未检测到新版本时也能直接查看当前内置日志保证这份文档始终可读、可引用。六、小结updateLog.md不是一份普通的版本公告它把产品使用红线备份、书源导入、净化/简繁排查、漫画源不通用、工程链版本基线cronet 128、Kotlin/KSP 演进和功能迭代记录web 书架、RSS 分组、朗读流式播放浓缩在一份 Markdown 中并通过更新检查链路GitHub API Manifest SemVer 比较与 Markwon 渲染在用户端以结构化形式呈现。想进一步了解某个条目对应的实现可按本文给出的路径直接阅读 app/src/main/java/io/legado/app/help/update/ 与 app/src/main/java/io/legado/app/ui/about/ 下的源码。赞分享移动开发前端应用【免费下载链接】legado-with-MD3使用 Material Design 3 全新设计的阅读 3.0项目地址https://gitcode.com/gh_mirrors/le/legado-with-MD3点击查看免费下载相关推荐PasteMD终极指南如何一键将AI对话完美粘贴到Word和ExcelPasteMD终极指南如何一键将AI对话完美粘贴到Word和Excel 每天处理AI对话内容时你是否也经历过这样的困扰从ChatGPT、DeepSeek等桌面应用从0到1掌握awspec新手必知的5个关键概念与实战案例从0到1掌握awspec新手必知的5个关键概念与实战案例 awspec是一款基于RSpec的AWS资源测试工具它允许开发者使用Ruby语法编写测试用例验证Superpowers 上手指南3 条命令让 AI 编程助手按流程干活Superpowers 上手指南3 条命令让 AI 编程助手按流程干活 AI 助手写代码最烦的不是写不出来而是不问需求就动手、修完 bug 还不验证。SuAI 技能AI 插件开发工具上一篇OpenRGB一个软件统一控制所有RGB设备告别多软件混乱的终极解决方案下一篇【亲测免费】 Py-Mysql2Pgsql: MySQL到PostgreSQL的数据迁移工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表