# 更新日志

* 关注公众号 **[开源阅读]** 菜单•软件下载 提前享受新版本。
* 关注合作公众号 **[小说拾遗]** 获取好看的小说。

## **必读**

【温馨提醒】 *更新前一定要做好备份，以免数据丢失！*

* 阅读只是一个转码工具，不提供内容，第一次安装app，需要自己手动导入书源，可以从公众号 **[开源阅读]**、QQ群、酷安评论里获取由书友制作分享的书源。
* 正文出现缺字漏字、内容缺失、排版错乱等情况，有可能是净化规则或简繁转换出现问题。
* 漫画源看书显示乱码，**阅读与其他软件的源并不通用**，请导入阅读的支持的漫画源！

**2022/01/11**

* 紧急修复在线tts朗读bug
* 紧急修复登录问题
* 添加isVolume规则，支持二级目录，页眉标题、正文标题显示优化 by Xwite

**2022/01/10**

* 继续修复txt目录识别,现在识别启用的规则,再识别禁用的规则,按目录匹配数由多到少识别,如果有章节大于5万字就尝试下一个目录规则,如果没有任何目录匹配或每章都小于5万字则自动分段
* 修复全局搜索跳转bug
* 从外部打开的文件如果书架上已有会对比更新时间,如果打开的文件更新会替换原文件

**2022/01/06**

* 弃用java.getCookie(tag,key)，请使用cookie.getKey(url,key)
* js添加java.cacheFile(url, saveTime),缓存网络链接，返回文件内容，可实现代码共用和减少代码量

```js
eval(String(java.cacheFile(url)))
```

* 设置里增加书籍文件夹配置,方便切换外部书籍保存文件夹
* 修复打开Web服务，切出app后很快崩溃 #1489
* 修复低版本手机打开本地文件出错的bug #1491
* 校验和调试时不保存正文

**2022/01/03**

* 重新安装应用后没有权限的本地书籍会提示选择文件所在文件夹,不需要重新添加
* 更新okhttp和cronet
* 修复web阅读纪录同步问题 解决bug #1478
* 去除html中一些乱码&nbsp;&ensp;等 解决bug 页面乱码 #1465

**2022/01/01**

* 修复本地txt问题,不在拷贝到私有目录,可以正常打开
* 优化txt目录识别,取目录数量最多的规则

**2021/12/28**

* 用阅读打开本地朗读引擎文件和主体配置文件也可以导入
* 缓存图片采用多线程
* 本地书籍不在拷贝到私有目录,有权限的会直接打开,没权限的自己选择文件夹保存

**2021/12/19**

* 修复全面屏手势会触发翻页的bug
* js添加java.logType(*),打印变量类型,方便调试时查看
* 修复从发现中打开书籍是会打开其它书源书籍的bug
* 全文搜索增加跳转上一个下一个的功能 by Jason Yao
* post可以正确识别contentType

**2021/12/10**

* 朗读出错不弹出朗读界面的时候可以长按朗读按钮进入朗读界面切换朗读引擎,这个有很多人不知道
* 修复cronet访问出错时应用崩溃的bug
* 修复一些epub目录不全或内容不全的问题
* 修复横屏双页时文字选择的问题
* 电脑硬盘坏了还好资料恢复出来了,还是要经常备份比较好

**2021/11/27**

* 更新到SDK31,android 12
* 修复在线朗读引擎新建会替换之前已有的bug
* 修复目录界面自动跳转到顶部bug
* 修复阿里云在线朗读引擎模板中获取时间的兼容性问题

**2021/11/20**

* 修复部分平板双页问题
* 修复书源太多不能导出和备份的问题
* 给txt目录规则添加了一个入口,在书源管理的菜单里面

**2021/11/13**

* 修复没有目录时进入阅读界面不自动更新目录的bug
* 使用系统文件夹选择器出错时自动打开应用文件夹选择器,部分系统文件夹选择器被阉割了

**2021/11/02**

* 修复朗读错误时提示不消失的bug
* 修复滚动阅读选择文字错位bug by DuShuYuan
* 朗读语速调节添加微调按钮

**2021/10/24**

* 修复夜间模式不随系统变化的bug

**2021/10/22**

