Horis 2 лет назад
Родитель
Сommit
9859256402

+ 22 - 3
app/src/main/java/io/legado/app/constant/AppConst.kt

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
 import android.content.pm.PackageManager
 import android.provider.Settings
 import androidx.annotation.Keep
+import cn.hutool.crypto.digest.DigestUtil
 import io.legado.app.BuildConfig
 import io.legado.app.model.AppVariant
 import splitties.init.appCtx
@@ -25,6 +26,11 @@ object AppConst {
 
     const val DEFAULT_WEBDAV_ID = -1L
 
+    private const val OFFICIAL_SIGNATURE =
+        "8DACBF25EC667C9B1374DB1450C1A866C2AAA1173016E80BF6AD2F06FABDDC08"
+    private const val BETA_SIGNATURE =
+        "93A28468B0F69E8D14C8A99AB45841CEF902BBBA3761BBFEE02E67CBA801563E"
+
     val timeFormat: SimpleDateFormat by lazy {
         SimpleDateFormat("HH:mm")
     }
@@ -59,9 +65,11 @@ object AppConst {
         appCtx.packageManager.getPackageInfo(appCtx.packageName, PackageManager.GET_ACTIVITIES)
             ?.let {
                 appInfo.versionName = it.versionName
-                // TODO: 增加测试版还是正式版的检查
-                if (it.packageName.contains("releaseA")) {
-                    appInfo.appVariant = AppVariant.BETA_RELEASEA
+                appInfo.appVariant = when {
+                    it.packageName.contains("releaseA") -> AppVariant.BETA_RELEASEA
+                    isBeta -> AppVariant.BETA_RELEASE
+                    isOfficial -> AppVariant.OFFICIAL
+                    else -> AppVariant.UNKNOWN
                 }
 
                 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
@@ -74,6 +82,17 @@ object AppConst {
         appInfo
     }
 
+    @Suppress("DEPRECATION")
+    private val sha256Signature: String by lazy {
+        val packageInfo =
+            appCtx.packageManager.getPackageInfo(appCtx.packageName, PackageManager.GET_SIGNATURES)
+        DigestUtil.sha256Hex(packageInfo.signatures[0].toByteArray()).uppercase()
+    }
+
+    private val isOfficial = sha256Signature == OFFICIAL_SIGNATURE
+
+    private val isBeta = sha256Signature == BETA_SIGNATURE || BuildConfig.DEBUG
+
     val charsets =
         arrayListOf("UTF-8", "GB2312", "GB18030", "GBK", "Unicode", "UTF-16", "UTF-16LE", "ASCII")
 

+ 1 - 1
app/src/main/java/io/legado/app/help/AppUpdate.kt

@@ -25,4 +25,4 @@ object AppUpdate {
 
     }
 
-}
+}

+ 1 - 1
app/src/main/java/io/legado/app/help/AppUpdateGitHub.kt

@@ -64,4 +64,4 @@ object AppUpdateGitHub : AppUpdate.AppUpdateInterface {
                 ?: throw NoStackTraceException("已是最新版本")
         }.timeout(10000)
     }
-}
+}

+ 8 - 33
app/src/main/java/io/legado/app/model/AppReleaseInfo.kt

@@ -25,12 +25,12 @@ data class GithubRelease(
     val assets: List<Asset>,
     val body: String,
     @SerializedName("prerelease")
-    val isPreLease: Boolean,
+    val isPreRelease: Boolean,
 ) {
     fun gitReleaseToAppReleaseInfo(): List<AppReleaseInfo> {
         return assets
             .filter { it.isValid }
-            .map { it.assetToAppReleaseInfo(isPreLease, body) }
+            .map { it.assetToAppReleaseInfo(isPreRelease, body) }
     }
 }
 
