整包和增量包的区别魅族

整包和增量包的区别魅族,第1张

整包是一个完整的系统升级包,而增量包则只是更新一些文件。

根据八分网资料显示,整包是指完整的系统升级包,包含了完整的系统镜像,可以覆盖手机的所有分区,而增量包是指仅包含了升级的部分文件的升级包,它只更新已有的文件,不会修改系统的其他部分。

如果想要彻底升级系统,或者系统出现了严重问题,建议使用整包升级。如果只想升级一些文件,或者不想清除数据,建议使用增量包升级。

最近在给项目做增量打包的功能,之前也有其他项目碰到增量打包差异过大的问题。

这里记录分享下做法与思考过程,主要解决以下两个问题:

首先AssetBundle打包可以概括把给定的资源打成一个或多个AssetBundle。每个AssetBundle包含一个或多个资源,AssetBundle之间存在依赖关系,具体的打包规则应该是每个项目根据资源进行配置的。

第一次全包,相当于给所有的资源文件分配归属AB。第二次增量打包,不仅要对新增的文件分配归属AB,还要把已经删除的文件从AB里面移除,最后确定修改的AB文件列表。Unity 50以后的AB打包接口已经支持增量打包,直接使用就可以了。

增量包一致性是指我们在不修改任何资源的情况下,增量包与首包的一致性。正常的情况下如果不修改任何资源,两次打包出来的包应该保持一致。然而由于项目做了较多的预处理,最后发现差异非常大。

通过分析打包日志,发现项目在打包之前的预处理环节处理的资源不能保持一致性。包括CreateAsset,CreatePrefab,ReplacePrefab,SaveScene等行为。对于新创建的资源,由于guid发生变化会导致增量包不一致。对于Prefab和Scene资源,则是尽管Object并没有发生变化,但是Object与Object之间的顺序会发生变化,这也会导致增量包不一致。

最后问题就变成了解决预处理环节资源的一致性问题。

如果把所有预处理修改的资源都提交入库,这样应该就可以解决增量包一致性的问题了。但并不是所有的资源都能这样直接入库,而且自动化环节变手工环节还会有一些其他问题。 这里把修改后资源提交到一个其他库就避免了冲突问题。

然后修改预处理环节的逻辑为,如果资源修改了重新执行,如果资源无修改则直接拷贝库里文件。对于meta文件,则应该不过是否重新生成,都要复用避免guid不一致的问题。再设计一个全局开关来控制新的增量逻辑,如果预处理规则修改了,则可以全部重新生成。正常已经上线是不允许做这样大的改动,不过日常开发过程中修改预处理规则是很常见的,所以需要支持。

修改的资源相当于复制了一份,为了避免重新生成guid,这些资源应该放在Assets目录之外,对于生成出来的资源则没有这方面的限制。

在做完第一步,保持了原始资源的一致性后,增量打包这个事情可以算搞定了。由于资源没有发生变化,所以即使把所有资源都重新打一次包最后的结果也是一样的。不过既然是做增量打包,我们还是要考虑到整包的构建时间过长。所以这里要解决的问题就是打包时间优化。

首先,这里还是包含了两个环节,一个是资源预处理,另外个是资源打包。前面已经讨论过为了资源一致性,我们需要把资源保存下来,没有修改的资源不需要重新生成。这里为节省打包时间,其实做出了巨大贡献。在剖析打包时间的时候,发现ReplacePrefab,SaveScene这些Unity API调用占用了大量的时间。这里并没有多少办法可以优化这些API调用的时间,一个显而易见的好办法就是少调用几次。

对于如何获取修改的资源文件列表,可以通过svn,git等版本控制软件获取。在得到了文件修改列表之后,我们也知道了预处理环节中哪些资源是可以复用的,哪些资源是需要重新执行预处理的。在后面的打包环节也同样是利用这个资源差异列表来做增量。