* 修复封面
* 添加全局字体大小设置
* 导入源和规则时可以先编辑再导入

**2021/10/21**

* 修复自定义封面会因为图片太大崩溃
* 修复play版本一个会引起崩溃的bug

**2021/10/17**

* 修复朗读时可能会崩溃的bug

**2021/10/16**

* 再次修复朗读卡住问题
* 导入书单改为多线程
* 修复其它一些bug

**2021/10/14**

* 修复遇到一些存标点段朗读出错后不继续的问题
* 朗读出错记录错误日志,现在很多界面的菜单里都可以打开日志

**2021/10/10**

* 阿里云语音自动登录
* 修复一些bug
* 优化阿里云登录,需重新登录

```
source登录相关方法,可在js内通过source.调用,可以参考阿里云语音登录
login()
getHeaderMap(hasLoginHeader: Boolean = false)
getLoginHeader(): String?
getLoginHeaderMap(): Map<String, String>?
putLoginHeader(header: String)
removeLoginHeader()
setVariable(variable: String?)
getVariable(): String?
AnalyzeUrl相关函数,js中通过java.调用
initUrl() //重新解析url,可以用于登录检测js登录后重新解析url重新访问
getHeaderMap().putAll(source.getHeaderMap(true)) //重新设置登录头
getStrResponse( jsStr: String? = null, sourceRegex: String? = null) //返回访问结果,文本类型,书源内部重新登录后可调用此方法重新返回结果
getResponse(): Response //返回访问结果,网络朗读引擎采用的是这个,调用登录后在调用这方法可以重新访问,参考阿里云登录检测
```

**2021/10/07**

1. 修复阅读界面长按菜单阻挡选择bug
2. 添加订阅源api

**2021/10/05**

1. 优化阅读界面导航栏
2. 规则添加代码高亮
3. web写源添加订阅源
4. httpTts朗读添加登录功能

```
返回语音之前加入了检测是否登录传入result为okhttp的Response,里面有headers和body,检测是否登录的js需返回正确的Response
```

**2021/10/02**

1. 紧急修复弹出框崩溃bug
2. 修复字体变粗后不能变回的bug
3. 修复底部对齐有时无效的bug

* 不要嫌更新得频繁,这是因为最近新加的功能比较多,出bug很正常,而且我是一个人写软件,没有测试人员,只有发出来大家一起找bug了,遇到bug及时反馈,能修复的我都会在第一时间修复

**2021/10/01**

1. 默认封面名称显示全
2. 发现js错误时可以查看错误详情
4. 修复rss标题显示url的问题
5. 长按正文网址可以选择是否外部浏览器打开,会记住选择
6. 添加书源操作按钮,编辑书源移到里面,增加网址点击区域包括书名,更容易点击
7. 优化内置浏览器
8. 其它一些优化

**2021/09/29**

1. 修复阅读界面导航栏挡住内容的bug
2. 修复webView=ture是自动跳转移动网站的bug
3. 导出添加进度条

**2021/09/28**

1. 添加横屏双页模式

**2021/09/27**

1. 非Play版本内置更新检测和下载,目前从github检测并下载, 不会自动提醒需手动检测, 可以关注公众号,比较重要的更新会在公众号发布然后可以在软件内更新
2. js添加java.webView(html: String?, url: String?, js: String?): String?
3. 修复一些bug

**2021/09/22**

1. 修复在线朗读遇到单独......崩溃的问题
2. 有人提到在线朗读能及时翻页了,本地行不行,这个是要靠本地的tts支持的,我目前用的谷歌文字转语音就是支持的,其它的我不太清楚

**2021/09/21**

1. 阅读界面区域设置添加朗读上一段和朗读下一段
2. 在线朗读采用平均速度计算及时翻页
3. 修复听书定时问题
4. 阅读小标题也使用替换

**2021/09/20**

1. 修复在线朗读跳段的bug
2. 优化默认封面,添加显示书名作者的配置, 后面会添加书名和作者大小位置配置

**2021/09/18**

1. 朗读可以选择非默认tts
2. 其它一些优化和bug修复

**2021/09/16**

1. 优化正文重复标题的去除,必须包含标题且标题后面有空格或换行才会去除,防止误删

