diff --git a/app/build.gradle b/app/build.gradle index 3c8a18f6c..9175af2d1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,6 +37,7 @@ android { targetSdkVersion 29 versionCode gitCommits versionName version + flavorDimensions "versionCode" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" project.ext.set("archivesBaseName", name + "_" + version) multiDexEnabled true @@ -73,7 +74,15 @@ android { } } } - + productFlavors{ + app{ + manifestPlaceholders = [APP_CHANNEL_VALUE:"app"] + } + google{ + applicationId "io.legado.play" + manifestPlaceholders = [APP_CHANNEL_VALUE:"google"] + } + } compileOptions { // Flag to enable support for the new language APIs //coreLibraryDesugaringEnabled true @@ -99,7 +108,7 @@ kapt { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - testImplementation 'junit:junit:4.12' + testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' //kotlin @@ -119,7 +128,7 @@ dependencies { implementation 'androidx.viewpager2:viewpager2:1.0.0' implementation 'com.google.android.material:material:1.1.0' implementation 'com.google.android:flexbox:1.1.0' - implementation 'com.google.code.gson:gson:2.8.5' + implementation 'com.google.code.gson:gson:2.8.6' //lifecycle def lifecycle_version = '2.2.0' @@ -127,12 +136,12 @@ dependencies { implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" //room - def room_version = '2.2.4' + def room_version = '2.2.5' implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" //paging - implementation 'androidx.paging:paging-runtime:2.1.1' + implementation 'androidx.paging:paging-runtime:2.1.2' //anko def anko_version = '0.10.8' @@ -148,26 +157,26 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" //规则相关 - implementation 'org.jsoup:jsoup:1.12.1' + implementation 'org.jsoup:jsoup:1.13.1' implementation 'cn.wanghaomiao:JsoupXpath:2.3.2' implementation 'com.jayway.jsonpath:json-path:2.4.0' //JS rhino implementation 'com.github.gedoor:rhino-android:1.4' - //Retrofit - implementation 'com.squareup.okhttp3:logging-interceptor:4.1.0' - implementation 'com.squareup.retrofit2:retrofit:2.6.1' + //网络 + //noinspection GradleDependency + implementation 'com.squareup.retrofit2:retrofit:2.7.2' //Glide - implementation 'com.github.bumptech.glide:glide:4.9.0' + implementation 'com.github.bumptech.glide:glide:4.11.0' //webServer implementation 'org.nanohttpd:nanohttpd:2.3.1' implementation 'org.nanohttpd:nanohttpd-websocket:2.3.1' //二维码 - implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.6' + implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7' //颜色选择 implementation 'com.jaredrummler:colorpicker:1.1.0' @@ -177,7 +186,7 @@ dependencies { implementation 'org.apache.commons:commons-text:1.8' //MarkDown - implementation 'ru.noties.markwon:core:3.0.2' + implementation 'ru.noties.markwon:core:3.1.0' //转换繁体 implementation 'com.github.houbb:opencc4j:1.4.0' diff --git a/app/google-services.json b/app/google-services.json index fb88090cb..314a5ea7c 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -92,6 +92,35 @@ ] } } + }, + { + "client_info": { + "mobilesdk_app_id": "1:453392274790:android:b891abd2331577dff624a7", + "android_client_info": { + "package_name": "io.legado.play.release" + } + }, + "oauth_client": [ + { + "client_id": "453392274790-hnbpatpce9hbjiggj76hgo7queu86atq.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyD90mfNLhA7cAzzI9SonpSz5mrF5BnmyJA" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "453392274790-hnbpatpce9hbjiggj76hgo7queu86atq.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } } ], "configuration_version": "1" diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 9af1203b9..1e8ab731b 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -160,7 +160,6 @@ -dontwarn rx.** -dontwarn okio.** --dontwarn retrofit2.** -dontwarn javax.annotation.** -dontwarn org.apache.log4j.lf5.viewer.** -dontnote org.apache.log4j.lf5.viewer.** @@ -172,7 +171,6 @@ -dontwarn com.jeremyliao.liveeventbus.** -keep class com.jeremyliao.liveeventbus.** { *; } --keep class retrofit2.**{*;} -keep class okhttp3.**{*;} -keep class okio.**{*;} -keep class com.hwangjr.rxbus.**{*;} diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml index b91572ada..e4464c88d 100644 --- a/app/src/debug/res/values/strings.xml +++ b/app/src/debug/res/values/strings.xml @@ -1,4 +1,4 @@ - 阅读.debug - 阅读.debug·搜索 + 阅读·D + 阅读·D·搜索 \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5256b0ebc..97b4132cb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ android:label="@string/app_name" android:networkSecurityConfig="@xml/network_security_config" android:supportsRtl="true" + android:requestLegacyExternalStorage="true" android:theme="@style/AppTheme.Light" tools:ignore="AllowBackup,GoogleAppIndexingWarning,UnusedAttribute"> @@ -78,6 +79,48 @@ android:resource="@xml/shortcuts" android:launchMode="singleTask" /> + + + + + + + + + + + + + + + + + + + + + + + + + android:launchMode="singleTop" /> + + + + @@ -177,42 +224,55 @@ android:scheme="yuedu" /> + + + + + + + + + + + + @@ -227,6 +287,19 @@ + + + + + + + + + + + @@ -250,6 +323,10 @@ android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> + + \ No newline at end of file diff --git a/app/src/main/assets/help.md b/app/src/main/assets/help.md new file mode 100644 index 000000000..9f77645b6 --- /dev/null +++ b/app/src/main/assets/help.md @@ -0,0 +1,129 @@ +## 常见问题 + +1.为什么第一次安装好之后什么东西都没有? +* 因为阅读只是一个转码工具,不提供内容,第一次安装app,需要自己手动导入书源,可以从QQ群、公众号“开源阅读软件”、酷安评论里获取由书友制作分享的书源。 + +2.如何导入本地书源文件? +* 下载群文件里的书源文件(书源格式后缀有txt、json,其中json文件某些情况下无法导入,需要修改后缀为txt格式才可导入); +* 打开阅读软件; +* 我的 - 点击“书源管理”; +* 点击右上角选择“本地导入”; +* 左下角选择书源文件所在的路径; +* 点击书源文件导入; +* 导入后返回书源管理界面; +* 新版qq下载路径:Android/data/com.tencent.mobileqq/Tencent/QQfile_recv/ + +3.如何新建大佬发的单独书源? +* 复制书源代码; +* 打开阅读软件; +* 我的 - 点击“书源管理”; +* 右上角选择“新建书源”; +* 进入新建书源后点击右上角“粘贴源”; +* 粘贴书源完成后点击上方保存; +* 本次新建单独书源操作完成。 +* 注:如果书源有错误或者复制不全会显示格式错误,请重新复制。 + +4.为什么导入2.0书源后看不了书? +* 2.0部分书源并不适用3.0,建议导入后进行筛选。 + +5.阅读2.0数据如何导入阅读3.0? +* 先对阅读2.0的数据进行备份,然后进入阅读3.0,点击“我的”,选择“备份与恢复”,再点击“导入旧版本数据”。 + +6.如何给朋友分享我的书源? +* 打开阅读软件; +* 点击备份; +* 打开手机自带的文件管理; +* 手机自带内存根目录找到YueDu3.0文件夹; +* 找到myBookSource.json长按选择分享; +* 选择微信分享或者QQ分享; +* 选择你要分享的好友点击发送; +* 好友接收后在手机自带内存根目录找到myBookSource.json文件(QQ在tencent--QQfile_recv微信在Tencent--MicroMsg--Download); +* 复制该文件到手机自带内存根目录找到YueDu3.0文件夹(如已有该文件请先删除该文件或者备份到其他地方再复制到文件夹); +* 打开阅读软件点击恢复。 +* 注:备份路径如已修改过请在修改后的路径下查找书源文件。 + +7.目前阅读支持哪些格式的本地书籍? +* 目前支持TXT、EPUB格式(只支持显示EPUB里的文本内容,还不支持显示图片)。 + +8.如何刷新书架? +* 在书架界面下拉即可刷新。 + +9.书架界面书籍右上角的红色或者灰色背景小数字代表什么? +* 红色代表书籍有更新,灰色代表无更新,数字代表未读章节。 + +10.如何查看书籍详情? +* 长按书籍。 + +11.如何对书架上的书进行删除、切换书架的操作? +* 书籍详情页操作即可。 + +12.如何禁止或允许某本书更新? +* 书籍详情页,点击右上角 - “允许更新”。 + +13.如何更换小说封面、名字、作者或简介? +* 书籍详情页,点击右上角修改按钮。 + +14.怎么使用自定义字体? +* 阅读界面 - 字体-点击右上角选择字体文件路径。 + +15.目前支持哪些格式的字体文件? +* 目前支持ttf、otf格式。 + +16.书籍经常“正在加载中”怎么办? +* 在线书籍出现这个问题通常是由于源质量不好或不兼容引起的,可以换其它源多试试;本地书籍出现这个问题大概率是目录规则问题,手动切换规则可以解决。 + +17.书籍内容只有标题,正文内容是路径怎么办? +* 通常是缓存路径引起的,更换缓存路径即可。 + +18.效验书源显示失效就说明书源不能用了吗? +* 效验书源只是测试书源,可以做个参考,失效了不代表书源不能用了。 + +19.发现和正版书源能不能使用? +* 发现和正版书源只能用来找书,看排行榜,不能用来看书,如需看书请切换书源。 + +20.替换净化是什么? +* 替换净化可以去除书籍内容里的广告、错别字、屏蔽词等。 + +21.如何自己填写净化替换规则? +* 第一行:替换规则名称 - 根据自己需求对替换净化规则进行命名; +* 第二行:分组 - 净化规则的分组组别; +* 第三行:替换规则 - 填写需要被替换的内容; +* 第四行:替换为 - 填写想替换成的内容(如不填则默认表示删除第二行里填写的内容); +* 第五行:替换范围,选填书名或者源名 - 填写此替换净化规则需要对哪本书籍或者哪个书源生效(如不填则对所有书籍和书源生效)。 +* 注:如常规去除方法去除不掉,则需要勾选“使用正则表达式”,同时第二行里的替换规则也需要按照正则表达式来填写(正则表达式填写方法可自行百度学习)。 + +22.如何听书? +* 可以使用手机自带的朗读引擎,也可使用第三方如谷歌、小米等朗读引擎。 +* 【具体操作:安装-系统设置-其他高级设置-辅助功能-TTS输出-选择安装的朗读引擎(不同品牌手机的操作方法及步骤也不同,视情况而定)。】 + +23.如何设置屏幕方向、屏幕显示时长、显示/隐藏状态栏、显示/隐藏导航栏、音量键翻页、长按选择文本、点击总是翻下一页、自定义翻页案件? +* 阅读界面,设置(可上划,下面还有其他设置)。 + +24.搜索的时候感觉手机卡顿,如何解决? +* 我的 - 其他设置 - “更新和搜索线程数”调低。 + +25.更新前有什么注意事项? +* 要做好备份。 + +26.看书时如遇到“目录为空”、“加载失败”和长串英文等情况怎么办? +* 一般是书源问题,切换书源即可。 + +27.为什么书源这么多,发现里却只有一点点? +* 书源想要在发现界面里显示需要在书源里添加发现规则,并不是所有书源都有发现规则。 + +28.云备份在哪? +* 我的 - 备份与恢复 - WebDav设置。 + +29.如何操作进行云备份? +* 侧栏设置,WebDav设置; +* 正确填写WebDAV 服务器地址、WebDAV 账号、WebDAV 密码;(要获得这三项的信息,需要注册一个坚果云账号,如果直接在手机上注册,坚果云会让你下载app,过程比较麻烦,为了一步到位,最好是在电脑上打开这个注册链接:https://www.jianguoyun.com/d/signup;注册后,进入坚果云;点击右上角账户名处选择 “账户信息”,然后选择“安全选项”;在“安全选项” 中找到“第三方应用管理”,并选择“添加应用”,输入名称如“阅读”后,会生成密码,选择完成;其中https://dav.jianguoyun.com/dav/就是填入“WebDAV 服务器地址”的内容,“使用情况”后面的邮箱地址就是你的“WebDAV 账号”,点击显示密码后得到的密码就是你的“WebDAV 密码”。) +* 无需操作,APP默认每天自动云备份一次。 + +30.关于云备份的相关说明 +* 在正确设置好云备份的情况下,APP默认每天自动云备份一次,当日多次手动云备份会对当日的旧云备份文件进行覆盖,并不会覆盖之前及之后不同日期的备份文件,每天所自动云备份的文件会按照日期进行命名。 + +31.本地备份和云备份都能备份哪些东西? +* 书架、看书进度、搜索记录、书源、替换、APP设置等都会备份,基本涵盖所有内容。 + +32.出现某些未知bug怎么办? +* 清除软件数据试试看,不行再进行反馈。 \ No newline at end of file diff --git a/app/src/main/assets/txtTocRule.json b/app/src/main/assets/txtTocRule.json index fc5469653..ececb6800 100644 --- a/app/src/main/assets/txtTocRule.json +++ b/app/src/main/assets/txtTocRule.json @@ -2,73 +2,97 @@ { "enable": true, "name": "目录", - "rule": "^[  \\t]{0,4}(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|篇(?!张))).{0,30}$", + "rule": "^[  \\t]{0,4}(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|篇(?!张))).{0,30}$", "serialNumber": 0 }, { "enable": false, - "name": "目录(不匹配行前空白)", - "rule": "^(?<= |\\s)(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|篇(?!张))).{0,30}$", + "name": "目录(去空白)", + "rule": "(?<=[ \\s])(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|篇(?!张))).{0,30}$", "serialNumber": 1 }, { "enable": false, "name": "目录(去简介)", - "rule": "^(?<= |\\s)(?:前言|序章|楔子|正文(?!完)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|回(?![合来事去])|场(?![和合比电是])|篇(?!张))).{0,30}$", + "rule": "(?<=[ \\s])(?:前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|回(?![合来事去])|场(?![和合比电是])|篇(?!张))).{0,30}$", "serialNumber": 2 }, { "enable": false, "name": "目录(古典、轻小说备用)", - "rule": "^[  \\t]{0,4}(?:前言|序章|楔子|正文(?!完)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|回(?![合来事去])|场(?![和合比电是])|篇(?!张))).{0,30}$", + "rule": "^[  \\t]{0,4}(?:前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\s{0,4}[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?!分)|回(?![合来事去])|场(?![和合比电是])|篇(?!张))).{0,30}$", "serialNumber": 3 }, + { + "enable": false, + "name": "数字(纯数字标题)", + "rule": "(?<=[ \\s])\\d+[  \\t]{0,4}$", + "serialNumber": 4 + }, { "enable": true, "name": "数字 分隔符 标题名称", "rule": "^[  \\t]{0,4}\\d{1,5}[\\,\\., 、\\-].{1,30}$", - "serialNumber": 4 + "serialNumber": 5 }, { "enable": true, "name": "正文 标题/序号", - "rule": "^[  \\t]{0,4}正文\\s{1,4}.{0,20}$", - "serialNumber": 5 + "rule": "^[  \\t]{0,4}正文[  ]{1,4}.{0,20}$", + "serialNumber": 6 }, { "enable": true, "name": "Chapter/Section/Part/Episode 序号 标题", + "rule": "^[  \\t]{0,4}(?:[Cc]hapter|[Ss]ection|[Pp]art|PART|[Ee]pisode|(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外)\\s{0,4}\\d{1,4}.{0,30}$", + "serialNumber": 7 + }, + { + "enable": false, + "name": "Chapter(去简介)", "rule": "^[  \\t]{0,4}(?:[Cc]hapter|[Ss]ection|[Pp]art|PART|[Ee]pisode)\\s{0,4}\\d{1,4}.{0,30}$", - "serialNumber": 6 + "serialNumber": 8 }, { "enable": true, "name": "特殊符号 序号 标题", - "rule": "^[  \\t]{0,4}[〈〖〔【][第卷][\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,10}[章节][\\.:: \f\t].{0,30}$", - "serialNumber": 7 + "rule": "(?<=[\\s ]{0,4}).{1,3}(?:第|卷|[Cc]hapter)[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,10}[章节]?[\\.:: \f\t].{0,20}$", + "serialNumber": 9 }, { - "enable": true, - "name": "特殊符号 标题", - "rule": "^[  \\t]{0,4}[\\[〈「『〖〔《(【\\(☆★].{1,30}[\\)】)》〕〗』」〉\\]]?\\s{0,4}$", - "serialNumber": 8 + "enable": false, + "name": "特殊符号 标题(成对)", + "rule": "(?<=[\\s ]{0,4})(?:[\\[〈「『〖〔《(【\\(].{1,30}[\\)】)》〕〗』」〉\\]]?|(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外)[  ]{0,4}$", + "serialNumber": 10 }, { - "enable":false, - "name": "特殊符号 标题(不匹配空白字符)", - "rule": "^(?<= |\\s)[\\[〈「『〖〔《(【\\(☆★].{1,30}[\\)】)》〕〗』」〉\\]]?\\s{0,4}$", - "serialNumber": 9 + "enable":true, + "name": "特殊符号 标题(单个)", + "rule": "(?<=[\\s ]{0,4})(?:[☆★✦✧].{1,30}|(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外)[  ]{0,4}$", + "serialNumber": 11 }, { "enable": true, "name": "章/卷 序号 标题", - "rule": "^[  \\t]{0,4}(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完)|终章|后记|尾声|番外|[卷章][\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8})\\s{0,4}.{0,30}$", - "serialNumber": 10 + "rule": "^[ \\t ]{0,4}(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|[卷章][\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8})[  ]{0,4}.{0,30}$", + "serialNumber": 12 }, { "enable":false, "name": "顶格标题", "rule": "^\\S.{1,20}$", - "serialNumber": 11 + "serialNumber": 13 + }, + { + "enable":false, + "name": "双标题(前向)", + "rule": "(?m)(?<=[ \\t ]{0,4})第[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章.{0,30}$(?=[\\s ]{0,8}第[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章)", + "serialNumber": 14 + }, + { + "enable":false, + "name": "双标题(后向)", + "rule": "(?m)(?<=[ \\t ]{0,4}第[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章.{0,30}$[\\s ]{0,8})第[\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章.{0,30}$", + "serialNumber": 15 } ] diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 7ace22ee4..2dab7f915 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -1,6 +1,102 @@ ## 更新日志 * 旧版数据导入教程:先在旧版阅读(2.x)中进行备份,然后在新版阅读(3.x)【我的】->【备份与恢复】,选择【导入旧版本数据】。 -* 请关注[开源阅读软件]()支持我,同时关注合作公众号[小说拾遗](),阅读公众号小编。 +* 请关注[开源阅读]()支持我,同时关注合作公众号[小说拾遗](),阅读公众号小编。 +* 弄了个企业公众号[开源阅读](),后面弄好后会把原来的[开源阅读软件]()迁移过来 + +**2020/03/29** +* 添加退出软件后是否响应耳机按键的开关 +* 优化书源校验 + +**2020/03/26** +* 修复txt目录bug +* 最近工作比较忙,只有晚上有时间写软件,bug之类的不要催,白天不回消息 + +**2020/03/25** +* 修复7.1.1的网络问题,是retrofit2库最新版本的bug,暂时退回上版本 +* 去除下载路径的配置,减少错误 +* 添加隐藏状态栏是否扩展到刘海 + +**2020/03/24** +* txt文件第一章之前的文字不再放到简介里 +* 优化txt目录识别,章节超过3万字判断为目录识别错误重新识别 +* 修复文件关联 by wqfantexi + +**2020/03/22** +* 添加文件关联 by wqfantexi +* 手动排序可以了,在书架整理里面拖动排序 +* 删除分组时同时删除书籍里的分组信息,下次添加新分组时不会自动出现在分组内 +* 修复换源丢失分组信息的bug +* 修复部分朗读引擎不自动朗读下一章的bug + +**2020/03/21** +* 详情页点击书名搜索 + +**2020/03/20** +* 自动备份文件和手动备份文件分开 +* 修复一些rss收藏取消不了的bug +* 修复rss请求头无效bug + +**2020/03/19** +* 美化界面我的 by yangyxd +* 优化搜索 + +**2020/03/18** +* 尝试修复搜索时崩溃 +* 解决看过书籍的移到顶部需要向上滚动才能看到的bug +* 只有再书源被删除找不到书源时才会自动换源 +* 美化界面 by yangyxd +* 订阅后台播放 + +**2020/03/16** +* 修复滚动模式切换章节位置不归0的bug +* 修复文字选择更多菜单在部分手机上报错的bug +* 修复文字选择菜单问题 + +**2020/03/15** +* 加载正文无书源时自动换源 + +**2020/03/14** +* 修改导航栏图标 + +**2020/03/13** +* 更改书架控件,ViewPager2替换回2.0使用的ViewPager,解决下拉不流畅问题 +* 修复点击作者搜索后,打开的详情页还是原来的书籍的bug +* 修改朗读菜单 +* 优化rss朗读 + +**2020/03/12** +* 导入本地添加需要权限模式 + +**2020/03/11** +* 修复调节上边距时下边距一起动的bug +* 适配沚水的web阅读 by 六月 +* 分组管理页面调整 by yangyxd + +**2020/03/10** +* 优化文字选择菜单弹出位置 +* 添加屏幕方向控制 +* 添加点击作者搜索 + +**2020/03/09** +* 底部文字对齐 +* 主题添加阴影调节 by yangyxd + +**2020/03/08** +* 订阅长按保存图片 +* 订阅全屏播放 +* 书架全部分组可以隐藏了 +* 内置web书架基本能用了 by 六月 +* 书架整理加入未分组 +* 显示总进度 +* 隐藏状态栏时,标题显示在上方 + +**2020/03/07** +* 添加标题上下间距调整 +* 添加标题大小调整 +* 书籍整理添加批量启用禁用更新 +* 换源禁用书源不显示 +* 修复搜索界面简介最下面显示半行文字 +* 搜索历史改为多行 **2020/03/06** * 添加隐藏标题 @@ -195,14 +291,7 @@ - 调试正文页>>输入正文页URL,如:`--https://www.zhaishuyuan.com/chapter/30394/20940996` * 修改订阅中自动添加style的情景 - 订阅源的内容规则中存在` - ``` + 订阅源的内容规则中存在`