Releases: letmedothis/Legado_Max
Release list
阅读Max开发版 3.26.091617
版本说明
这是 my-changes 开发分支的自动构建版本,包含测试版、兼容版、共存版和调试版。
- 版本号:3.26.091617
- 提交:2d7637559d013c5c20dd63377e817f299cd3389c
- 分支:my-changes
版本类型
| 类型 | Gradle 变体 | 用途 |
|---|---|---|
| 测试版 | appMaxRelease | Max 主开发版本 |
| 共存版 | appSRelease | 与其他版本共存 |
| 兼容版 | appLegacyRelease | 兼容原版包名 |
| 调试版 | appMaxDebug | 无混淆,便于调试和收集日志 |
架构说明
Release 版本包含 arm64-v8a、armeabi-v7a 和 universal 三种 APK;调试版按项目默认配置生成 universal 通用包。若不确定设备架构,请选择 universal。
更新内容(本次推送的全部提交)
其他
- perf(Markdown): 优化大型本地 Markdown 的目录解析与阅读分块 (
2d76375)- 以偏移量引用原文,章节内容按需切片,避免按行副本
- 超大章节按安全断点拆分为虚拟章节,单次排版不超过 512KB
- 缓存章节渲染结果,翻页不再重复转换
- 章节新增 markdownHeadingInContent 变量,兼容旧章节数据
变更文件: - M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/model/localBook/MarkdownDocumentParser.kt
- M app/src/main/java/io/legado/app/model/localBook/MarkdownFile.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt
- M app/src/test/java/io/legado/app/model/localBook/MarkdownDocumentParserTest.kt
Assets
APK 文件名中的版本类型和 ABI 标识对应上面的说明。
阅读Max开发版 3.26.091616
版本说明
这是 my-changes 开发分支的自动构建版本,包含测试版、兼容版、共存版和调试版。
- 版本号:3.26.091616
- 提交:754cee8f6f2258028ddcca8bbf25330695ecb903
- 分支:my-changes
版本类型
| 类型 | Gradle 变体 | 用途 |
|---|---|---|
| 测试版 | appMaxRelease | Max 主开发版本 |
| 共存版 | appSRelease | 与其他版本共存 |
| 兼容版 | appLegacyRelease | 兼容原版包名 |
| 调试版 | appMaxDebug | 无混淆,便于调试和收集日志 |
架构说明
Release 版本包含 arm64-v8a、armeabi-v7a 和 universal 三种 APK;调试版按项目默认配置生成 universal 通用包。若不确定设备架构,请选择 universal。
更新内容(本次推送的全部提交)
功能更新
- feat(Markdown): 支持本地文档阅读 (
754cee8)
Signed-off-by: letmedothis 1939436280@qq.com
变更文件:- M app/src/main/assets/web/help/md/readMenuHelp.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/model/ImageProvider.kt
- M app/src/main/java/io/legado/app/model/localBook/LocalBook.kt
- M app/src/main/java/io/legado/app/model/localBook/MarkdownDocumentParser.kt
- M app/src/main/java/io/legado/app/model/localBook/MarkdownFile.kt
- A app/src/main/java/io/legado/app/model/localBook/MarkdownPathResolver.kt
- M app/src/main/java/io/legado/app/model/localBook/README.md
- M app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
- M app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt
- M app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt
- M app/src/main/java/io/legado/app/ui/file/HandleFileActivity.kt
- A app/src/test/java/io/legado/app/model/localBook/MarkdownBookRecognitionTest.kt
- M app/src/test/java/io/legado/app/model/localBook/MarkdownDocumentParserTest.kt
- A app/src/test/java/io/legado/app/model/localBook/MarkdownPathResolverTest.kt
Assets
APK 文件名中的版本类型和 ABI 标识对应上面的说明。
阅读Max开发版 3.26.091615
版本说明
这是 my-changes 开发分支的自动构建版本,包含测试版、兼容版、共存版和调试版。
- 版本号:3.26.091615
- 提交:6f0ce77e1cf39c87009b4d8586569af76e36ebf9
- 分支:my-changes
版本类型
| 类型 | Gradle 变体 | 用途 |
|---|---|---|
| 测试版 | appMaxRelease | Max 主开发版本 |
| 共存版 | appSRelease | 与其他版本共存 |
| 兼容版 | appLegacyRelease | 兼容原版包名 |
| 调试版 | appMaxDebug | 无混淆,便于调试和收集日志 |
架构说明
Release 版本包含 arm64-v8a、armeabi-v7a 和 universal 三种 APK;调试版按项目默认配置生成 universal 通用包。若不确定设备架构,请选择 universal。
更新内容(本次推送的全部提交)
问题修复
- fix(EPUB): 修复部分本地 EPUB 注解无法显示并统一内链解析 (
6f0ce77)
变更文件:- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/model/localBook/EpubContentCache.kt
- M app/src/main/java/io/legado/app/model/localBook/EpubFile.kt
- M app/src/main/java/io/legado/app/model/localBook/EpubFootnoteLink.kt
- M app/src/main/java/io/legado/app/model/localBook/EpubFootnoteProcessor.kt
- A app/src/main/java/io/legado/app/model/localBook/EpubHrefResolver.kt
- M app/src/main/java/io/legado/app/model/localBook/README.md
- M app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
- M app/src/test/java/io/legado/app/model/localBook/EpubContentCacheTest.kt
- M app/src/test/java/io/legado/app/model/localBook/EpubFootnoteLinkTest.kt
- M app/src/test/java/io/legado/app/model/localBook/EpubFootnoteProcessorTest.kt
- A app/src/test/java/io/legado/app/model/localBook/EpubHrefResolverTest.kt
Assets
APK 文件名中的版本类型和 ABI 标识对应上面的说明。
阅读Max开发版 3.26.091610
版本说明
这是 my-changes 开发分支的自动构建版本,包含测试版、兼容版、共存版和调试版。
- 版本号:3.26.091610
- 提交:781dae9fbe3120fce51038e17e59a1b552f56975
- 分支:my-changes
版本类型
| 类型 | Gradle 变体 | 用途 |
|---|---|---|
| 测试版 | appMaxRelease | Max 主开发版本 |
| 共存版 | appSRelease | 与其他版本共存 |
| 兼容版 | appLegacyRelease | 兼容原版包名 |
| 调试版 | appMaxDebug | 无混淆,便于调试和收集日志 |
架构说明
Release 版本包含 arm64-v8a、armeabi-v7a 和 universal 三种 APK;调试版按项目默认配置生成 universal 通用包。若不确定设备架构,请选择 universal。
更新内容(本次推送的全部提交)
构建与发布
- ci(提交校验): 豁免历史非规范提交 (
781dae9)
变更文件:- M .commitlintrc.js
Assets
APK 文件名中的版本类型和 ABI 标识对应上面的说明。
legado_app_3.26.091608
📦 APK版本说明:
| 版本类型 | 文件名标识 | 说明 |
|---|---|---|
| 测试版 | beta | 测试版,包含新功能,专属于max版的安装包 |
| 兼容版 | compact | 可覆盖原版和lyc版 |
| 共存版 | plus | 独立安装,与主版本共存 |
| 调试包 | debug | 独立安装,与其他共存,适用于调试用,无代码混淆,函数名完整,方便抓取崩溃、报错日志定位问题。此版本能正常抓包 |
四个包名都不同,在安卓系统中不同包名视为不同软件,都可以独立存在。
📱 ABI架构说明:
| ABI标识 | 说明 |
|---|---|
| arm64-v8a | 64位ARM设备(推荐,绝大多数现代手机) |
| armeabi-v7a | 32位ARM设备(老款手机) |
| universal | 包含所有ABI的通用包(体积较大,兼容所有设备) |
请根据您的设备架构选择对应的APK安装。如果不确定设备架构,请选择 universal 版本。
更新内容
- fix(书架): 修正删除分组后遗留的孤儿标签
- fix(书架): 改分组后标签命中数量立即刷新
- style(书架): 标签菱形前缀字号调小
- fix(书架): 重命名标签改为全局生效
- fix(首页): 恢复模块标题行右侧的进入箭头
- 更新日志
阅读Max开发版 3.26.091509
版本说明
这是 my-changes 开发分支的自动构建版本,包含测试版、兼容版、共存版和调试版。
- 版本号:3.26.091509
- 提交:07ee243dbf07cdee7d36ddaa6575f7a92688bbe7
- 分支:my-changes
版本类型
| 类型 | Gradle 变体 | 用途 |
|---|---|---|
| 测试版 | appMaxRelease | Max 主开发版本 |
| 共存版 | appSRelease | 与其他版本共存 |
| 兼容版 | appLegacyRelease | 兼容原版包名 |
| 调试版 | appMaxDebug | 无混淆,便于调试和收集日志 |
架构说明
Release 版本包含 arm64-v8a、armeabi-v7a 和 universal 三种 APK;调试版按项目默认配置生成 universal 通用包。若不确定设备架构,请选择 universal。
更新内容(本次推送的全部提交)
功能更新
- feat(高亮规则): 九宫格间距左右与上下分别设定可调范围 (
147ac7a)- 左右间距 -1.00 ~ +1.00em(水平有邻字可让位,可抵消"强制"的外扩)
- 上下间距 -0.50 ~ +0.50em(垂直受行距限制,收太狠会把背景整个收没)
- HighlightRuleStore 的间距合法区间拆成 _H / _V 两组,弹窗两个滑条同步
- 同步 highlightRules.md(表格 + 数据结构注释)与 updateLog
变更文件: - M app/src/main/assets/web/help/md/highlightRules.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleEditDialog.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleStore.kt
- feat(书架): 新增智能标签管理 (
1783fd5)- 管理标签页右上角新增三点菜单,内含「智能标签管理」,可总开关智能标签,并按子标签逐条开关(总开关关闭时子标签置灰不可用)
- 新增 SmartTag 引擎:按书籍类型、阅读进度、章节数量、更新状态自动匹配标签,规则名与说明走字符串资源(四语言同步)
- 新增 SmartTagConfig:总开关 + 关闭规则黑名单(新增内置规则默认开启,不会被老配置静默隐藏)
- 新增 BookTagMatcher 统一判定入口,书架标签栏自动追加命中的智能标签,筛选同时匹配自定义标签与智能标签
- BookTagInfo 补充智能判定所需字段,新增 SmartTagTest 单元测试,并在更新日志记录本次改动
变更文件: - A .commitmsg.tmp
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/constant/PreferKey.kt
- M app/src/main/java/io/legado/app/data/dao/BookDao.kt
- A app/src/main/java/io/legado/app/help/book/BookTagMatcher.kt
- A app/src/main/java/io/legado/app/help/book/SmartTag.kt
- A app/src/main/java/io/legado/app/help/book/SmartTagConfig.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfTagManageActivity.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfTagManageScreen.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfTagManageUiState.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfTagManageViewModel.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt
- M app/src/main/res/values-zh-rHK/strings.xml
- M app/src/main/res/values-zh-rTW/strings.xml
- M app/src/main/res/values-zh/strings.xml
- M app/src/main/res/values/strings.xml
- A app/src/test/java/io/legado/app/help/book/SmartTagTest.kt
- feat(书架): 标签栏标签显示命中数量 (
8c45082)- 标签栏标签统一显示为「标签名·数量」,自定义标签与智能标签都按命中书籍数统计,"全部"显示分组总书籍数
- 新增 BookTagMatcher.countMatches 单趟遍历统计:每本书只解析一次标签、只判定名字出现在标签栏的智能规则,复杂度不随标签数量放大
- BookTagHelper 新增 parseSet 供调用方复用解析结果,标签栏加载时每本书的标签只切分一次
- 补充 countMatches / tagBarLabel 单元测试,并在更新日志记录该展示改动
变更文件: - M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/help/book/BookTagHelper.kt
- M app/src/main/java/io/legado/app/help/book/BookTagManagement.kt
- M app/src/main/java/io/legado/app/help/book/BookTagMatcher.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt
- M app/src/test/java/io/legado/app/help/book/BookTagManagementTest.kt
- M app/src/test/java/io/legado/app/help/book/SmartTagTest.kt
- feat(书架): 列表视图书籍信息区显示标签 (
7470b1d)- 开启「显示分类信息等」时,书籍信息区按「书籍标签 → 字数 → 分类」排列,标签优先显示且不影响其他信息的展示
- 书籍标签 = 用户自定义标签 + 命中的智能标签,标签前加菱形符号与字数/分类区分,沿用同一标签外框样式
- BookTagMatcher 新增 bookTagNames(自定义标签在前、大小写不敏感去重)与规则解析缓存(按配置修订号 + 语言失效,避免逐个书籍重复解析规则名)
- SmartTagConfig 新增 revision 修订号供缓存失效;补充 bookTagNames 单元测试与更新日志
变更文件: - M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/help/book/BookTagMatcher.kt
- M app/src/main/java/io/legado/app/help/book/SmartTagConfig.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksAdapterList.kt
- M app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BooksAdapterList.kt
- M app/src/test/java/io/legado/app/help/book/SmartTagTest.kt
问题修复
- fix(高亮规则): 智能模式段末右侧背景不再缺少外扩 (
50f1966)- 智能模式原本只在"邻接列是空白字符"时外扩,段末/行末后面没有下一列,
blankNeighborWidth 直接返回 0,导致右侧不外扩、与左侧(段首缩进的全角空格)不对称 - 新增 rightBlankSpace:邻字是空白时沿用原逻辑;匹配段排到本行最后一列时,
改借"段尾到正文右边界"的剩余空白,上限一个字符宽(避免整行末段被拉出很长一段) - 新增 contentRightEdge:按列坐标口径(absStartX + 正文宽度)还原本行右边界,
并与页面右边界取小以兼容双栏 - 同步 highlightRules.md 智能策略说明与 updateLog
变更文件: - M app/src/main/assets/web/help/md/highlightRules.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
- 智能模式原本只在"邻接列是空白字符"时外扩,段末/行末后面没有下一列,
- fix(高亮规则): 智能模式保证背景能包住匹配文字 (
5ebcac4)- 智能模式借不到空白时(中文密排、行末等)外扩量为 0,目标矩形正好等于匹配文字外框,
四角/边条只能压在自己匹配到的字上,表现为"背景包不住文字";现补 0.1em 的最小外扩 - 四角/边条粗细改为不超过该侧实际让出的空隙(自动外扩 + 间距),装饰不再落到匹配文字上;
强制模式的空隙本来就等于四角自身(等价于不夹),严格模式维持原观感 - 智能的上下外扩同样取"半格行距"与 0.1em 的较大者,紧行距时上下也能包住文字
- 同步 highlightRules.md(智能行 + 新增"装饰粗细受空隙限制"说明)与 updateLog
变更文件: - M app/src/main/assets/web/help/md/highlightRules.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
- 智能模式借不到空白时(中文密排、行末等)外扩量为 0,目标矩形正好等于匹配文字外框,
其他
- revert(高亮规则): 回退九宫格四角按字号等比缩放的改动 (
98936d3)
This reverts commit 43d3d99.
变更文件:- M app/src/main/assets/web/help/md/highlightRules.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/BgImageSpan.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleEditDialog.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleStore.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
- chore: 移除误提交的临时提交信息文件 (
df87749)- 删除 .commitmsg.tmp,该文件仅用于向 git 传递提交信息,不应纳入仓库
变更文件: - D .commitmsg.tmp
- 删除 .commitmsg.tmp,该文件仅用于向 git 传递提交信息,不应纳入仓库
Assets
APK 文件名中的版本类型和 ABI 标识对应上面的说明。
legado_app_3.26.091508
📦 APK版本说明:
| 版本类型 | 文件名标识 | 说明 |
|---|---|---|
| 测试版 | beta | 测试版,包含新功能,专属于max版的安装包 |
| 兼容版 | compact | 可覆盖原版和lyc版 |
| 共存版 | plus | 独立安装,与主版本共存 |
| 调试包 | debug | 独立安装,与其他共存,适用于调试用,无代码混淆,函数名完整,方便抓取崩溃、报错日志定位问题。此版本能正常抓包 |
四个包名都不同,在安卓系统中不同包名视为不同软件,都可以独立存在。
📱 ABI架构说明:
| ABI标识 | 说明 |
|---|---|
| arm64-v8a | 64位ARM设备(推荐,绝大多数现代手机) |
| armeabi-v7a | 32位ARM设备(老款手机) |
| universal | 包含所有ABI的通用包(体积较大,兼容所有设备) |
请根据您的设备架构选择对应的APK安装。如果不确定设备架构,请选择 universal 版本。
更新内容
- revert(高亮规则): 回退九宫格四角按字号等比缩放的改动
- feat(高亮规则): 九宫格间距左右与上下分别设定可调范围
- fix(高亮规则): 智能模式段末右侧背景不再缺少外扩
- fix(高亮规则): 智能模式保证背景能包住匹配文字
- feat(书架): 新增智能标签管理
- chore: 移除误提交的临时提交信息文件
- feat(书架): 标签栏标签显示命中数量
- feat(书架): 列表视图书籍信息区显示标签
阅读Max开发版 3.26.091411
版本说明
这是 my-changes 开发分支的自动构建版本,包含测试版、兼容版、共存版和调试版。
- 版本号:3.26.091411
- 提交:5a23852b54033d5c7ce07cd4980d8442f4822ddc
- 分支:my-changes
版本类型
| 类型 | Gradle 变体 | 用途 |
|---|---|---|
| 测试版 | appMaxRelease | Max 主开发版本 |
| 共存版 | appSRelease | 与其他版本共存 |
| 兼容版 | appLegacyRelease | 兼容原版包名 |
| 调试版 | appMaxDebug | 无混淆,便于调试和收集日志 |
架构说明
Release 版本包含 arm64-v8a、armeabi-v7a 和 universal 三种 APK;调试版按项目默认配置生成 universal 通用包。若不确定设备架构,请选择 universal。
更新内容(本次推送的全部提交)
问题修复
- fix(阅读记录): 修复听书时长记录 (
5a23852)
Signed-off-by: letmedothis 1939436280@qq.com
变更文件:- M app/src/main/assets/web/help/md/readMenuHelp.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/model/AudioPlay.kt
- A app/src/main/java/io/legado/app/model/PlaybackReadSessionTracker.kt
- M app/src/main/java/io/legado/app/model/ReadBook.kt
- M app/src/main/java/io/legado/app/service/AudioPlayService.kt
- M app/src/main/java/io/legado/app/service/BaseReadAloudService.kt
- A app/src/test/java/io/legado/app/model/PlaybackReadSessionTrackerTest.kt
Assets
APK 文件名中的版本类型和 ABI 标识对应上面的说明。
阅读Max开发版 3.26.091408
版本说明
这是 my-changes 开发分支的自动构建版本,包含测试版、兼容版、共存版和调试版。
- 版本号:3.26.091408
- 提交:844f01b45286f0eea91de596ebe2eb6e9ed18ed0
- 分支:my-changes
版本类型
| 类型 | Gradle 变体 | 用途 |
|---|---|---|
| 测试版 | appMaxRelease | Max 主开发版本 |
| 共存版 | appSRelease | 与其他版本共存 |
| 兼容版 | appLegacyRelease | 兼容原版包名 |
| 调试版 | appMaxDebug | 无混淆,便于调试和收集日志 |
架构说明
Release 版本包含 arm64-v8a、armeabi-v7a 和 universal 三种 APK;调试版按项目默认配置生成 universal 通用包。若不确定设备架构,请选择 universal。
更新内容(本次推送的全部提交)
功能更新
-
feat(高亮规则): 背景图适配方式新增九宫格并支持手动调整四边分割比例 (
e97ceb2)
变更文件:- M app/src/main/assets/web/help/md/highlightRules.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/BgImageSpan.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRule.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleBackgroundManager.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleEditDialog.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRulePreview.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleStore.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleStyle.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextBaseColumn.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextColumn.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextHtmlColumn.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/CharStyle.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/HighlightStyleSpan.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt
- M app/src/main/res/layout/dialog_highlight_rule_edit.xml
- A app/src/test/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleStoreSanitizeTest.kt
-
feat(高亮规则): 九宫格改用严格/智能/强制外扩策略并修正间距方向 (
9a90393)- 九宫格"压字"布尔开关改为 bgBleedMode 三档策略,默认智能;可空以区分"用户选严格"与"老规则缺字段"
- 自动外扩量:严格 0;智能只占用邻接空白(左右借空格宽度 80%,上下吃一半行距);强制按四角厚度(即原行为)
- 间距方向统一并修正:正数把背景向外撑大、负数向内收,此前"压字"模式下符号是反的
- 上下范围统一以字体 ascent/descent 为基准,不再按行盒内缩,避免切掉字身上下
- drawBgImageSegments 改为按列下标记录段边界,供智能策略判断邻字是否空白
- 九宫格调整弹窗的开关改为三档策略切换并配一行说明,间距滑条改为 -0.35em~+0.35em 居中
- 同步 highlightRules.md 与更新日志
feat(高亮规则): 九宫格新增压字开关与左右/上下间距调整
- HighlightRule 新增 bgOverlapChar/bgSpacingH/bgSpacingV,贯通样式、Span、列到绘制链路
- drawNineSlice 新增 overlapChar 与 spacing 参数:压字时保持四角画在匹配区外侧的原行为,
不压字时四角改画在匹配区内部,背景只覆盖匹配到的文字 - 不压字模式上下范围改用字体 ascent/descent 为基准,避免从行盒内缩切掉字身上下
- 间距以 em 为单位、可正可负:正数向内收、负数向外扩,可补偿图片自带的透明留白
- 九宫格调整弹窗新增「压字」开关与「左右间距」「上下间距」滑条,并套滚动容器
- 配置页预览 BgImageSpan 复用同一套规则
- 同步 highlightRules.md 与更新日志
变更文件: - M app/src/main/assets/web/help/md/highlightRules.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/BgImageSpan.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRule.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleEditDialog.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRulePreview.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleStore.kt
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleStyle.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextBaseColumn.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextColumn.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextHtmlColumn.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/CharStyle.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/HighlightStyleSpan.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt
-
feat(阅读页): 九宫格强制策略把邻字推开一个正文字距 (
0f6131d)- 移除上一版的"邻字间距"参数(改为自动用阅读设置的字间距)及绘制期外扩上限
- 新增 computeNeighborPush:按强制段的四角厚度与间距算出左右邻字各自要让出的宽度
- 推开的距离作为真实排版宽度参与断行与两端对齐(纯文本走 widthsArray、HTML 走
HighlightSpacingSpan),剩余文字仍保持整齐,不会溢出右边距 - 新增 NeighborPush.trimEnd:从匹配区最后一个字的列末尾扣回该宽度,避免背景跟着变宽
- 新增 TextLine.nineSliceSideWidth,与 drawNineSlice 的切分口径保持一致
- 单侧最多让出 1em;HTML 路径的 ReplacementSpan 自定义标签判断排除新 Span
- 同步 highlightRules.md 与更新日志
feat(高亮规则): 九宫格新增邻字间距,强制模式外扩时不再压字
- HighlightRule 新增 bgNeighborGap(em,默认 0=不限制),贯通样式、Span、列到绘制链路
- TextLine 新增 neighborBleedLimit:按邻字字形墨迹(getTextBounds)算可用外扩空间再减掉该间距
- drawNineSlice 增加 leftMaxBleed/rightMaxBleed,外扩量取"策略外扩量"与上限的较小值
- 邻字是空白时按整段宽度计算;行首行尾不做限制
- 配置页预览 BgImageSpan 用同一口径计算上限,间距滑条抽成通用 emSliderRow
- 九宫格调整弹窗新增"邻字间距"滑条(0~0.5em)并补说明
- 同步 highlightRules.md 与更新日志
变更文件: - M app/src/main/assets/web/help/md/highlightRules.md
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/java/io/legado/app/ui/book/read/config/highlight/HighlightRuleEditDialog.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/HighlightStyleSpan.kt
- M app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt
问题修复
- fix(气泡管理): 返回处理迁移至 OnBackPressedDispatcher,适配预测性返回 (
850da71)- 移除 override fun onBackPressed(),改用 dispatcher 注册的 OnBackPressedCallback
- 多选模式下返回退出多选,其余情况转发给 BaseActivity 已注册的 finish 回调
- Android 13+/16+ 手势返回不再回调 onBackPressed,此修复消除返回键失灵风险
变更文件: - M app/src/main/java/io/legado/app/ui/config/BubbleManageActivity.kt
- fix(本地化): 预下载提示字符串占位符类型修正为 %d (
002b5d7)- pre_download_m 四个语言资源 %s 改为 %d,与调用方传入的 Int 类型匹配(MangaQuickSettingDialog / ReadMangaActivity)
- backward_pre_download_s 的 values-zh-rTW / values-zh-rHK 补齐缺失的 %d 占位符,修复 StringFormatInvalid 报错
- en / zh 同步 %s 改 %d,消除 lint StringFormatMatches 错误
变更文件: - M app/src/main/res/values-zh-rHK/strings.xml
- M app/src/main/res/values-zh-rTW/strings.xml
- M app/src/main/res/values-zh/strings.xml
- M app/src/main/res/values/strings.xml
- fix(兼容): 消除 20 处 NewApi 违规,低版本设备不再有崩溃风险 (
8a55e24)- BaseReadBookActivity / ReadMangaActivity:Dialog.requireViewById 改用 findViewById + 空安全兜底
- DownloadManageActivity:MediaStore.Downloads EXTERNAL_CONTENT_URI 加 SDK_INT>=29 分支,低版本走下载管理器降级
- ImageCropActivity:为 ImageDecoder 解码函数标注 @RequiresApi(28)(调用处已有 SDK 分流)
- HomepageViewModel:Html.fromHtml 抽 htmlToPlainText 函数,SDK_INT 分流新旧接口
- TitleBarConfig:GradientDrawable.getColor 改为函数级 SDK 守卫,消除 lint 误报
变更文件: - M app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt
- M app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt
- M app/src/main/java/io/legado/app/ui/download/DownloadManageActivity.kt
- M app/src/main/java/io/legado/app/ui/image/ImageCropActivity.kt
- M app/src/main/java/io/legado/app/ui/main/homepage/HomepageViewModel.kt
- M app/src/main/java/io/legado/app/ui/widget/TitleBarConfig.kt
- fix(本地化): 预下载提示字符串占位符类型修正 (
bd0361e)- pre_download_m 四语言资源 %s 改为 %d:调用方传入 Int(MangaQuickSettingDialog / ReadMangaActivity),消除 StringFormatMatches 错误
- backward_pre_download_s 的 values-zh-rTW / values-zh-rHK 补齐缺失的占位符(%s,调用方传 String),en / zh 保持原 %s 不变,消除 StringFormatInvalid
- 附带说明:en 资源 %d 触发 PluralsCandidate 提示(warning 级,不阻塞),复数化重构留待后续
变更文件: - M CLAUDE.md
- M app/src/main/res/values-zh-rHK/strings.xml
- M app/src/main/res/values-zh-rTW/strings.xml
- M app/src/main/res/values-zh/strings.xml
- M app/src/main/res/values/strings.xml
- M docs/project-rules/api-compat-rules.md
- fix(web服务): 修复网页传书与快速备份不可用的问题 (
9b3cd85)- 传书失败不再被网页误报为成功:上传页解析响应体真实结果,失败显示红叉与原因
- 传书成败在App端弹Toast提示,未设置书籍保存位置时给出明确错误信息
- 备份ZIP改为文件流式下载,不再整体读入内存,避免大书库内存溢出
- 备份请求并发共享同一次打包,等待上限由120秒放宽到600秒
- 备份页展示服务端真实失败原因并增加耗时提示,Vue产物重新构建
- 修复书架页数据备份按钮 /backup/ 尾斜杠路由失配,并纳入鉴权白名单
- .prettierignore 排除Web前端构建产物、遗留脚本与 modules/web 源码,避免提交混入全量重排
- 同步更新 updateLog.md
变更文件: - M .prettierignore
- M app/src/main/assets/web/help/md/updateLog.md
- M app/src/main/assets/web/uploadBook/js/html5_fun.js
- D app/src/main/assets/web/vue/assets/BackupManager-BptWbkEQ.js
- A app/src/main/assets/web/vue/assets/BackupManager-CzJkKGjm.js
- A app/src/main/assets/web/vue/assets/BackupManager-DkSzdkUu.css
- D app/src/main/assets/web/vue/assets/BackupManager-X5uO_YzP.css
- D app/src/main/assets/web/vue/assets/BookChapter-BCaSBgbo.js
- A app/src/main/assets/web/vue/assets/BookChapter-C8VPxkul.js
- D app/src/main/assets/web/vue/assets/BookShelf-B7EKvyEu.js
- A app/src/main/assets/web/vue/assets/BookShelf-BWoSCYYm.js
- A app/src/main/assets/web/vue/assets/index-B8MST9KK.css
- D app/src/main/assets/web/vue/assets/index-Cj2x241m.css
- D app/src/main/assets/web/vue/assets/index-DJiNYgL2.js
- A app/src/main/assets/web/vue/assets/index-Dl2zbEGb.js
- D app/src/main/assets/web/vue/assets/loading-DNK6Vvlt.js
- A app/src/main/assets/web/vue/assets/loading-to5go6_O.js
- A app/src/main/assets/web/vue/assets/vendor-CW8oAoO3.js
- D app/src/main/assets/web/vue/assets/vendor-DDq6Rt0g.js
- M app/src/main/assets/web/vue/index.html
- M app/src/main/java/io/legado/app/api/controller/BackupController.kt
- M app/src/main/java/io/legado/app/api/controller/BookController.kt
- M app/src/main/java/io/legado/app/web/HttpServer.kt
- M modules/web/src/views/BackupManager.vue
- fix(主题): 修复无法设置纯色背景的问题 (
ea3420d)- 占位机制误伤纯色场景:清空背景图后签名变为空/文件缺失,但旧占位图仍被应用且保留,导致无法回到纯色底
- getBackgroundSignature 改为可空:未配置背景图或图片文件不存在(含绝对路径失效)时返回 null,绝对路径补充 isFile 校验
- BaseActivity 仅在签名非空(确实配置了背景图)时才使用占位图;无图时回调 null
- onBackgroundDrawableLoaded 改为无条件设置 decorView 背景,null 时清除旧背景图回到纯色底
变更文件: - M app/src/main/java/io/legado/app/base/BaseActivity.kt
- M app/src/main/java/io/legado/app/help/config/ThemeConfig.kt
- M app/src...
legado_app_3.26.091408
📦 APK版本说明:
| 版本类型 | 文件名标识 | 说明 |
|---|---|---|
| 测试版 | beta | 测试版,包含新功能,专属于max版的安装包 |
| 兼容版 | compact | 可覆盖原版和lyc版 |
| 共存版 | plus | 独立安装,与主版本共存 |
| 调试包 | debug | 独立安装,与其他共存,适用于调试用,无代码混淆,函数名完整,方便抓取崩溃、报错日志定位问题。此版本能正常抓包 |
四个包名都不同,在安卓系统中不同包名视为不同软件,都可以独立存在。
📱 ABI架构说明:
| ABI标识 | 说明 |
|---|---|
| arm64-v8a | 64位ARM设备(推荐,绝大多数现代手机) |
| armeabi-v7a | 32位ARM设备(老款手机) |
| universal | 包含所有ABI的通用包(体积较大,兼容所有设备) |
请根据您的设备架构选择对应的APK安装。如果不确定设备架构,请选择 universal 版本。
更新内容
fix(高亮规则): 九宫格四角改为按字号等比缩放,间距范围定为 ±0.5em
- 四角尺寸原为位图原始像素,被"按方向各自夹一次"限幅后会压成扁横条、样式完全看不清;
改为按"分割比例 × 字号"(水平再乘图片宽高比)等比缩放,形状不变形,且与图片分辨率无关 - 四角放不下时改为按同一比例整体收缩,不再只缩一个方向
- 强制模式外扩量随之受四角尺寸约束,不再铺满整行、压住上下行
- 间距范围由 -1.00~+0.50em 收敛为 -0.50~+0.50em(-1.00 会把背景整个收没)
- 同步 highlightRules.md 表格与说明、updateLog