```^(\s|\p{P}|${name})*${title}(\s|\p{P})+```

**2021/09/15**

1. 修复因标题加入替换和简繁转换导致的缩进问题
2. 如果出现标题不显示是净化规则的问题,可以先关闭净化

**2021/09/14**

1. 书架菜单添加了日志,更新失败的和下载失败的信息会显示在里面
2. 书源添加校验关键字,有校验关键字的书源用此关键字校验
3. 目录添加购买标识规则
4. 正文标题使用替换,简繁转换,正文中书名,标题开头的自动去重
5. 其它一些优化

**2021/09/08**

1. 优化离线缓存
2. 听书界面添加登录菜单,和拷贝播放url
3. 详情页添加设置源变量和书籍变量
4. 订阅添加登录菜单,添加设置源变量

**2021/09/06**

1. 采用exoPlayer播放音频,支持更多格式
2. 替换不再阻塞
3. 修复详情页初始化:规则bug
4. 书源内的并发率生效,两种格式
    * 时间 格式: 如 500, 访问间隔500毫秒
    * 次数/时间 格式: 如 5/60000, 每分钟最多访问5次

5. url参数添加js, 和webJs参数,js参数传入url返回新的url, webJs参数在webView内执行直到返回不为空,和正文规则webJs一样
6. 重写离线缓存

**2021/09/01**

1. 可以直接导出为链接,方便分享
2. 修复一些bug

**2021/08/28**

1. 发现界面添加登录菜单
2. 优化调试界面,预设搜索项可以点击
3. 修复再没有webDav恢复时恢复按钮没反应的bug
4. 自动阅读的设置改为选择翻页动画

**2021/08/27**

1. 修复导入书源问题
2. 合并cornet版本,添加cornet开关
3. 详情也选择分组后自动加入书架
4. 书源管理可以筛选有登录url的书源,分组需登录
5. 修复定时加快的问题
7. 修复其它一些小bug

**2021/08/24**

1. 修复bug
2. 可以加载证书过期网站的图片
3. 修复书源不兼容老版本的问题
4. 书源添加登录ui,和登录检测配置,稍后会给出示例,可以用来制作一些采用token登录的源,稍后会给出示例
5. 修复web阅读进度没有同步到webDav的问题

**2021/08/21**

1. 阅读时自动更新最新章节
2. 朗读添加媒体按键配置
3. 修复rss列表界面分类往回切换时没有数据的bug
4. 修复订阅分类往回切换时不显示内容的bug
5. 导入书源防止非json格式导入
6. 校验书源显示详细信息 by h11128
7. 其它一些优化

**2021/08/13**

1. web传书可以使用
2. 修复一些bug

**2021/08/09**

1. 修复选择文字不能选择单个文字的bug
2. 分组可选择封面

**2021/08/08**

1. 背景图片添加模糊设置
2. 书籍信息界面添加置顶操作
3. 自动翻页时屏幕常亮
4. 字典:中文使用百度汉语字典，英文使用海词字典。 by ag2s20150909
5. 导入规则时可以选择添加分组还是替换分组

**2021/08/02**

1. 换源界面功能添加：置顶，置底，删除 by h11128
2. Cronet:优化 by ag2s20150909
3. 优化自动翻页 by jiuZhouWorlds
4. 封面设置移到主题里面,白天和夜间可分别设置

**2021/08/01**

1. 为webService添加快捷操作
2. 规则内替换使用正则错误时自动切换为不使用正则
3. 优化Cronet
4. 阅读界面菜单显示的时候停止按键翻页和自动阅读
5. 切换后台停止自动阅读

**2021/07/29**

1. 修复每次更新都重新导入text规则的bug
2. RSS阅读页添加刷新按钮以应对页面内容过期失效的BUG by JiuZhouWorlds
3. 规则内替换使用正则报错时自动使用非正则替换

**2021/07/27**

1. 修复bug
2. web使用api获取封面,不会再出现没有封面的情况
3. 阅读亮度手动调节分别记住白天和夜间模式
4. legado://import/auto?src={url}, 自动识别导入类型
5. 一些优化并更新了一下web首页,感谢沚水, 传书暂时还不好用

**2021/07/22**

