resolve PR comment
This commit is contained in:
@@ -4,7 +4,7 @@ import com.google.gson.Gson
|
|||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.http.okHttpClient
|
import io.legado.app.help.http.okHttpClient
|
||||||
import io.legado.app.model.GithubRelease
|
import io.legado.app.model.GithubRelease
|
||||||
import io.legado.app.utils.fromJsonArray
|
import io.legado.app.utils.fromJsonObject
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -12,21 +12,41 @@ import org.junit.Test
|
|||||||
class UpdateTest {
|
class UpdateTest {
|
||||||
|
|
||||||
private val lastReleaseUrl =
|
private val lastReleaseUrl =
|
||||||
"https://api.github.com/repos/gedoor/legado/releases?page=1?per_page=1"
|
"https://api.github.com/repos/gedoor/legado/releases/latest"
|
||||||
|
|
||||||
|
private val lastBetaReleaseUrl =
|
||||||
|
"https://api.github.com/repos/gedoor/legado/releases/tags/beta"
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun updateApp_beta() {
|
||||||
|
val body = okHttpClient.newCall(Request.Builder().url(lastBetaReleaseUrl).build()).execute()
|
||||||
|
.body!!.string()
|
||||||
|
|
||||||
|
val releaseList = Gson().fromJsonObject<GithubRelease>(body)
|
||||||
|
.getOrElse {
|
||||||
|
throw NoStackTraceException("获取新版本出错 " + it.localizedMessage)
|
||||||
|
}
|
||||||
|
.gitReleaseToAppReleaseInfo()
|
||||||
|
.sortedByDescending { it.createdAt }
|
||||||
|
|
||||||
|
assertTrue(releaseList.size == 2)
|
||||||
|
assertTrue(releaseList.all { it.downloadUrl.isNotBlank() })
|
||||||
|
assertTrue(releaseList.all { it.versionName.isNotBlank() })
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun updateApp() {
|
fun updateApp() {
|
||||||
val body = okHttpClient.newCall(Request.Builder().url(lastReleaseUrl).build()).execute()
|
val body = okHttpClient.newCall(Request.Builder().url(lastReleaseUrl).build()).execute()
|
||||||
.body!!.string()
|
.body!!.string()
|
||||||
|
|
||||||
val releaseList = Gson().fromJsonArray<GithubRelease>(body)
|
val releaseList = Gson().fromJsonObject<GithubRelease>(body)
|
||||||
.getOrElse {
|
.getOrElse {
|
||||||
throw NoStackTraceException("获取新版本出错 " + it.localizedMessage)
|
throw NoStackTraceException("获取新版本出错 " + it.localizedMessage)
|
||||||
}
|
}
|
||||||
.flatMap { it.gitReleaseToAppReleaseInfo() }
|
.gitReleaseToAppReleaseInfo()
|
||||||
.sortedByDescending { it.createdAt }
|
.sortedByDescending { it.createdAt }
|
||||||
|
|
||||||
assertTrue(releaseList.isNotEmpty())
|
assertTrue(releaseList.size == 1)
|
||||||
assertTrue(releaseList.all { it.downloadUrl.isNotBlank() })
|
assertTrue(releaseList.all { it.downloadUrl.isNotBlank() })
|
||||||
assertTrue(releaseList.all { it.versionName.isNotBlank() })
|
assertTrue(releaseList.all { it.versionName.isNotBlank() })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ object AppConst {
|
|||||||
appInfo.versionName = it.versionName
|
appInfo.versionName = it.versionName
|
||||||
// TODO: 增加测试版还是正式版的检查
|
// TODO: 增加测试版还是正式版的检查
|
||||||
if (it.packageName.contains("releaseA")) {
|
if (it.packageName.contains("releaseA")) {
|
||||||
appInfo.appVariant = AppVariant.COMPATIBLE
|
appInfo.appVariant = AppVariant.BETA_RELEASEA
|
||||||
}
|
}
|
||||||
|
|
||||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ object PreferKey {
|
|||||||
const val mouseWheelPage = "mouseWheelPage"
|
const val mouseWheelPage = "mouseWheelPage"
|
||||||
const val recordHeapDump = "recordHeapDump"
|
const val recordHeapDump = "recordHeapDump"
|
||||||
const val optimizeRender = "optimizeRender"
|
const val optimizeRender = "optimizeRender"
|
||||||
const val updateToBeta = "updateToBeta"
|
const val updateToVariant = "updateToVariant"
|
||||||
|
|
||||||
const val cPrimary = "colorPrimary"
|
const val cPrimary = "colorPrimary"
|
||||||
const val cAccent = "colorAccent"
|
const val cAccent = "colorAccent"
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ object AppUpdate {
|
|||||||
|
|
||||||
fun check(scope: CoroutineScope): Coroutine<UpdateInfo>
|
fun check(scope: CoroutineScope): Coroutine<UpdateInfo>
|
||||||
|
|
||||||
fun checkBeta(scope: CoroutineScope): Coroutine<UpdateInfo>
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,33 +4,45 @@ import androidx.annotation.Keep
|
|||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import io.legado.app.constant.AppConst
|
import io.legado.app.constant.AppConst
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.http.newCallStrResponse
|
import io.legado.app.help.http.newCallStrResponse
|
||||||
import io.legado.app.help.http.okHttpClient
|
import io.legado.app.help.http.okHttpClient
|
||||||
import io.legado.app.model.AppReleaseInfo
|
import io.legado.app.model.AppReleaseInfo
|
||||||
|
import io.legado.app.model.AppVariant
|
||||||
import io.legado.app.model.GithubRelease
|
import io.legado.app.model.GithubRelease
|
||||||
import io.legado.app.utils.fromJsonArray
|
import io.legado.app.utils.fromJsonObject
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
|
||||||
@Keep
|
@Keep
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
object AppUpdateGitHub : AppUpdate.AppUpdateInterface {
|
object AppUpdateGitHub : AppUpdate.AppUpdateInterface {
|
||||||
|
|
||||||
// TODO:在关于->其他,添加其他版本选项,使用该函数
|
private val checkVariant: AppVariant
|
||||||
private suspend fun getRecentReleases(): List<AppReleaseInfo> {
|
get() = when (AppConfig.updateToVariant) {
|
||||||
val lastReleaseUrl =
|
"official_version" -> AppVariant.OFFICIAL
|
||||||
"https://api.github.com/repos/gedoor/legado/releases?page=1?per_page=1"
|
"beta_release_version" -> AppVariant.BETA_RELEASE
|
||||||
|
"beta_releaseA_version" -> AppVariant.BETA_RELEASEA
|
||||||
|
else -> AppConst.appInfo.appVariant
|
||||||
|
}
|
||||||
|
|
||||||
|
private suspend fun getLatestRelease(): List<AppReleaseInfo> {
|
||||||
|
val lastReleaseUrl = if (checkVariant.name.lowercase().contains("beta")) {
|
||||||
|
"https://api.github.com/repos/gedoor/legado/releases/tags/beta"
|
||||||
|
} else {
|
||||||
|
"https://api.github.com/repos/gedoor/legado/releases/latest"
|
||||||
|
}
|
||||||
val body = okHttpClient.newCallStrResponse {
|
val body = okHttpClient.newCallStrResponse {
|
||||||
url(lastReleaseUrl)
|
url(lastReleaseUrl)
|
||||||
}.body
|
}.body
|
||||||
if (body.isNullOrBlank()) {
|
if (body.isNullOrBlank()) {
|
||||||
throw NoStackTraceException("获取新版本出错")
|
throw NoStackTraceException("获取新版本出错")
|
||||||
}
|
}
|
||||||
return Gson().fromJsonArray<GithubRelease>(body)
|
return Gson().fromJsonObject<GithubRelease>(body)
|
||||||
.getOrElse {
|
.getOrElse {
|
||||||
throw NoStackTraceException("获取新版本出错 " + it.localizedMessage)
|
throw NoStackTraceException("获取新版本出错 " + it.localizedMessage)
|
||||||
}
|
}
|
||||||
.flatMap { it.gitReleaseToAppReleaseInfo() }
|
.gitReleaseToAppReleaseInfo()
|
||||||
.sortedByDescending { it.createdAt }
|
.sortedByDescending { it.createdAt }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,9 +50,8 @@ object AppUpdateGitHub : AppUpdate.AppUpdateInterface {
|
|||||||
scope: CoroutineScope,
|
scope: CoroutineScope,
|
||||||
): Coroutine<AppUpdate.UpdateInfo> {
|
): Coroutine<AppUpdate.UpdateInfo> {
|
||||||
return Coroutine.async(scope) {
|
return Coroutine.async(scope) {
|
||||||
val recentReleases = getRecentReleases()
|
getLatestRelease()
|
||||||
recentReleases
|
.filter { it.appVariant == checkVariant }
|
||||||
.filter { it.appVariant == AppConst.appInfo.appVariant }
|
|
||||||
.firstOrNull { it.versionName > AppConst.appInfo.versionName }
|
.firstOrNull { it.versionName > AppConst.appInfo.versionName }
|
||||||
?.let {
|
?.let {
|
||||||
return@async AppUpdate.UpdateInfo(
|
return@async AppUpdate.UpdateInfo(
|
||||||
@@ -49,41 +60,8 @@ object AppUpdateGitHub : AppUpdate.AppUpdateInterface {
|
|||||||
it.downloadUrl,
|
it.downloadUrl,
|
||||||
it.name
|
it.name
|
||||||
)
|
)
|
||||||
} ?: throw NoStackTraceException("已是最新版本")
|
}
|
||||||
|
?: throw NoStackTraceException("已是最新版本")
|
||||||
}.timeout(10000)
|
}.timeout(10000)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkBeta(scope: CoroutineScope): Coroutine<AppUpdate.UpdateInfo> {
|
|
||||||
return Coroutine.async(scope) {
|
|
||||||
val preReleaseUrl = "https://api.github.com/repos/gedoor/legado/releases/tags/beta"
|
|
||||||
val body = okHttpClient.newCallStrResponse {
|
|
||||||
url(preReleaseUrl)
|
|
||||||
}.body
|
|
||||||
if (body.isNullOrBlank()) {
|
|
||||||
throw NoStackTraceException("获取新版本出错")
|
|
||||||
}
|
|
||||||
val rootDoc = jsonPath.parse(body)
|
|
||||||
val path = "\$.assets[?(@.name =~ /legado_${appCtx.channel}_.*?apk\$/)]"
|
|
||||||
val name = rootDoc.readString("$.name")
|
|
||||||
?: throw NoStackTraceException("获取新版本出错")
|
|
||||||
val tagName = name.replace("legado_app_", "")
|
|
||||||
if (tagName > AppConst.appInfo.versionName) {
|
|
||||||
val assetsMap = rootDoc.read<List<Any>>(path)
|
|
||||||
.firstOrNull()
|
|
||||||
?: throw NoStackTraceException("获取新版本出错")
|
|
||||||
val assets = jsonPath.parse(assetsMap)
|
|
||||||
val updateBody = rootDoc.readString("$.body")
|
|
||||||
?: throw NoStackTraceException("获取新版本出错")
|
|
||||||
val downloadUrl = assets.readString("$.browser_download_url")
|
|
||||||
?: throw NoStackTraceException("获取新版本出错")
|
|
||||||
val fileName = assets.readString("$.name")
|
|
||||||
?: throw NoStackTraceException("获取新版本出错")
|
|
||||||
return@async AppUpdate.UpdateInfo(tagName, updateBody, downloadUrl, fileName)
|
|
||||||
} else {
|
|
||||||
throw NoStackTraceException("已是最新版本")
|
|
||||||
}
|
|
||||||
}.timeout(10000)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -471,7 +471,7 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
|
|
||||||
val defaultHomePage get() = appCtx.getPrefString(PreferKey.defaultHomePage, "bookshelf")
|
val defaultHomePage get() = appCtx.getPrefString(PreferKey.defaultHomePage, "bookshelf")
|
||||||
|
|
||||||
val updateToBeta get() = appCtx.getPrefBoolean(PreferKey.updateToBeta, false)
|
val updateToVariant get() = appCtx.getPrefString(PreferKey.updateToVariant, "default_version")
|
||||||
|
|
||||||
val doublePageHorizontal: String?
|
val doublePageHorizontal: String?
|
||||||
get() = appCtx.getPrefString(PreferKey.doublePageHorizontal)
|
get() = appCtx.getPrefString(PreferKey.doublePageHorizontal)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ data class AppReleaseInfo(
|
|||||||
|
|
||||||
enum class AppVariant {
|
enum class AppVariant {
|
||||||
OFFICIAL,
|
OFFICIAL,
|
||||||
COMPATIBLE,
|
BETA_RELEASEA,
|
||||||
BETA_RELEASE,
|
BETA_RELEASE,
|
||||||
UNKNOWN
|
UNKNOWN
|
||||||
}
|
}
|
||||||
@@ -58,7 +58,7 @@ data class Asset(
|
|||||||
return when {
|
return when {
|
||||||
preRelease && name.contains("releaseA") ->
|
preRelease && name.contains("releaseA") ->
|
||||||
AppReleaseInfo(
|
AppReleaseInfo(
|
||||||
AppVariant.COMPATIBLE,
|
AppVariant.BETA_RELEASEA,
|
||||||
timestamp,
|
timestamp,
|
||||||
note,
|
note,
|
||||||
name,
|
name,
|
||||||
@@ -76,19 +76,9 @@ data class Asset(
|
|||||||
url
|
url
|
||||||
)
|
)
|
||||||
|
|
||||||
!preRelease && name.contains("release") ->
|
|
||||||
AppReleaseInfo(
|
|
||||||
AppVariant.OFFICIAL,
|
|
||||||
timestamp,
|
|
||||||
note,
|
|
||||||
name,
|
|
||||||
apkUrl,
|
|
||||||
url
|
|
||||||
)
|
|
||||||
|
|
||||||
else ->
|
else ->
|
||||||
AppReleaseInfo(
|
AppReleaseInfo(
|
||||||
AppVariant.UNKNOWN,
|
AppVariant.OFFICIAL,
|
||||||
timestamp,
|
timestamp,
|
||||||
note,
|
note,
|
||||||
name,
|
name,
|
||||||
|
|||||||
@@ -88,12 +88,8 @@ class AboutFragment : PreferenceFragmentCompat() {
|
|||||||
private fun checkUpdate() {
|
private fun checkUpdate() {
|
||||||
waitDialog.show()
|
waitDialog.show()
|
||||||
AppUpdate.gitHubUpdate?.run {
|
AppUpdate.gitHubUpdate?.run {
|
||||||
val job = if (AppConfig.updateToBeta) {
|
|
||||||
checkBeta(lifecycleScope)
|
|
||||||
} else {
|
|
||||||
check(lifecycleScope)
|
check(lifecycleScope)
|
||||||
}
|
.onSuccess {
|
||||||
job.onSuccess {
|
|
||||||
showDialogFragment(
|
showDialogFragment(
|
||||||
UpdateDialog(it)
|
UpdateDialog(it)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1155,4 +1155,8 @@
|
|||||||
<string name="start_chapter">Cap. inicio</string>
|
<string name="start_chapter">Cap. inicio</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">更新至测试版</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1158,4 +1158,8 @@
|
|||||||
<string name="start_chapter">開始の章</string>
|
<string name="start_chapter">開始の章</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">更新至测试版</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1158,4 +1158,8 @@
|
|||||||
<string name="start_chapter">Início</string>
|
<string name="start_chapter">Início</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">更新至测试版</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1154,4 +1154,8 @@ Còn </string>
|
|||||||
<string name="start_chapter">Chương đầu</string>
|
<string name="start_chapter">Chương đầu</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">更新至测试版</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1155,4 +1155,8 @@
|
|||||||
<string name="start_chapter">開始篇章</string>
|
<string name="start_chapter">開始篇章</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">更新至测试版</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1157,4 +1157,8 @@
|
|||||||
<string name="start_chapter">開始篇章</string>
|
<string name="start_chapter">開始篇章</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">更新至测试版</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1155,6 +1155,10 @@
|
|||||||
<string name="start_from">开始日期</string>
|
<string name="start_from">开始日期</string>
|
||||||
<string name="daily_chapters">日更章数</string>
|
<string name="daily_chapters">日更章数</string>
|
||||||
<string name="start_chapter">起始章节</string>
|
<string name="start_chapter">起始章节</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">检查更新查找版本</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新查找其他签名版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -151,6 +151,14 @@
|
|||||||
<item>@string/my</item>
|
<item>@string/my</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
|
||||||
|
<string-array name="default_app_variant">
|
||||||
|
<item>@string/default_version</item>
|
||||||
|
<item>@string/official_version</item>
|
||||||
|
<item>@string/beta_release_version</item>
|
||||||
|
<item>@string/beta_releaseA_version</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<string-array name="default_home_page_value">
|
<string-array name="default_home_page_value">
|
||||||
<item>bookshelf</item>
|
<item>bookshelf</item>
|
||||||
<item>explore</item>
|
<item>explore</item>
|
||||||
@@ -158,6 +166,13 @@
|
|||||||
<item>my</item>
|
<item>my</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="default_app_variant_value">
|
||||||
|
<item>default_version</item>
|
||||||
|
<item>official_version</item>
|
||||||
|
<item>beta_release_version</item>
|
||||||
|
<item>beta_releaseA_version</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<string-array name="tip_color">
|
<string-array name="tip_color">
|
||||||
<item>Same color as content</item>
|
<item>Same color as content</item>
|
||||||
<item>Customize</item>
|
<item>Customize</item>
|
||||||
|
|||||||
@@ -1158,4 +1158,8 @@
|
|||||||
<string name="start_chapter">Start Chapter</string>
|
<string name="start_chapter">Start Chapter</string>
|
||||||
<string name="update_to_bata_title">更新至测试版</string>
|
<string name="update_to_bata_title">更新至测试版</string>
|
||||||
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
<string name="update_to_bata_summary">检查更新时查找最新的测试版本</string>
|
||||||
|
<string name="default_version">当前</string>
|
||||||
|
<string name="official_version">正式版</string>
|
||||||
|
<string name="beta_release_version">测试版</string>
|
||||||
|
<string name="beta_releaseA_version">共存版</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -146,11 +146,15 @@
|
|||||||
android:summary="@string/show_add_to_shelf_alert_summary"
|
android:summary="@string/show_add_to_shelf_alert_summary"
|
||||||
android:title="@string/show_add_to_shelf_alert_title" />
|
android:title="@string/show_add_to_shelf_alert_title" />
|
||||||
|
|
||||||
<io.legado.app.lib.prefs.SwitchPreference
|
<io.legado.app.lib.prefs.NameListPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="default_version"
|
||||||
android:key="updateToBeta"
|
android:key="updateToVariant"
|
||||||
android:summary="@string/update_to_bata_summary"
|
android:summary="@string/update_to_bata_summary"
|
||||||
android:title="@string/update_to_bata_title" />
|
android:title="@string/update_to_bata_title"
|
||||||
|
app:allowDividerAbove="false"
|
||||||
|
app:allowDividerBelow="false"
|
||||||
|
app:entries="@array/default_app_variant"
|
||||||
|
app:entryValues="@array/default_app_variant_value" />
|
||||||
|
|
||||||
<io.legado.app.lib.prefs.Preference
|
<io.legado.app.lib.prefs.Preference
|
||||||
android:key="webPort"
|
android:key="webPort"
|
||||||
|
|||||||
Reference in New Issue
Block a user