From 3fb3a615ec06101294acd6ad28580b80bead8035 Mon Sep 17 00:00:00 2001 From: ag2s20150909 Date: Sun, 24 Sep 2023 18:19:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20(#3375)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 5 +-- app/download.gradle | 12 +++---- .../app/ui/rss/article/RssArticlesAdapter.kt | 8 ++--- .../app/ui/rss/article/RssArticlesAdapter1.kt | 8 ++--- .../app/ui/rss/article/RssArticlesAdapter2.kt | 8 ++--- .../ui/rss/favorites/RssFavoritesAdapter.kt | 8 ++--- .../app/ui/widget/image/CoverImageView.kt | 14 +++++--- .../app/utils/compress/LibArchiveUtils.kt | 33 ++++++++----------- app/src/main/res/values-es-rES/strings.xml | 2 -- app/src/main/res/values-ja-rJP/strings.xml | 2 -- app/src/main/res/values-pt-rBR/strings.xml | 2 -- app/src/main/res/values-vi/strings.xml | 2 -- app/src/main/res/values-zh-rHK/strings.xml | 2 -- app/src/main/res/values-zh-rTW/strings.xml | 2 -- app/src/main/res/values-zh/strings.xml | 2 -- app/src/main/res/values/strings.xml | 2 -- 16 files changed, 47 insertions(+), 65 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fda05d598..b3e72535b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -214,10 +214,10 @@ dependencies { //网络 implementation('com.squareup.okhttp3:okhttp:4.11.0') implementation(fileTree(dir: 'cronetlib', include: ['*.jar', '*.aar'])) - implementation 'com.google.protobuf:protobuf-javalite:3.23.4' + implementation 'com.google.protobuf:protobuf-javalite:3.24.3' //Glide - def glideVersion = "4.15.1" + def glideVersion = "4.16.0" implementation("com.github.bumptech.glide:glide:$glideVersion") //kapt("com.github.bumptech.glide:compiler:$glideVersion") ksp("com.github.bumptech.glide:ksp:$glideVersion") @@ -233,6 +233,7 @@ dependencies { implementation("org.nanohttpd:nanohttpd-websocket:$nanoHttpdVersion") //二维码 + //noinspection GradleDependency implementation('com.github.jenly1314:zxing-lite:2.4.0') //颜色选择 diff --git a/app/download.gradle b/app/download.gradle index 76d6d1f02..c689ba478 100644 --- a/app/download.gradle +++ b/app/download.gradle @@ -28,7 +28,7 @@ static def generateMD5(final file) { /** * 下载Cronet相关的jar */ -task downloadJar(type: Download) { +tasks.register('downloadJar', Download) { src([ BASE_PATH + "cronet_api.jar", BASE_PATH + "cronet_impl_common_java.jar", @@ -42,7 +42,7 @@ task downloadJar(type: Download) { /** * 下载Cronet的arm64-v8a so */ -task downloadARM64(type: Download) { +tasks.register('downloadARM64', Download) { src BASE_PATH + "libs/arm64-v8a/libcronet." + CronetVersion + ".so" dest soPath + "/arm64-v8a.so" overwrite true @@ -51,7 +51,7 @@ task downloadARM64(type: Download) { /** * 下载Cronet的armeabi-v7a so */ -task downloadARMv7(type: Download) { +tasks.register('downloadARMv7', Download) { src BASE_PATH + "libs/armeabi-v7a/libcronet." + CronetVersion + ".so" dest soPath + "/armeabi-v7a.so" overwrite true @@ -60,7 +60,7 @@ task downloadARMv7(type: Download) { /** * 下载Cronet的x86_64 so */ -task downloadX86_64(type: Download) { +tasks.register('downloadX86_64', Download) { src BASE_PATH + "libs/x86_64/libcronet." + CronetVersion + ".so" dest soPath + "/x86_64.so" overwrite true @@ -69,7 +69,7 @@ task downloadX86_64(type: Download) { /** * 下载Cronet的x86 so */ -task downloadX86(type: Download) { +tasks.register('downloadX86', Download) { src BASE_PATH + "libs/x86/libcronet." + CronetVersion + ".so" dest soPath + "/x86.so" overwrite true @@ -81,7 +81,7 @@ task downloadX86(type: Download) { * 先更改gradle.properties 里面的版本号,然后再执行 * gradlew app:downloadCronet */ -task downloadCronet() { +tasks.register('downloadCronet') { dependsOn downloadJar, downloadARM64, downloadARMv7, downloadX86_64, downloadX86 doLast { diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt index 006da715c..aea7b3a5a 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter.kt @@ -50,7 +50,7 @@ class RssArticlesAdapter(context: Context, callBack: CallBack) : override fun onLoadFailed( e: GlideException?, model: Any?, - target: Target?, + target: Target, isFirstResource: Boolean ): Boolean { imageView.gone() @@ -58,10 +58,10 @@ class RssArticlesAdapter(context: Context, callBack: CallBack) : } override fun onResourceReady( - resource: Drawable?, - model: Any?, + resource: Drawable, + model: Any, target: Target?, - dataSource: DataSource?, + dataSource: DataSource, isFirstResource: Boolean ): Boolean { imageView.visible() diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter1.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter1.kt index 9e70877f8..0f7cbdb57 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter1.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter1.kt @@ -50,7 +50,7 @@ class RssArticlesAdapter1(context: Context, callBack: CallBack) : override fun onLoadFailed( e: GlideException?, model: Any?, - target: Target?, + target: Target, isFirstResource: Boolean ): Boolean { imageView.gone() @@ -58,10 +58,10 @@ class RssArticlesAdapter1(context: Context, callBack: CallBack) : } override fun onResourceReady( - resource: Drawable?, - model: Any?, + resource: Drawable, + model: Any, target: Target?, - dataSource: DataSource?, + dataSource: DataSource, isFirstResource: Boolean ): Boolean { imageView.visible() diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter2.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter2.kt index 353cfda91..403d435be 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter2.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesAdapter2.kt @@ -50,7 +50,7 @@ class RssArticlesAdapter2(context: Context, callBack: CallBack) : override fun onLoadFailed( e: GlideException?, model: Any?, - target: Target?, + target: Target, isFirstResource: Boolean ): Boolean { imageView.gone() @@ -58,10 +58,10 @@ class RssArticlesAdapter2(context: Context, callBack: CallBack) : } override fun onResourceReady( - resource: Drawable?, - model: Any?, + resource: Drawable, + model: Any, target: Target?, - dataSource: DataSource?, + dataSource: DataSource, isFirstResource: Boolean ): Boolean { imageView.visible() diff --git a/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesAdapter.kt b/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesAdapter.kt index 5b816462f..c1886d64b 100644 --- a/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/rss/favorites/RssFavoritesAdapter.kt @@ -45,7 +45,7 @@ class RssFavoritesAdapter(context: Context, val callBack: CallBack) : override fun onLoadFailed( e: GlideException?, model: Any?, - target: Target?, + target: Target, isFirstResource: Boolean ): Boolean { imageView.gone() @@ -53,10 +53,10 @@ class RssFavoritesAdapter(context: Context, val callBack: CallBack) : } override fun onResourceReady( - resource: Drawable?, - model: Any?, + resource: Drawable, + model: Any, target: Target?, - dataSource: DataSource?, + dataSource: DataSource, isFirstResource: Boolean ): Boolean { imageView.visible() diff --git a/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt b/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt index 78e18a8da..8d3eb6e7d 100644 --- a/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt +++ b/app/src/main/java/io/legado/app/ui/widget/image/CoverImageView.kt @@ -1,7 +1,11 @@ package io.legado.app.ui.widget.image import android.content.Context -import android.graphics.* +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Path +import android.graphics.Typeface import android.graphics.drawable.Drawable import android.text.TextPaint import android.util.AttributeSet @@ -150,7 +154,7 @@ class CoverImageView @JvmOverloads constructor( override fun onLoadFailed( e: GlideException?, model: Any?, - target: Target?, + target: Target, isFirstResource: Boolean ): Boolean { defaultCover = true @@ -158,10 +162,10 @@ class CoverImageView @JvmOverloads constructor( } override fun onResourceReady( - resource: Drawable?, - model: Any?, + resource: Drawable, + model: Any, target: Target?, - dataSource: DataSource?, + dataSource: DataSource, isFirstResource: Boolean ): Boolean { defaultCover = false diff --git a/app/src/main/java/io/legado/app/utils/compress/LibArchiveUtils.kt b/app/src/main/java/io/legado/app/utils/compress/LibArchiveUtils.kt index 9d070a85f..a7c6d17b1 100644 --- a/app/src/main/java/io/legado/app/utils/compress/LibArchiveUtils.kt +++ b/app/src/main/java/io/legado/app/utils/compress/LibArchiveUtils.kt @@ -4,7 +4,6 @@ import android.os.ParcelFileDescriptor import android.system.ErrnoException import android.system.Os import android.system.OsConstants -import android.system.OsConstants.S_IFDIR import android.system.OsConstants.S_ISDIR import io.legado.app.lib.icu4j.CharsetDetector import me.zhanghai.android.libarchive.Archive @@ -231,8 +230,9 @@ object LibArchiveUtils { try { - var entry = Archive.readNextHeader(archive) - while (entry != 0L) { + var entry: Long + + while (Archive.readNextHeader(archive).also { entry = it } != 0L) { val entryName = getEntryString(ArchiveEntry.pathnameUtf8(entry), ArchiveEntry.pathname(entry)) ?: continue @@ -243,11 +243,10 @@ object LibArchiveUtils { val entryStat = ArchiveEntry.stat(entry) //判断是否是文件夹 - if (S_ISDIR(entryStat.stMode)) { + if (entryStat.isDir()) { if (!entryFile.exists()) { entryFile.mkdirs() } - entry = Archive.readNextHeader(archive) continue } @@ -268,8 +267,6 @@ object LibArchiveUtils { files.add(entryFile) } - entry = Archive.readNextHeader(archive) - } } finally { @@ -287,8 +284,8 @@ object LibArchiveUtils { fun getByteArrayContent(inputStream: InputStream, path: String): ByteArray? { val archive = openArchive(inputStream) try { - var entry = Archive.readNextHeader(archive) - while (entry != 0L) { + var entry: Long + while (Archive.readNextHeader(archive).also { entry = it } != 0L) { val entryName = getEntryString(ArchiveEntry.pathnameUtf8(entry), ArchiveEntry.pathname(entry)) ?: continue @@ -296,8 +293,7 @@ object LibArchiveUtils { val entryStat = ArchiveEntry.stat(entry) //判断是否是文件夹 - if (S_ISDIR(entryStat.stMode)) { - entry = Archive.readNextHeader(archive) + if (entryStat.isDir()) { continue } @@ -315,7 +311,6 @@ object LibArchiveUtils { } } - entry = Archive.readNextHeader(archive) } } finally { @@ -331,22 +326,19 @@ object LibArchiveUtils { ): List { val fileNames = mutableListOf() try { - //Archive.readOpenFd(archive, pfd.fd, 8192) - var entry = Archive.readNextHeader(archive) - //val formatName: String = newStringFromBytes(Archive.formatName(archive)) - while (entry != 0L) { + + var entry: Long + + while (Archive.readNextHeader(archive).also { entry = it } != 0L) { val fileName = getEntryString(ArchiveEntry.pathnameUtf8(entry), ArchiveEntry.pathname(entry)) ?: continue val entryStat = ArchiveEntry.stat(entry) - val fileType = entryStat.stMode and S_IFDIR - - if (S_ISDIR(entryStat.stMode)) { - entry = Archive.readNextHeader(archive) + if (entryStat.isDir()) { continue } @@ -363,6 +355,7 @@ object LibArchiveUtils { return fileNames } + private fun ArchiveEntry.StructStat.isDir() = S_ISDIR(this.stMode) private fun getEntryString(utf8: String?, bytes: ByteArray?): String? { return utf8 ?: newStringFromBytes(bytes) diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 1ebf494cc..55506d670 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1129,7 +1129,5 @@ 点击书名打开详情 等待导出 默认主页 - Use LibArchive - Using libarchive to extract files, it supports extracting RAR5. 显示快速滚动条 diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index a3a661193..735bb64be 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1132,7 +1132,5 @@ 点击书名打开详情 等待导出 默认主页 - Use LibArchive - Using libarchive to extract files, it supports extracting RAR5. 显示快速滚动条 diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e8426abd3..84db3bdd0 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1132,7 +1132,5 @@ 点击书名打开详情 等待导出 默认主页 - Use LibArchive - Using libarchive to extract files, it supports extracting RAR5. 显示快速滚动条 diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 736e4857e..392606ee3 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1127,7 +1127,5 @@ Còn 换源间隔 点击书名打开详情 等待导出 - Use LibArchive - Using libarchive to extract files, it supports extracting RAR5. 显示快速滚动条 \ 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 0df541a35..e5dd7bf30 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1128,7 +1128,5 @@ 换源间隔 点击书名打开详情 等待导出 - 使用LibArchive - 使用libarchive解壓檔案,支持解壓RAR5。 显示快速滚动条 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 082a00950..acd80adf6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1130,7 +1130,5 @@ 换源间隔 点击书名打开详情 等待导出 - 使用LibArchive - 使用libarchive解壓檔案,支持解壓RAR5。 显示快速滚动条 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index b467c898d..13e04a361 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1130,7 +1130,5 @@ 换源间隔 点击书名打开详情 等待导出 - 使用LibArchive - 使用libarchive解压文件,支持解压RAR5。 显示快速滚动条 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0d11a1096..26217981d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1132,7 +1132,5 @@ 点击书名打开详情 等待导出 默认主页 - Use LibArchive - Using libarchive to extract files, it supports extracting RAR5. 显示快速滚动条