客户端更新


功能说明

客户端更新通常是用于修改产品bug或升级产品内容的,它的特点是用户不用卸载和重新安装客户端,只需要等待它自动下载补丁文件,即可改变客户端的程序或资源。目前这一手段在苹果的AppStore上被禁止了,但它的方便性和重要性决定它继续被广泛使用。

其实客户端更新需要关注的不仅仅只是下面列出的测试点,更重要的还有补丁包的制作流程和工具。否则,做出的补丁很大,需要很长时间,包含了太多冗余的文件;或者是容易出错,导致用户升级了之后出现别的问题,这样的客户端更新都是不合格的。


测试用例

下载地址及位置:功能测试用例库


问题示例

  1. 《奇迹破坏神》曾今在打包的时候经常忘记手动修改版本号,导致做出的补丁包版本号没有提升,客户端检测不到差异,不会升级。所以打包工具最好能够自动修改要提升的版本号。

  2. 《剑荡八荒》在断网情况下,更新检查会卡住近3分钟,然后才提示用户检查网络,没有做好超时处理。

  3. 《剑荡八荒》需要更新登录场景的时候,更新功能就不可用。这是因为做更新功能的程序并没有单独将更新写成一个独立的进程模块,而只是写了一个脚本,然后挂载在入口场景上,当入口本身需要更新的时候,无法拉起更新脚本。


其他的客户端更新方案

在测试《剑荡八荒》这个项目的时候,发现他们实现的客户端更新方式与常规的方式不太一样,所以这里也顺便提一下不同的客户端更新方案。

《剑荡八荒》的更新方案,简单来说就是在更新服务器上放置一个最新的客户端版本,然后有一个列表,里面列明所有的客户端文件以及MD5码,这个列表是给需要更新的客户端用于校验的。本地客户端启动后,先下载这个列表,然后跟本地的客户端文件进行MD5码校验对比,发现有差异就从更新服务器上下载下来,放在一个缓存目录里。更新完成后,重启客户端,客户端会优先加载缓存目录里的新文件,以达到更新的效果。与常规的更新方式不同的地方在于:

  1. 常规的更新是将所有要更新的文件打包成一个文件,而《剑荡八荒》则是自己去对比,然后一个个下载要更新的文件。一般客户端服务端之间使用的http连接协议(三次握手),所以相比之下,如果要更新100个文件,常规的更新只需要建立一次连接即可完成所有下载,而《剑荡八荒》的做法需要连接100次,下载100次。网速好的话可能差别不大,网速较差的情况下,效率会有所降低。

  2. 因为不需要单独将差异文件打成补丁包,而是让本地客户端自己去对比和下载。所以每次推客户端更新的时候,哪怕只是更新几个文件,《剑荡八荒》都需要作出一个完整的客户端包,这大概需要1个小时左右的时间。而常规的更新只需要将要更新的文件打成一个压缩包,一般15分钟内就可以搞定。打包效率方面的差距也十分明显。

  3. 《剑荡八荒》的更新还有一个很大的问题在于,他们的客户端代码和资源结构不太好,一开始UI是不支持更新的。而且如果客户端APK程序体也需要更新的话,就要像AppStore那样下载一个完整的700M的整包进行覆盖安装。而常规的APK更新,是可以只打出一个十几兆的APK进行覆盖安装,资源文件都不需要重新下载。所以将来大版本更新,《剑荡八荒》的渠道推送成本也会很高。

  4. 最后还要说明的一点就是,《剑荡八荒》的客户端更新还做了一个叫做“更新回滚”的操作,也就是从高版本回到低版本。这其实是很典型的程序员做产品的思维。“回滚”一般常见于版本管理工具,如svn、git等;作为一个正式发布的产品,其实是不太可能用到“回滚”这种操作的。因为即便真的需要回滚一些代码或配置表,也只是回滚这部分文件,不会将所有文件进行整体回滚的,而最简单的做法,就只需要再做一次更新就好了。

results matching ""

    No results matching ""