1. 非关键规则添加try防止报错中断解析
2. 添加获取封面的api
3. 获取正文api使用替换规则
4. 添加一个ronet版本,网络访问使用Chromium内核
5. web书架增加【最近一次更新书籍信息的时间】
6. 采用Flow替换LiveData,优化资源使用
7. 统一网络一键导入路径legado://import/{path}?src={url}

* path: bookSource,rssSource,replaceRule,textTocRule,httpTTS,theme,readConfig
* 添加了txt小说规则,在线朗读引擎,主题,排版 的一键导入支持,老url依然可用

8. 替换规则管理添加置顶所选和置底所选

**2021/07/16**

1. js扩展函数添加删除本地文件方法
2. js扩展函数对于文件的读写删操作都是相对路径,只能操作阅读缓存内的文件,/android/data/{package}/cache/...

**2021/07/15**

1. 添加js函数来修复开启js沙箱后某些书源失效。by ag2s20150909

```kotlin
/**
 * 获取网络zip文件里面的数据
 * @param url zip文件的链接
 * @param path 所需获取文件在zip内的路径
 * @return zip指定文件的数据
 */
fun getZipStringContent(url: String, path: String): String

/**
 * 获取网络zip文件里面的数据
 * @param url zip文件的链接
 * @param path 所需获取文件在zip内的路径
 * @return zip指定文件的数据
 */
fun getZipByteArrayContent(url: String, path: String): ByteArray?
```

* web服务添加一个导航页

**2021/07/11**

1. 开启JS沙箱限制

* 禁止在js里exec运行命令
* 禁止在js里通过geClass反射
* 禁止在js里创建File对象
* 禁止在js里获取Packages scope

2. 优化并修复bug

**2021/07/10**

1. 阅读界面长按菜单改回原来样式
2. 解决导入书源时重命名分组和保留名称冲突的问题

**2021/07/09**

1. 发现url添加json格式, 支持设置标签样式

