1、版本检查代码添加优化处理
This commit is contained in:
shenzuqiang 2026-03-11 18:06:30 +08:00
parent 7546fdfd53
commit 7ca00b9626
1 changed files with 22 additions and 34 deletions

View File

@ -111,30 +111,23 @@ object UniAppUtils {
*/ */
private fun checkUpdate(uniVersion: UniVersionEntity, currentVersion: String): Boolean { private fun checkUpdate(uniVersion: UniVersionEntity, currentVersion: String): Boolean {
val version = uniVersion.version val version = uniVersion.version
if(version.isEmpty()){ if(version.isEmpty())return false
return false
}
val newVersions = version.split(".") val newVersions = version.split(".")
val originVersions = currentVersion.split(".") val originVersions = currentVersion.split(".")
if(newVersions.size != 3){ if(newVersions.size != 3 || originVersions.size != 3)return false
return false
}
if(originVersions.size != 3){
return false
}
try {
for (i in 0..2) { for (i in 0..2) {
if (Integer.parseInt(newVersions[i]) > Integer.parseInt(originVersions[i])) { val newVal = newVersions[i].toIntOrNull() ?: 0
val oldVal = originVersions[i].toIntOrNull() ?: 0
if (newVal > oldVal) {
return true return true
} else if (Integer.parseInt(newVersions[i]) < Integer.parseInt(originVersions[i])) { } else if (newVal < oldVal) {
return false return false
} }
} }
}catch (e: Exception){
e.printStackTrace()
Log.w(TAG, "checkUpdate: 解析版本号时,版本号格式错误 $version")
}
return false return false
} }
@ -407,27 +400,22 @@ object UniAppUtils {
api.sendReq(req) api.sendReq(req)
} }
suspend fun isFileDownloadable(url: String): Boolean = withContext(Dispatchers.IO) {val client = OkHttpClient() private val okHttpClient: OkHttpClient by lazy {
OkHttpClient.Builder()
// 如果需要,可以在这里配置超时、缓存等
// .connectTimeout(15, TimeUnit.SECONDS)
.build()
}
suspend fun isFileDownloadable(url: String): Boolean = withContext(Dispatchers.IO) {
val request = Request.Builder().url(url).build() val request = Request.Builder().url(url).build()
try { try {
client.newCall(request).execute().use { response -> okHttpClient.newCall(request).execute().use { response ->
val body = response.body ?: return@withContext false val body = response.body
val fileSize = body.contentLength() val fileSize = body.contentLength()
// 下载文件小于1KB需要判断Url是否可靠 // 下载文件小于1KB需要判断Url是否可靠
if (fileSize < 1024) { if (fileSize < 1024) {
if (!response.isSuccessful) { return@withContext response.isSuccessful
val errorBody = body.string() // string() 会内部读取并关闭 body但外层有 .use 更保险
if (response.header("Content-Type")?.contains("application/json") == true) {
Log.i(TAG, "下载失败...$errorBody")
} else {
Log.i(TAG, "服务器错误...$errorBody")
}
return@withContext false
} else {
Log.i(TAG, "文件正常,可以下载!")
return@withContext true
}
} else { } else {
return@withContext true return@withContext true
} }