如果你经常关注各大手机厂商的新品发布会,可能会知道在进入5G时代以来,大家都越来越喜欢在发布会上晒出下载速度了,而其中最典型的场景,就是下歌或下游戏。其实下歌很好理解,因为从3G时代开始,有些媒体就喜欢用“x秒钟下载一首mp3”来度量网速的快慢,但在发布会现场下游戏,这可能就是5G时代的“专利”了。为什么会是下游戏?一方面来说,这是因为当今手游的影响力确实很大,“游戏下得快”能够打动很多潜在消费者;另一方面来说,则是因为当今的手游安装包体积是真的大。《和平精英》1.8GB,《王者荣耀》1.8GB,《一人之下》2GB,《完美世界》3GB……虽然当前手机游戏还没有“猖獗”到像电脑上3A大作那种动辄100GB安装包的等级,但对于大多数用户的网络状况与机身存储空间来说,无疑都还依然还是个不小的考验。
为什么智能手机上的游戏安装包体积会这么大?很显然,手游本身的兴盛、再加上近年来智能手机性能的突飞猛进,的确给了游戏厂商把手游“做大做强”的底气。但除此之外,其实还有一点原因可能是很多朋友还没有意识到的,那就是在主流的手机游戏中,常常存在着大量并不被我们所需要的冗余文件。比如说,有些海外游戏大厂出品的手游,常常会支持多个可选的语言。而这就意味着游戏安装包中需要同时准备好几组语言文件,甚至可能需要在某些场景设计好几组不同的贴图。又比如说,大家都知道安卓手机现在的屏幕分辨率是“千奇百怪”。那么对于有追求,希望在不同设备上画面都能一样清晰的游戏(特别是2D游戏)开发者来说,就需要为不同的屏幕尺寸和分辨率(也就是不同的像素密度),适配多个不同的图像资源文件。除此之外,可能有些安卓老用户知道,实际上Adreno(高通)、Mali(ARM)、PowerVR(Imagination)三家主流移动GPU在所支持的图像格式与画面效果等方面,都存在着不小的差异。这不仅意味着同一个游戏在不同设备上会有不同的画面表现,同时也意味着如果要适配不同的硬件,开发者也需要准备好几分不同格式的游戏文件包。如此一来,对于任何一位特定的用户来说,他所下载的游戏安装包里都可能含有自己所完全不需要的语言文件、贴图文件、特效代码等等。这些文件自然“撑”大了安装包,也造成了用户流量、存储空间,以及下载时间上的浪费。
那么,如何解决这一问题呢,是让开发商直接针对不同分辨率、不同处理器的设备单独出一系列安装包吗?这显然不是个好主意。且不说很多用户未必能分清自己的设备到底屏幕DPI是多少、到底使用的是何种GPU架构,光是如何在应用商店分发就会是个令人头大的麻烦。
好在作为安卓生态的领导者,谷歌也注意到了相同的问题。这就是为什么,他们如今要大力推广App Bundle应用打包格式的原因。与传统应用商店“开发者上传什么、消费者就下载什么”的模式不同,App Bundle技术允许开发者在上传应用时直接准备一个兼容全部语言、分辨率、硬件规格的“超级安装包”,以减少他们的工作量。然后当消费者下载APP的时候,手机上的Google Play服务和Google Play Store应用商店,就会根据当前手机实际的语言、分辨率和芯片型号,动态的从这个“高大全”的安装包里只提取这位消费者需要的那部分提供给他。如此一来,游戏的安装包大小便得以大大的“瘦身”,下载和安装的速度自然也就都变快了。不仅如此,App Bundle技术甚至还能更精准的将游戏按照章节进行分块下载,比如说游戏可以一开始只下载第一章的内容,然后当开玩之后,Play Store再自动的在后台下载剩余的数据。这样一来,游戏从“点击下载”到真正开始游玩的时间差又可以进一步缩短,用户体验自然也就更好了。
讲了这么多好处,有的朋友可能会说了,这Google的App Bundle技术再好,我们平时又不可能用上,你赶紧说个缺点让我死心吧!你还别说,App Bundle其实同样也有缺点。它最大的问题就在于,以这种机制下载下来的应用,必定是针对当前这台手机“高度优化”的,因此这也就导致下载下来的安装包很难被直接分享给他人安装(因为不兼容的概率超大)。除此之外,这也会对那些刚刚买了新手机,希望通过“换机程序”,直接把旧设备上数据导入到新手机上的用户造成麻烦。因为新旧设备之间的系统版本、硬件配置、屏幕分辨率可能都不相同,通过App Bundle技术下载的游戏导入新手机后,不能正常运行的概率反而会大大增加。因此从这一点来说,App Bundle其实带给消费者的也并不完全是方便了。
即便苹果开始在Mac系列上尝试ARM架构处理器,显然只会徐徐图之。
随着SuperVOOC 2.0超级闪充的普及,或许意味着65W快充将会迎来更新。