diff --git a/.gitignore b/.gitignore
index 1431028b0..700c700fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,6 @@
/tmp
node_modules/
/app/app
-/app/coolApk
/app/google
+/app/gradle.properties
package-lock.json
diff --git a/app/build.gradle b/app/build.gradle
index a14855f22..26acce2d3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,7 +3,7 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'de.timfreiheit.resourceplaceholders'
-//apply plugin: 'io.fabric'
+apply plugin: 'io.fabric'
androidExtensions {
experimental = true
@@ -33,9 +33,8 @@ android {
}
}
defaultConfig {
- applicationId "io.legado.application"
- //minSdkVersion 21
- minSdkVersion 28
+ applicationId "io.legado.app"
+ minSdkVersion 21
targetSdkVersion 29
versionCode gitCommits
versionName version
@@ -57,7 +56,7 @@ android {
if (project.hasProperty("RELEASE_STORE_FILE")) {
signingConfig signingConfigs.myConfig
}
- //applicationIdSuffix '.release'
+ applicationIdSuffix '.release'
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
@@ -77,20 +76,15 @@ android {
}
}
productFlavors {
- app { //书架
+ app {
dimension "version"
manifestPlaceholders = [APP_CHANNEL_VALUE: "app"]
}
google {
dimension "version"
- applicationId "io.legado.celeter"
+ applicationId "io.legado.play"
manifestPlaceholders = [APP_CHANNEL_VALUE: "google"]
}
- coolApk { //整理
- dimension "version"
- applicationId "io.legado.google"
- manifestPlaceholders = [APP_CHANNEL_VALUE: "coolApk"]
- }
}
compileOptions {
// Flag to enable support for the new language APIs
@@ -116,7 +110,7 @@ kapt {
}
dependencies {
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'
+ coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test:runner:1.2.0'
@@ -126,9 +120,8 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
//fireBase
- //implementation 'com.google.firebase:firebase-core:17.4.4'
- //implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
- implementation 'androidx.documentfile:documentfile:1.0.1'
+ implementation 'com.google.firebase:firebase-core:17.4.4'
+ implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
//androidX
implementation 'androidx.core:core-ktx:1.3.1'
@@ -214,4 +207,4 @@ dependencies {
//implementation 'fadeapp.widgets:scrollless-recyclerView:1.0.2'
}
-//apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
+apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 89fdcf69f..db69e078b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -194,7 +194,7 @@
+ android:scheme="yuedu" />
@@ -209,7 +209,7 @@
+ android:scheme="yuedu" />
@@ -224,7 +224,7 @@
+ android:scheme="yuedu" />
diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md
index b7c947857..d8ce22ea8 100644
--- a/app/src/main/assets/updateLog.md
+++ b/app/src/main/assets/updateLog.md
@@ -1,4 +1,7 @@
## 更新日志
+* 旧版数据导入教程:先在旧版阅读(2.x)中进行备份,然后在新版阅读(3.x)【我的】->【备份与恢复】,选择【导入旧版本数据】。
+* 请关注公众号[开源阅读]()支持我,同时关注合作公众号[小说拾遗](),阅读公众号小编。
+* 新公众号[开源阅读]()已启用,[开源阅读软件]()备用
**2020/07/30**
* 所有版本都加上书源屏蔽列表,有其它想法的可以自己编译软件,反正是开源的
@@ -209,15 +212,14 @@
**2020/04/13**
* 去除rss朗读时的引号
+
+**2020/04/13**
* 修复调用webView返回结果多了引号的bug
**2020/04/12**
* 解决无法取消加粗的bug
* 修复换源自动加入书架的bug
-**2020/04/11**
-* 列表及预加载规则以外的地方使用`VS`可查看源码,例:`tag.div@VS`
-
**2020/04/09**
* 修复书架刷新闪烁
diff --git a/app/src/main/java/io/legado/app/constant/AppConst.kt b/app/src/main/java/io/legado/app/constant/AppConst.kt
index 797450c92..10ffccd1f 100644
--- a/app/src/main/java/io/legado/app/constant/AppConst.kt
+++ b/app/src/main/java/io/legado/app/constant/AppConst.kt
@@ -20,7 +20,7 @@ object AppConst {
const val UA_NAME = "User-Agent"
val userAgent: String by lazy {
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.5167.89 Safari/537.36 Edg/86.0.522.88"
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
}
val SCRIPT_ENGINE: ScriptEngine by lazy {
@@ -41,8 +41,9 @@ object AppConst {
val keyboardToolChars: List by lazy {
arrayListOf(
- "※", "@css:", "", "&&", "||", "%%", "/", ":", "[]", "{}", "$.",
- "VS", "all", "ownText", "href", "src", "textNodes"
+ "※", "@", "&", "|", "%", "/", ":", "[", "]", "{", "}", "<", ">", "\\",
+ "$", "#", "!", ".", "href", "src", "textNodes", "xpath", "json", "css",
+ "id", "class", "tag"
)
}
diff --git a/app/src/main/java/io/legado/app/constant/AppPattern.kt b/app/src/main/java/io/legado/app/constant/AppPattern.kt
index bf1dcc27e..396edb73d 100644
--- a/app/src/main/java/io/legado/app/constant/AppPattern.kt
+++ b/app/src/main/java/io/legado/app/constant/AppPattern.kt
@@ -6,5 +6,5 @@ object AppPattern {
val JS_PATTERN: Pattern = Pattern.compile("([\\w\\W]*?|@js:[\\w\\W]*$)", Pattern.CASE_INSENSITIVE)
val EXP_PATTERN: Pattern = Pattern.compile("\\{\\{([\\w\\W]*?)\\}\\}")
- val authorRegex = "作\\s*者\\s*[::]\\s*".toRegex()
+ val authorRegex = "作\\s*者\\s*[::]".toRegex()
}
\ No newline at end of file
diff --git a/app/src/main/java/io/legado/app/help/BookHelp.kt b/app/src/main/java/io/legado/app/help/BookHelp.kt
index a03c7403d..7a643b940 100644
--- a/app/src/main/java/io/legado/app/help/BookHelp.kt
+++ b/app/src/main/java/io/legado/app/help/BookHelp.kt
@@ -112,7 +112,7 @@ object BookHelp {
fun formatAuthor(author: String?): String {
return author
- ?.replace("作\\s*者\\s*[::]\\s*".toRegex(), "")
+ ?.replace("作\\s*者\\s*[::]\n*".toRegex(), "")
?.replace("\\s+".toRegex(), " ")
?.trim { it <= ' ' }
?: ""
diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt
index 685e04bf7..d12fc07ea 100644
--- a/app/src/main/java/io/legado/app/help/JsExtensions.kt
+++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt
@@ -30,18 +30,14 @@ interface JsExtensions {
* js实现解码,不能删
*/
fun base64Decode(str: String): String {
- return EncoderUtils.base64Decode(str, Base64.NO_WRAP)
- }
-
- fun base64Decode(str: String, flags: Int): String {
- return EncoderUtils.base64Decode(str, flags)
+ return EncoderUtils.base64Decode(str)
}
fun base64Encode(str: String): String? {
- return EncoderUtils.base64Encode(str, Base64.NO_WRAP)
+ return EncoderUtils.base64Encode(str)
}
- fun base64Encode(str: String, flags: Int): String? {
+ fun base64Encode(str: String, flags: Int = Base64.NO_WRAP): String? {
return EncoderUtils.base64Encode(str, flags)
}
diff --git a/app/src/main/java/io/legado/app/help/SourceHelp.kt b/app/src/main/java/io/legado/app/help/SourceHelp.kt
index b7bd83d99..ebeb30d02 100644
--- a/app/src/main/java/io/legado/app/help/SourceHelp.kt
+++ b/app/src/main/java/io/legado/app/help/SourceHelp.kt
@@ -5,8 +5,8 @@ import android.os.Looper
import io.legado.app.App
import io.legado.app.data.entities.BookSource
import io.legado.app.data.entities.RssSource
-//import io.legado.app.utils.EncoderUtils
-//import io.legado.app.utils.NetworkUtils
+import io.legado.app.utils.EncoderUtils
+import io.legado.app.utils.NetworkUtils
import io.legado.app.utils.splitNotBlank
import org.jetbrains.anko.toast
@@ -47,20 +47,20 @@ object SourceHelp {
}
private fun is18Plus(url: String?): Boolean {
-// url ?: return false
-// val baseUrl = NetworkUtils.getBaseUrl(url)
-// baseUrl ?: return false
-// if (AppConfig.isGooglePlay) return false
-// try {
-// val host = baseUrl.split("//", ".")
-// val base64Url = EncoderUtils.base64Encode("${host[host.lastIndex - 1]}.${host.last()}")
-// list18Plus.forEach {
-// if (base64Url == it) {
-// return true
-// }
-// }
-// } catch (e: Exception) {
-// }
+ url ?: return false
+ val baseUrl = NetworkUtils.getBaseUrl(url)
+ baseUrl ?: return false
+ if (AppConfig.isGooglePlay) return false
+ try {
+ val host = baseUrl.split("//", ".")
+ val base64Url = EncoderUtils.base64Encode("${host[host.lastIndex - 1]}.${host.last()}")
+ list18Plus.forEach {
+ if (base64Url == it) {
+ return true
+ }
+ }
+ } catch (e: Exception) {
+ }
return false
}
diff --git a/app/src/main/java/io/legado/app/help/http/AjaxWebView.kt b/app/src/main/java/io/legado/app/help/http/AjaxWebView.kt
index 0d4e6ce9f..a12816486 100644
--- a/app/src/main/java/io/legado/app/help/http/AjaxWebView.kt
+++ b/app/src/main/java/io/legado/app/help/http/AjaxWebView.kt
@@ -80,7 +80,7 @@ class AjaxWebView {
}
fun load(params: AjaxParams) {
- if (!params.sourceRegex.isNullOrEmpty()) {
+ if (params.sourceRegex != "") {
mHandler.obtainMessage(MSG_SNIFF_START, params)
.sendToTarget()
} else {
@@ -158,7 +158,7 @@ class AjaxWebView {
mWebView.get()?.evaluateJavascript(mJavaScript) {
if (it.isNotEmpty() && it != "null") {
val content = StringEscapeUtils.unescapeJson(it)
- .replace("^\"|\"$".toRegex(), "") // ʱֶȡ
+ .replace("^\"|\"$".toRegex(), "")
handler.obtainMessage(MSG_SUCCESS, Res(url, content))
.sendToTarget()
handler.removeCallbacks(this)
diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeByJSoup.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeByJSoup.kt
index e219a82c6..bf00f0d43 100644
--- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeByJSoup.kt
+++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeByJSoup.kt
@@ -383,7 +383,6 @@ class AnalyzeByJSoup {
textS.add(html)
}
"all" -> textS.add(elements.outerHtml())
- "VS" -> textS.add("view-source:\n" + elements.outerHtml())
else -> for (element in elements) {
val url = element.attr(lastRule)
if (!isEmpty(url) && !textS.contains(url)) {
diff --git a/app/src/main/java/io/legado/app/model/rss/RssParser.kt b/app/src/main/java/io/legado/app/model/rss/RssParser.kt
index e6667164e..09cd756bb 100644
--- a/app/src/main/java/io/legado/app/model/rss/RssParser.kt
+++ b/app/src/main/java/io/legado/app/model/rss/RssParser.kt
@@ -117,11 +117,11 @@ object RssParser {
private fun getImageUrl(input: String): String? {
var url: String? = null
- val patternImg = "(
]*>)".toPattern()
+ val patternImg = "(
)".toPattern()
val matcherImg = patternImg.matcher(input)
if (matcherImg.find()) {
val imgTag = matcherImg.group(1)
- val patternLink = "src\\s*=\\s*\"([^\"]+)\"".toPattern()
+ val patternLink = "src\\s*=\\s*\"(.+?)\"".toPattern()
val matcherLink = patternLink.matcher(imgTag!!)
if (matcherLink.find()) {
url = matcherLink.group(1)!!.trim()
diff --git a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt
index c6b40fbc4..9e5336b62 100644
--- a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt
+++ b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt
@@ -132,13 +132,7 @@ object BookContent {
}
Debug.log(bookSource.bookSourceUrl, "└" + nextUrlList.joinToString(","), printLog)
}
- val content = analyzeRule.getString(contentRule.content).let {
- if (it.startsWith("view-source:\n")) {
- it
- } else {
- ("\n" + it).htmlFormat()
- }
- }
+ val content = analyzeRule.getString(contentRule.content)
return ContentData(content, nextUrlList)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt
index dd61ea279..70c1a92be 100644
--- a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt
+++ b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt
@@ -61,14 +61,9 @@ object BookInfo {
Debug.log(bookSource.bookSourceUrl, "└${book.latestChapterTitle}")
Debug.log(bookSource.bookSourceUrl, "┌获取简介")
analyzeRule.getString(infoRule.intro).let {
- if (it.isNotEmpty())
- book.intro = if (it.startsWith("view-source:\n")) {
- it
- } else {
- ("\n" + it).htmlFormat()
- }
+ if (it.isNotEmpty()) book.intro = it.htmlFormat()
}
- Debug.log(bookSource.bookSourceUrl, "└${book.intro}")
+ Debug.log(bookSource.bookSourceUrl, "└${book.intro}", isHtml = true)
Debug.log(bookSource.bookSourceUrl, "┌获取封面链接")
analyzeRule.getString(infoRule.coverUrl).let {
diff --git a/app/src/main/java/io/legado/app/model/webBook/BookList.kt b/app/src/main/java/io/legado/app/model/webBook/BookList.kt
index 533357fd9..162db6dd0 100644
--- a/app/src/main/java/io/legado/app/model/webBook/BookList.kt
+++ b/app/src/main/java/io/legado/app/model/webBook/BookList.kt
@@ -145,9 +145,8 @@ object BookList {
Debug.log(bookSource.bookSourceUrl, "└${searchBook.latestChapterTitle}")
if (!scope.isActive) throw CancellationException()
Debug.log(bookSource.bookSourceUrl, "┌获取简介")
- val introStr = analyzeRule.getString(intro)
- searchBook.intro = introStr
- Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", isHtml = !introStr.startsWith("view-source:\n"))
+ searchBook.intro = analyzeRule.getString(intro)
+ Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", true)
if (!scope.isActive) throw CancellationException()
Debug.log(bookSource.bookSourceUrl, "┌获取封面链接")
searchBook.coverUrl = analyzeRule.getString(coverUrl, true)
@@ -205,9 +204,8 @@ object BookList {
Debug.log(bookSource.bookSourceUrl, "└${searchBook.latestChapterTitle}", log)
if (!scope.isActive) throw CancellationException()
Debug.log(bookSource.bookSourceUrl, "┌获取简介", log)
- val introStr = analyzeRule.getString(ruleIntro)
- searchBook.intro = introStr
- Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", log, isHtml = !introStr.startsWith("view-source:\n"))
+ searchBook.intro = analyzeRule.getString(ruleIntro)
+ Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", log, true)
if (!scope.isActive) throw CancellationException()
Debug.log(bookSource.bookSourceUrl, "┌获取封面链接", log)
analyzeRule.getString(ruleCoverUrl).let {
diff --git a/app/src/main/java/io/legado/app/ui/book/download/DownloadViewModel.kt b/app/src/main/java/io/legado/app/ui/book/download/DownloadViewModel.kt
index ab9d60856..e5886d100 100644
--- a/app/src/main/java/io/legado/app/ui/book/download/DownloadViewModel.kt
+++ b/app/src/main/java/io/legado/app/ui/book/download/DownloadViewModel.kt
@@ -36,12 +36,12 @@ class DownloadViewModel(application: Application) : BaseViewModel(application) {
}
private fun export(doc: DocumentFile, book: Book) {
- DocumentUtils.createFileIfNotExist(doc, "${book.name}_作者:${book.author}.txt")
+ DocumentUtils.createFileIfNotExist(doc, "${book.name}.txt")
?.writeText(context, getAllContents(book))
}
private fun export(file: File, book: Book) {
- FileUtils.createFileIfNotExist(file, "${book.name}_作者:${book.author}.txt")
+ FileUtils.createFileIfNotExist(file, "${book.name}.txt")
.writeText(getAllContents(book))
}
@@ -52,11 +52,10 @@ class DownloadViewModel(application: Application) : BaseViewModel(application) {
.append(context.getString(R.string.author_show, book.author))
App.db.bookChapterDao().getChapterList(book.bookUrl).forEach { chapter ->
BookHelp.getContent(book, chapter).let {
- if (!it.isNullOrEmpty())
- stringBuilder.append("\n\n")
- .append(chapter.title)
- .append("\n")
- .append(it)
+ stringBuilder.append("\n\n")
+ .append(chapter.title)
+ .append("\n")
+ .append(it)
}
}
return stringBuilder.toString()
diff --git a/app/src/main/java/io/legado/app/ui/config/FileAssociationViewModel.kt b/app/src/main/java/io/legado/app/ui/config/FileAssociationViewModel.kt
index 06a876c3e..4f897c791 100644
--- a/app/src/main/java/io/legado/app/ui/config/FileAssociationViewModel.kt
+++ b/app/src/main/java/io/legado/app/ui/config/FileAssociationViewModel.kt
@@ -62,15 +62,15 @@ class FileAssociationViewModel(application: Application) : BaseViewModel(applica
}
// content模式下,需要传递完整的路径,方便后续解析
url = if (uri.scheme == "content") {
- "legado://${scheme}/importonline?src=$uri"
+ "yuedu://${scheme}/importonline?src=$uri"
} else {
- "legado://${scheme}/importonline?src=${uri.path}"
+ "yuedu://${scheme}/importonline?src=${uri.path}"
}
} else if (uri.scheme == "yuedu") {
url = uri.toString()
} else {
- url = "legado://booksource/importonline?src=${uri.path}"
+ url = "yuedu://booksource/importonline?src=${uri.path}"
}
val data = Uri.parse(url)
val newIndent = Intent(Intent.ACTION_VIEW)
diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt
index 4731af989..56b6e5715 100644
--- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt
@@ -96,9 +96,7 @@ class MainActivity : VMBaseActivity(R.layout.activity_main),
putPrefInt(PreferKey.versionCode, App.INSTANCE.versionCode)
if (!BuildConfig.DEBUG) {
val log = String(assets.open("updateLog.md").readBytes())
- // 5s后自动关闭日志
- // TextDialog.show(supportFragmentManager, log, TextDialog.MD, 5000, true)
- TextDialog.show(supportFragmentManager, log, TextDialog.MD, 0)
+ TextDialog.show(supportFragmentManager, log, TextDialog.MD, 5000, true)
}
}
}
diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt
index d3fbecad1..e11293cc4 100644
--- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt
@@ -169,7 +169,6 @@ class ReadRssActivity : VMBaseActivity(R.layout.activity_rss_r
url
)//不想用baseUrl进else
} else {
- //webView.loadData(html, "text/html;charset=utf-8", "utf-8")//经测试可以解决中文乱码
web_view.loadDataWithBaseURL(
null,
html,
diff --git a/app/src/main/java/io/legado/app/utils/EncoderUtils.kt b/app/src/main/java/io/legado/app/utils/EncoderUtils.kt
index 55d5b2855..406aa3815 100644
--- a/app/src/main/java/io/legado/app/utils/EncoderUtils.kt
+++ b/app/src/main/java/io/legado/app/utils/EncoderUtils.kt
@@ -25,8 +25,8 @@ object EncoderUtils {
return tmp.toString()
}
- fun base64Decode(str: String, flags: Int): String {
- val bytes = Base64.decode(str, flags)
+ fun base64Decode(str: String): String {
+ val bytes = Base64.decode(str, Base64.DEFAULT)
return try {
String(bytes, StandardCharsets.UTF_8)
} catch (e: Exception) {
@@ -34,7 +34,7 @@ object EncoderUtils {
}
}
- fun base64Encode(str: String, flags: Int): String? {
+ fun base64Encode(str: String, flags: Int = Base64.NO_WRAP): String? {
return Base64.encodeToString(str.toByteArray(), flags)
}
}
\ No newline at end of file
diff --git a/app/src/main/res/color/selector_image.xml b/app/src/main/res/color/selector_image.xml
index 6cca99e22..edbef31f6 100644
--- a/app/src/main/res/color/selector_image.xml
+++ b/app/src/main/res/color/selector_image.xml
@@ -4,10 +4,4 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index e1e22e7e1..1ebe0fe81 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -1,6 +1,6 @@
- 源書架
+ 閲讀
閲讀·搜尋
閲讀需要訪問存儲卡權限,請前往「設定」—「應用程式權限」—開啟所需要的權限
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index ee3f04274..a600cb802 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -1,6 +1,6 @@
- 源書架
+ 閱讀
閱讀·搜尋
閱讀需要存取記憶卡權限,請前往“設定”—“應用權限”—打開所需權限
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 7c24d47e2..9a45c4903 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -1,6 +1,6 @@
- 源书架
+ 阅读
阅读·搜索
阅读需要访问存储卡权限,请前往“设置”—“应用权限”—打开所需权限
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 431bb2d2e..810277b59 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,6 +1,6 @@
- BookSource
+ Legado
Legado·search
Legado needs storage access to find and read books. please go "App Settings" to allow "Storage permission".
diff --git a/app/src/main/res/xml/about.xml b/app/src/main/res/xml/about.xml
index c27e142fe..89bc507eb 100644
--- a/app/src/main/res/xml/about.xml
+++ b/app/src/main/res/xml/about.xml
@@ -2,11 +2,11 @@
-
+ app:iconSpaceReserved="false" />
-
+ app:iconSpaceReserved="false" />
-
+ app:iconSpaceReserved="false" />