azhon / AppUpdate

Android App update library. Android版本更新库,简单、轻量、可随意定制
Apache License 2.0
2.32k stars 338 forks source link

算不上Bug,一个细节问题 #114

Closed ChawLoo closed 2 years ago

ChawLoo commented 2 years ago

Bug标题 算不上Bug,一个细节问题

AppUpdate参数设置 截图DownloadManager配置 image

复现步骤 如果版本判断是VersionName进行判断的话,此时并没有最新VersionCode,没办法传入,但是设置了强制更新的情况下,弹窗不会显示,我看了源码,弹窗显示的逻辑是传入VersionCode,自动判断需要更新才会显示,我觉得这个逻辑是否这样更合理,配置化或者只要更新都需要弹窗,不然强制更新就不强制了,变成了强制下载,用户依旧能够继续使用App,我目前处理逻辑就是按照截图的做法,传入一个Int的最大值,然后判断逻辑放在了外部把他包起来,但是这一步放在框架里面显得更简洁

错误Logcat日志截图 日志截图

软件版本信息

额外有用的信息 额外补充一个判断VersionName对比是否更新的方法

/**
     * app_version:应用当前版本号
     * latest_android_version:服务端返回的apk版本号
     * app_version vs latest_android_version
     * 1.0.9 vs 1.1.0  return true
     * 1.0.0 vs 2.0   return true
     * 1.9.9 vs 1.9.9.1  return true
     * 1.0.0 vs 0.0.1  return false
     *
     * @return latest_android_version的中是否"大于"app_version的值。
     */
    fun checkNeedUpgrade(appVersion: String?, latestVersion: String?): Boolean {
        if (appVersion.isNullOrBlank() || latestVersion.isNullOrBlank()) {
            return false
        }
        val oldAppVer = appVersion.split(".")
        val latestAppVer = latestVersion.split(".")
        val minSize = min(oldAppVer.size, latestAppVer.size)
        for (i in 0 until minSize) {
            if (oldAppVer[i].isNotBlank() && latestAppVer[i].isNotBlank()) {
                val oldVer: Int = oldAppVer[i].toIntOrNull() ?: -1
                val lastVer: Int = latestAppVer[i].toIntOrNull() ?: -1
                if (lastVer > oldVer) return true else if (lastVer < oldVer) return false
            }
        }
        if (latestAppVer.size > minSize) {
            for (i in minSize until latestAppVer.size) {
                if ((latestAppVer[i].toIntOrNull() ?: -1) > 0) {
                    return true
                }
            }
        }
        return false
    }
azhon commented 2 years ago

在我看来使用versionName做判断属于脱裤子放P,Google已经提供了verisonCode如此好判断的字段。一行代码判断的事。

你这边建议你使用Demo中的使用自己的对话框更新,自己处理更新判断,自己写对话框

ChawLoo commented 2 years ago

道理都懂,架不住垃圾后台,只能自己擦屁股咯