diff --git a/.gitignore b/.gitignore index 700c700fe..1431028b0 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 26acce2d3..a14855f22 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,8 +33,9 @@ android { } } defaultConfig { - applicationId "io.legado.app" - minSdkVersion 21 + applicationId "io.legado.application" + //minSdkVersion 21 + minSdkVersion 28 targetSdkVersion 29 versionCode gitCommits versionName version @@ -56,7 +57,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' } @@ -76,15 +77,20 @@ android { } } productFlavors { - app { + app { //书架 dimension "version" manifestPlaceholders = [APP_CHANNEL_VALUE: "app"] } google { dimension "version" - applicationId "io.legado.play" + applicationId "io.legado.celeter" 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 @@ -110,7 +116,7 @@ kapt { } dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' implementation fileTree(dir: 'libs', include: ['*.jar']) testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test:runner:1.2.0' @@ -120,8 +126,9 @@ 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 'com.google.firebase:firebase-core:17.4.4' + //implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1' + implementation 'androidx.documentfile:documentfile:1.0.1' //androidX implementation 'androidx.core:core-ktx:1.3.1' @@ -207,4 +214,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 db69e078b..89fdcf69f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -194,7 +194,7 @@ + android:scheme="legado" /> @@ -209,7 +209,7 @@ + android:scheme="legado" /> @@ -224,7 +224,7 @@ + android:scheme="legado" /> diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index d8ce22ea8..b7c947857 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -1,7 +1,4 @@ ## 更新日志 -* 旧版数据导入教程:先在旧版阅读(2.x)中进行备份,然后在新版阅读(3.x)【我的】->【备份与恢复】,选择【导入旧版本数据】。 -* 请关注公众号[开源阅读]()支持我,同时关注合作公众号[小说拾遗](),阅读公众号小编。 -* 新公众号[开源阅读]()已启用,[开源阅读软件]()备用 **2020/07/30** * 所有版本都加上书源屏蔽列表,有其它想法的可以自己编译软件,反正是开源的 @@ -212,14 +209,15 @@ **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 10ffccd1f..797450c92 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/81.0.4044.138 Safari/537.36" + "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" } val SCRIPT_ENGINE: ScriptEngine by lazy { @@ -41,9 +41,8 @@ object AppConst { val keyboardToolChars: List by lazy { arrayListOf( - "※", "@", "&", "|", "%", "/", ":", "[", "]", "{", "}", "<", ">", "\\", - "$", "#", "!", ".", "href", "src", "textNodes", "xpath", "json", "css", - "id", "class", "tag" + "※", "@css:", "", "&&", "||", "%%", "/", ":", "[]", "{}", "$.", + "VS", "all", "ownText", "href", "src", "textNodes" ) } 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 396edb73d..bf1dcc27e 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*[::]".toRegex() + val authorRegex = "作\\s*者\\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 7a643b940..a03c7403d 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*[::]\n*".toRegex(), "") + ?.replace("作\\s*者\\s*[::]\\s*".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 d12fc07ea..685e04bf7 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -30,14 +30,18 @@ interface JsExtensions { * js实现解码,不能删 */ fun base64Decode(str: String): String { - return EncoderUtils.base64Decode(str) + return EncoderUtils.base64Decode(str, Base64.NO_WRAP) + } + + fun base64Decode(str: String, flags: Int): String { + return EncoderUtils.base64Decode(str, flags) } fun base64Encode(str: String): String? { - return EncoderUtils.base64Encode(str) + return EncoderUtils.base64Encode(str, Base64.NO_WRAP) } - fun base64Encode(str: String, flags: Int = Base64.NO_WRAP): String? { + fun base64Encode(str: String, flags: Int): 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 ebeb30d02..b7bd83d99 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 a12816486..0d4e6ce9f 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 != "") { + if (!params.sourceRegex.isNullOrEmpty()) { 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 bf00f0d43..e219a82c6 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,6 +383,7 @@ 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 09cd756bb..e6667164e 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 9e5336b62..c6b40fbc4 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,7 +132,13 @@ object BookContent { } Debug.log(bookSource.bookSourceUrl, "└" + nextUrlList.joinToString(","), printLog) } - val content = analyzeRule.getString(contentRule.content) + val content = analyzeRule.getString(contentRule.content).let { + if (it.startsWith("view-source:\n")) { + it + } else { + ("\n" + it).htmlFormat() + } + } 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 70c1a92be..dd61ea279 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,9 +61,14 @@ object BookInfo { Debug.log(bookSource.bookSourceUrl, "└${book.latestChapterTitle}") Debug.log(bookSource.bookSourceUrl, "┌获取简介") analyzeRule.getString(infoRule.intro).let { - if (it.isNotEmpty()) book.intro = it.htmlFormat() + if (it.isNotEmpty()) + book.intro = if (it.startsWith("view-source:\n")) { + it + } else { + ("\n" + it).htmlFormat() + } } - Debug.log(bookSource.bookSourceUrl, "└${book.intro}", isHtml = true) + Debug.log(bookSource.bookSourceUrl, "└${book.intro}") 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 162db6dd0..533357fd9 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,8 +145,9 @@ object BookList { Debug.log(bookSource.bookSourceUrl, "└${searchBook.latestChapterTitle}") if (!scope.isActive) throw CancellationException() Debug.log(bookSource.bookSourceUrl, "┌获取简介") - searchBook.intro = analyzeRule.getString(intro) - Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", true) + val introStr = analyzeRule.getString(intro) + searchBook.intro = introStr + Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", isHtml = !introStr.startsWith("view-source:\n")) if (!scope.isActive) throw CancellationException() Debug.log(bookSource.bookSourceUrl, "┌获取封面链接") searchBook.coverUrl = analyzeRule.getString(coverUrl, true) @@ -204,8 +205,9 @@ object BookList { Debug.log(bookSource.bookSourceUrl, "└${searchBook.latestChapterTitle}", log) if (!scope.isActive) throw CancellationException() Debug.log(bookSource.bookSourceUrl, "┌获取简介", log) - searchBook.intro = analyzeRule.getString(ruleIntro) - Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", log, true) + val introStr = analyzeRule.getString(ruleIntro) + searchBook.intro = introStr + Debug.log(bookSource.bookSourceUrl, "└${searchBook.intro}", log, isHtml = !introStr.startsWith("view-source:\n")) 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 e5886d100..ab9d60856 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}.txt") + DocumentUtils.createFileIfNotExist(doc, "${book.name}_作者:${book.author}.txt") ?.writeText(context, getAllContents(book)) } private fun export(file: File, book: Book) { - FileUtils.createFileIfNotExist(file, "${book.name}.txt") + FileUtils.createFileIfNotExist(file, "${book.name}_作者:${book.author}.txt") .writeText(getAllContents(book)) } @@ -52,10 +52,11 @@ 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 { - stringBuilder.append("\n\n") - .append(chapter.title) - .append("\n") - .append(it) + if (!it.isNullOrEmpty()) + 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 4f897c791..06a876c3e 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") { - "yuedu://${scheme}/importonline?src=$uri" + "legado://${scheme}/importonline?src=$uri" } else { - "yuedu://${scheme}/importonline?src=${uri.path}" + "legado://${scheme}/importonline?src=${uri.path}" } } else if (uri.scheme == "yuedu") { url = uri.toString() } else { - url = "yuedu://booksource/importonline?src=${uri.path}" + url = "legado://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 56b6e5715..4731af989 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,7 +96,9 @@ class MainActivity : VMBaseActivity(R.layout.activity_main), putPrefInt(PreferKey.versionCode, App.INSTANCE.versionCode) if (!BuildConfig.DEBUG) { val log = String(assets.open("updateLog.md").readBytes()) - TextDialog.show(supportFragmentManager, log, TextDialog.MD, 5000, true) + // 5s后自动关闭日志 + // TextDialog.show(supportFragmentManager, log, TextDialog.MD, 5000, true) + TextDialog.show(supportFragmentManager, log, TextDialog.MD, 0) } } } 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 e11293cc4..d3fbecad1 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,6 +169,7 @@ 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 406aa3815..55d5b2855 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): String { - val bytes = Base64.decode(str, Base64.DEFAULT) + fun base64Decode(str: String, flags: Int): String { + val bytes = Base64.decode(str, flags) return try { String(bytes, StandardCharsets.UTF_8) } catch (e: Exception) { @@ -34,7 +34,7 @@ object EncoderUtils { } } - fun base64Encode(str: String, flags: Int = Base64.NO_WRAP): String? { + fun base64Encode(str: String, flags: Int): 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 edbef31f6..6cca99e22 100644 --- a/app/src/main/res/color/selector_image.xml +++ b/app/src/main/res/color/selector_image.xml @@ -4,4 +4,10 @@ + \ 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 1ebe0fe81..e1e22e7e1 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 a600cb802..ee3f04274 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 9a45c4903..7c24d47e2 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 810277b59..431bb2d2e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Legado + BookSource 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 89bc507eb..c27e142fe 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" /-->