* 样式属性可以搜索 [FleboxLayout子元素支持的属性介绍](https://www.jianshu.com/p/3c471953e36d)
* 样式属性可省略,有默认值

```json
[
  {
    "title": "xxx",
    "url": "",
    "style": {
      "layout_flexGrow": 0,
      "layout_flexShrink": 1,
      "layout_alignSelf": "auto",
      "layout_flexBasisPercent": -1,
      "layout_wrapBefore": false
    }
  }
]
```

**2021/07/07**

1. 默认规则新增类似`jsonPath`的索引写法 by bushixuanqi

* 格式形如 `[index,index, ...]` 或 `[!index,index, ...]` 其中`[!`开头表示筛选方式为排除，`index`可以是单个索引，也可以是区间。
* 区间格式为 `start:end` 或 `start:end:step`，其中`start`为`0`可省略，`end`为`-1`可省略。
* 索引、区间两端、区间间隔都支持负数
* 例如 `tag.div[-1, 3:-2:-10, 2]`
* 特殊用法 `tag.div[-1:0]` 可在任意地方让列表反向

2. 允许索引作为@分段后每个部分的首规则，此时相当于前面是`children`

* `head@.1@text` 与 `head@[1]@text` 与 `head@children[1]@text` 等价

3. 添加Umd格式支持 by ag2s20150909
4. 修复web页面按键重复监听的bug
5. 亮度条往中间移了一点,防止误触
6. 添加内置字典

**2021/06/29**

* 修复html格式化bug
* 订阅界面webView支持css prefers-color-scheme: dark 查询,需webView v76或更高版本
* 如webView低于v76可以用js调用activity.isNightTheme()来获取当前是否暗模式
* 修复一些书籍导出epub失败 by ag2s20150909

**2021/06/22**

* 修复隐藏未读设置不生效的bug
* 修复系统字体大小选择大时导入界面按钮显示不全的bug
* 修复听书从后台打开时不对的bug

**2021/06/20**

* viewPager2 改回 viewPager
* 添加配置导入文件规则功能 by bushixuanqi
* 文件夹分组样式优化(未完成)
* epub支持外部模板
* 修复一些bug

**2021/06/06**

* 添加自定义导出文件名
* 添加书架文件夹分组样式,未完成
* viewPager2 3层嵌套有问题,书架换回viewPager

**2021/05/29**

* 谷歌版可使用外部epub模板
* Asset文件夹下二级以内目录全文件读取，Asset->文件夹->文件
* epub元数据修改，使修改字体只对正文生效
* 修复epub模板文件的排序问题
* epub可自定义模板，模板路径为书籍导出目录的Asset文件夹，[模板范例](https://wwa.lanzoux.com/ibjBspkn05i)

```
Asset中里面必须有Text文件夹，Text文件夹里必须有chapter.html，否则导出正文会为空
chapter.html的关键字有{title}、{content}
其他html文件的关键字有{name}、{author}、{intro}、{kind}、{wordCount}
```

**2021/05/24**

* 反转目录后刷新内容
* 修复上下滑动会导致左右切换问题
* 精确搜索增加包含关键词的,比如搜索五行 五行天也显示出来, 五天行不显示

**2021/05/21**

* 添加反转目录功能
* 修复分享bug
* 详情页添加登录菜单
* 添加发现界面隐藏配置

**2021/05/16**

* 添加总是使用默认封面配置
* 添加一种语言 ptbr translation by mezysinc
* epublib 修bug by ag2s20150909

**2021/05/08**

* 预下载章节可调整数目
* 修复低版本Android使用TTS闪退。 by ag2s20150909
* 修复WebDav报错
* 优化翻页动画点击翻页

**2021/05/06**

* 修复bug
* url参数添加重置次数,retry
* 修改默认tts, 手动导入
* 升级android studio

**2021/04/30**

* epub插图,epublib优化,图片解码优化,epub读取导出优化。by ag2s20150909
* 添加高刷设置
* 其它一些优化
* pro版本被play商店下架了,先把pro设置图片背景的功能开放到所有版本,使用pro版本的可以使用备份恢复功能切换最新版本

**2021/04/16**

* 去掉google统计,解决华为手机使用崩溃的bug
* 添加规则订阅时判断重复提醒
* 添加恢复预设布局的功能, 添加一个微信读书布局作为预设布局

**2021/04/08**

* 缓存时重新检查并缓存图片
* 订阅源调试添加源码查看
* web调试不输出源码
* 修复bug
* 换源优化 --- by ag2s20150909
* 修复localBook获取书名作者名的逻辑
* 修复导出的epub的标题文字过大的bug
* 优化图片排版

**2021/04/02**

* 修复bug
* 书源调试添加源码查看
* 添加导出epub by ag2s20150909
* 换源添加是否校验作者选项

**2021/03/31**

* 优化epubLib by ag2s20150909
* 升级库,修改弃用方法
* tts引擎添加导入导出功能

**2021/03/23**

* 修复繁简转换“勐”“十”问题。使用了剥离HanLP简繁代码的民间库。APK减少6M左右
* js添加一个并发访问的方法 java.ajaxAll(urlList: Array<String>) 返回 Array<StrResponse?>
* 优化目录并发访问
* 添加自定义epublib,支持epub v3解析目录。by ag2s20150909

**2021/03/19**

* 修复图片地址参数缺少的bug
* 修复更改替换规则时多次重新加载正文导致朗读多次停顿的bug
* 修复是否使用替换默认值修改后不及时生效的bug
* 修复繁简转换“勐”“十”问题。使用了剥离HanLP简繁代码的民间库。APK减少6M左右 by hoodie13
* 百度tsn改为tts

**2021/03/15**

* 优化图片TEXT样式显示
* 图片url在解析正文时就拼接成绝对url
* 修复一些bug

**2021/03/08**

* 阅读页面停留10分钟之后自动备份进度
* 添加了针对中文的断行排版处理-by hoodie13, 需要再阅读界面设置里手动开启
* 添加朗读快捷方式
* 优化Epub解析 by hoodie13
* epub书籍增加cache by hoodie13
* 修复切换书籍或者章节时的断言崩溃问题。看漫画容易复现。 by hoodie13
* 修正增加书签alert的正文内容较多时，确定键溢出屏幕问题 by hoodie13
* 图片样式添加TEXT, 阅读界面菜单里可以选择图片样式

**2021/02/26**

* 添加反转内容功能
* 更新章节时若无目录url将自动加载详情页
* 添加变量nextChapterUrl
* 订阅跳转外部应用时提示
* 修复恢复bug
* 详情页拼接url改为重定向后的地址
* 不重复解析详情页

**2021/02/21**

* 下一页规则改为在内容规则之后执行
* 书籍导出增加编码设置和导出文件夹设置,使用替换设置
* 导入源添加等待框
* 修复一些崩溃bug

**2021/02/16**

* 修复分享内容不对的bug
* 优化主题颜色,添加透明度
* rss分类url支持js
* 打开阅读时同步阅读进度

**2021/02/09**

* 修复分组内书籍数目少于搜索线程数目，会导致搜索线程数目变低
* 修复保存书源时不更新书源时间的bug
* 订阅添加夜间模式,需启用js,还不是很完善
* 优化源导入界面

**2021/01/18**

* 增加三星 S Pen 支持 by [dacer](https://github.com/dacer)
* 订阅添加阅读下载,可以从多个渠道下载
* 修复一些BUG
**2020/12/30**

* 解决文件下载异常，在线语音可正常播放 by [Celeter](https://github.com/Celeter)
* 更新默认在线朗读库, 默认id小于0方便下次更新时删除旧数据, 有重复的自己删除
* 导入导出书单
* 其它一些优化

**2020/12/27**

* 订阅添加搜索和分组
* 修复部分手机状态栏bug
* 单url订阅支持内容规则和样式

**2020/12/09**

* 修复bug
* 优化中文排序
* 优化编码识别
* 选择文字时优先选词
* 优化进度同步,进入书籍时同步,每次同步单本书,减少同步文件大小

**2020/11/18**

* 优化导航栏
* js添加java.log(msg: String)用于调试时输出消息
* js添加cookie变量,方法见io.legado.app.help.http.api.CookieManager
* js添加cache变量,可以用来存储token之类的临时值,可以设置保存时间,方法见io.legado.app.help.CacheManager
* 需要token的网站可以用js来写了,比如阿里tts

**2020/11/15**

* 正文规则添加字体规则,返回ByteArray
* js添加方法:

```
base64DecodeToByteArray(str: String?): ByteArray?
base64DecodeToByteArray(str: String?, flags: Int): ByteArray?
```

**2020/11/07**

* 详情页菜单添加拷贝URL
* 解决一些书名太长缓存报错的bug
* 添加备份搜索记录
* 替换编辑界面添加正则学习教程
* 去除解析目录时拼接相对url,提升解析速度
* 自动分段优化 by [tumuyan](https://github.com/tumuyan)
* web支持图片显示 by [六月](https://github.com/Celeter)

**2020/10/24**

* 修复选择错误的bug
* 修复长图最后一张不能滚动的bug
* js添加java.getCookie(sourceUrl:String, key:String? = null)来获取登录后的cookie
  by [AndyBernie](https://github.com/AndyBernie)

```
java.getCookie("http://baidu.com", null) => userid=1234;pwd=adbcd
java.getCookie("http://baidu.com", "userid") => 1234
```

* 修复简繁转换没有处理标题
* 每本书可以单独设置翻页动画,在菜单里
* 添加重新分段功能,针对每本书,在菜单里,分段代码来自[tumuyan](https://github.com/tumuyan)

**2020/10/07**

* 更新时预下载10章
* 支持更多分组
* url添加js参数,解析url时执行,可在访问url时处理url,例

```
https://www.baidu.com,{"js":"java.headerMap.put('xxx', 'yyy')"}
https://www.baidu.com,{"js":"java.url=java.url+'yyyy'"}
```

**2020/09/29**

* 增加了几个方法用于处理文件 by [Celeter](https://github.com/Celeter)

```
//文件下载,content为十六进制字符串,url用于生成文件名，返回文件路径
downloadFile(content: String, url: String): String
//文件解压,zipPath为压缩文件路径，返回解压路径
unzipFile(zipPath: String): String
//文件夹内所有文件读取
getTxtInFolder(unzipPath: String): String
```

* 增加type字段，返回16进制字符串,例:`https://www.baidu.com,{"type":"zip"}`
* 底部操作栏阴影跟随设置调节