打包环节的增量就是确定哪些包需要打,这里是根据差异列表计算出哪些AB需要打包。由于AB之间会有依赖关系,所以要递归算出最后需要打包的AB列表。然后根据AB打包列表按打包规则顺序进行打包即可。

资源一致性这个问题可能是大部分项目打包过程中会碰到的,因为Unity没有解决这个问题。这里通过自己保存资源以及维护资源修改列表来解决这个问题。顺便这个做法还能节省很多的构建时间,做增量预处理,一举两得。

其实是在思考过程中突然意识到其实是要做这样一件事情,想到后整个事情并不复杂。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/929682.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-17
下一篇2023-08-17

随机推荐

  • 完美玛丽艳的美白精华露用过的人说下效果如何…谢谢

    使用完美玛丽艳的美白精华露的人对其效果的反馈是正面的。有人认为使用后皮肤变得更加明亮透亮,斑点有所减轻,同时肌肤补水和滋润的效果也很好,皮肤变得更加柔软细嫩。另外,这款产品的质地轻盈易吸收,味道好闻,使用时感觉很愉悦。在价格方面,相比其他品

    2024-04-15
    44600
  • 有没有人听说过艾纳菲这个牌子的护肤品呢?套装的价格方面是多少钱呢?效果好么?对比起兰蔻产品那个好用

    你能买到艾纳菲品牌化妆品的地方,那里的服务人员就会告诉你药监局备案码告诉你怎么查,正规厂家产品至于价格方面,每个区域都不同对比兰蔻,没有可比性,兰蔻基础保养艾纳菲专业线,更有针对性,美白效果很好安全。艾纳菲护肤品是正规厂家的产品,定位比较高

    2024-04-15
    43300
  • 黑松露能使白发变黑吗 黑松露能治白发吗

    黑松露大家应该都不陌生,它是一种很珍贵的食材,其实有不少人应该都有吃过的,有着极高的营养价值,那么经常吃黑松露能使白发变黑吗?黑松露能使白发变黑吗不能,黑松露没有这个作用。黑松露含有的多糖、多肽、三萜具有增强免疫力、抗衰老、抗疲劳等

    2024-04-15
    36800
  • 大家眼中的眼霜排行榜前8强是哪几个呢?

    韩国眼霜怎么样?韩国的眼霜很不错,比如AHC、雪花秀、whoo等知名品牌都有很高的知名度。伊思红参眼霜含有21%蜗牛黏液和21%有机红参。它的黏液可以加强皮肤的屏障,将红参的皂甙成分输送到皮肤深层,进而增强皮肤的弹性,使白皙的皮肤重现。坚韧

    2024-04-15
    29800
  • 国外化妆品的生产日期怎么查?

    生产日期即是批号,以下是常见品牌的批号识别方法:1、欧莱雅:例如:FB263代表2005年第263天生产。F代表产地(法国),第二个字母是代表年份,A代表2004年,B代表2005年,C代表2006年,但没有Z,因为Z和2易相混。2、碧欧泉

    2024-04-15
    33900
  • 相宜本草紫芝套盒怎么样

    相宜本草紫芝套盒不错,相宜本草的紫芝系列是最高端的产品,紫芝系列蕴含珍贵的紫芝多糖、紫芝总碱以及稀有灵芝酸,能够带来较好紧致效果,相宜本草专注于中草药护肤品的开发,中药调理肤质肤色、标本兼治肌肤问题的产品,与上海中医药大学联合研发,已获得1

    2024-04-15
    33000
  • 神仙水和神仙露的区别

    很抱歉,我并不了解“神仙露”这种产品,因此无法直接对“神仙水”和“神仙露”进行比较。不过,我可以为您介绍一下“神仙水”。“神仙水”是大家对SK-II护肤精华露的爱称,尽管其官方命名为“神仙露”。这是一种精华水,主要成分是pitera酵母精华

    2024-04-15
    30000

发表评论

登录后才能评论
保存