@@ -55,37 +55,12 @@ data class Asset(
         val instant = Instant.parse(createdAt)
         val timestamp: Long = instant.toEpochMilli()
 
-        return when {
-            preRelease && name.contains("releaseA") ->
-                AppReleaseInfo(
-                    AppVariant.BETA_RELEASEA,
-                    timestamp,
-                    note,
-                    name,
-                    apkUrl,
-                    url
-                )
-
-            preRelease && name.contains("release") ->
-                AppReleaseInfo(
-                    AppVariant.BETA_RELEASE,
-                    timestamp,
-                    note,
-                    name,
-                    apkUrl,
-                    url
-                )
-
-            else ->
-                AppReleaseInfo(
-                    AppVariant.OFFICIAL,
-                    timestamp,
-                    note,
-                    name,
-                    apkUrl,
-                    url
-                )
-
+        val appVariant = when {
+            preRelease && name.contains("releaseA") -> AppVariant.BETA_RELEASEA
+            preRelease && name.contains("release") -> AppVariant.BETA_RELEASE
+            else -> AppVariant.OFFICIAL
         }
+
+        return AppReleaseInfo(appVariant, timestamp, note, name, apkUrl, url)
     }
 }

+ 1 - 1
app/src/main/java/io/legado/app/ui/about/UpdateDialog.kt

@@ -68,4 +68,4 @@ class UpdateDialog() : BaseDialogFragment(R.layout.dialog_update) {
         }
     }
 
-}
+}

+ 2 - 2
app/src/main/res/values-es-rES/strings.xml

@@ -1153,8 +1153,8 @@
     <string name="start_from">Comenzar</string>
     <string name="daily_chapters">Cap. al día</string>
     <string name="start_chapter">Cap. inicio</string>
-    <string name="update_to_bata_title">更新至测试版</string>
-    <string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/values-ja-rJP/strings.xml

@@ -1156,8 +1156,8 @@
     <string name="start_from">開始日</string>
     <string name="daily_chapters">日更の章数</string>
     <string name="start_chapter">開始の章</string>
-    <string name="update_to_bata_title">更新至测试版</string>
-    <string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/values-pt-rBR/strings.xml

@@ -1156,8 +1156,8 @@
     <string name="start_from">Começar</string>
     <string name="daily_chapters">Cap. por dia</string>
     <string name="start_chapter">Início</string>
-    <string name="update_to_bata_title">更新至测试版</string>
-    <string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/values-vi/strings.xml

@@ -1152,8 +1152,8 @@ Còn </string>
     <string name="start_from">Bắt đầu</string>
     <string name="daily_chapters">Chương/ngày</string>
     <string name="start_chapter">Chương đầu</string>
-    <string name="update_to_bata_title">更新至测试版</string>
-    <string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/values-zh-rHK/strings.xml

@@ -1153,8 +1153,8 @@
     <string name="start_from">起始日期</string>
     <string name="daily_chapters">日更章數</string>
     <string name="start_chapter">開始篇章</string>
-    <string name="update_to_bata_title">更新至测试版</string>
-    <string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/values-zh-rTW/strings.xml

@@ -1155,8 +1155,8 @@
     <string name="start_from">起始日期</string>
     <string name="daily_chapters">日更章數</string>
     <string name="start_chapter">開始篇章</string>
-    <string name="update_to_bata_title">更新至测试版</string>
-    <string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/values-zh/strings.xml

@@ -1155,8 +1155,8 @@
     <string name="start_from">开始日期</string>
     <string name="daily_chapters">日更章数</string>
     <string name="start_chapter">起始章节</string>
-    <string name="update_to_bata_title">检查更新查找版本</string>
-    <string name="update_to_bata_summary">检查更新查找其他签名版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/values/strings.xml

@@ -1156,8 +1156,8 @@
     <string name="start_from">Start from</string>
     <string name="daily_chapters">Daily Chapters</string>
     <string name="start_chapter">Start Chapter</string>
-    <string name="update_to_bata_title">更新至测试版</string>
-    <string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
+    <string name="update_to_variant_title">检查更新查找版本</string>
+    <string name="update_to_variant_summary">检查更新时查找其他签名版本</string>
     <string name="default_version">当前</string>
     <string name="official_version">正式版</string>
     <string name="beta_release_version">测试版</string>

+ 2 - 2
app/src/main/res/xml/pref_config_other.xml

@@ -149,8 +149,8 @@
         <io.legado.app.lib.prefs.NameListPreference
             android:defaultValue="default_version"
             android:key="updateToVariant"
-            android:summary="@string/update_to_bata_summary"
-            android:title="@string/update_to_bata_title"
+            android:summary="@string/update_to_variant_summary"
+            android:title="@string/update_to_variant_title"
             app:allowDividerAbove="false"
             app:allowDividerBelow="false"
             app:entries="@array/default_app_variant"