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" />