为什么不建议复制安装好App或更新好游戏的模拟器?
产品介绍
之前讲了如何测试自己的多开模拟器是否纯净,里面提到了这个东西,但是没有很详细的讲,那么本文将再仔细分析一下为什么不建议复制这个问题。
往期内容:
下面我们就从系统层面再到应用自身,剖析一下:
常见情况1:要安装的东西一大堆,还有软件需要提前设置好,我就想先装好一个当“母盘”再复制这个母盘
通过上一期内容我们可以得知:模拟器只要启动过,那么系统底层就会生成一些设备信息缓存数据,某些app就会读取到这些缓存数据来当做设备码,从而判定你是多开/同一个环境,所以即使你安装了应用,但是不打开应用,只是应用不会产生数据缓存,系统缓存依然存在。那为什么网站的环境备份包又不会重复?因为在打包之前已经处理过这些系统缓存数据了,所以不会存在有这些数据。所以定制的时候,我都说,像脚本等工具类的可以提前设置好,但是应用那些,就只安装,但是不启动了,不会让他产生数据缓存。那还有的人想的是,我定制一个纯净的,但是要把游戏先启动更新好,因为更新太大了,下一个情况就是:
常见情况2:游戏更新数据太大、挂的ip更新太慢,可不可以更新好然后复制?
这种情况呢没有绝对的,只是比较考验技术,为什么呢?因为系统底层环境数据可以清理掉,是因为他不会瞎更新,也不是专门缓存用来检测你的,只需要大量测试好,就可以清理掉,并且让他再下次启动的时候和新建的一样自己重新生成。那游戏为什么不建议呢?因为首先,游戏对你的设备信息甚至是网络(有的人用本地网更新)的缓存,他不一定给你找得到,而且就算你找到了,可能也是加密的,或者和更新串联起来的。举个例子,游戏不需要更新的配置,和设备信息的缓存是放在一起的,并且如果读取不到设备的缓存,他就认为这是新设备新安装,就要检查更新,如果你清掉了设备信息缓存,那游戏即使你已经更新好了,它还是要强制再更新的,因为缓存被删掉了。有的游戏可能这些缓存并不绑定,这种主要是看开发者的写法,正常来说为了避免bug,严谨的程序员都会在没有完整缓存的情况下强制重新更新。找这些数据就很费劲,因为每个游戏每个应用不一样,需要花大量时间去找,他可能放在任何地方的缓存,然后还要进行大量的测试,才能得出结果,但是如果稍微有漏掉一处,就可能引起严重的后果,所以一般是不建议提前在母盘更新好的。如果游戏的缓存没清干净,光清干净系统的,也不太行啊,而游戏的缓存可能又和更新文件是绑定的,清掉设备缓存他可能就得强制重新更新。
解决办法:
对于不需要更新游戏的用户:
可以提前安装,但是不启动,其他的工具可以设置好,环境可以装好,然后定制纯净的系统环境备份包即可。
对于需要更新游戏的用户:
在完全严谨的情况下,那肯定是不建议提前更新的,但是如果你感觉你的游戏查的不是很严格,只是你想做得纯净一点,那么可以尝试清理游戏的设备缓存但是保留更新文件。如果查的比较严格的,目前暂时没有比较完美的方法,只暂时想到一个办法,就是技术难度比较高:使用软路由将游戏更新的固定资源文件映射到本地局域网,这样大文件就走本地网更新,而其他的数据交换还是走公网,就可以避免走本地网更新被检测到ip,但是这种方案我只有提出来,其他的需要靠你自己技术去实现了,不然还是老老实实更新吧。
顺带一提:
包括雷电在内的大部分模拟器,直接复制是会将设备参数(IMEI、机型等)全部重新随机的,跟新建一样,只是如果你已经启动过这个模拟器生成了缓存,即使重新随机了参数也没用,因为缓存只会在第一次启动的时候生成。如果你的母盘不含任何设备信息缓存,复制之后外部的参数全部重新随机了,内部又没有参数信息,所以也跟新建的没有区别。






