首页 > 其他分享 >热更新后日谈——多渠道安卓热更

热更新后日谈——多渠道安卓热更

时间:2023-07-27 11:00:12浏览次数:37  
标签:ver 代码 更新 渠道 UI 打包 安卓热 多渠道 channel

之前写了 CocosCreator 下的热更。 CocosCreator 3.7.x 一步步给你的项目增加热更新 - bakabird1998 - 博客园 (cnblogs.com)

 

在某家 养恐龙游戏 公司当主程的时候也研究过当时项目中,前人实现的热更相关逻辑。

在原生平台采取的是,游戏打包成H5网页,然后 Android/IOS 包通过打开某个网页的方式来进入游戏。(*1)

另外给 配置和UI 实现一套热更逻辑,打包时将 配置和UI 打包成 zip,并生成对应的 manifest 文件。这套配置和UI的热更,在原生和小游戏平台都能使用,非常方便。

为了方便开发使用,前人在项目中制作了 傻瓜式的批处理执行文件,通过 ver make | ver list | ver publish 等一系列命令来完成 热更打包、版本管理、发布。

但这个工具很难拓展,这使得我在后续的业务中碰到了一个问题。

 

在后续的业务中,我需要在多个应用商店平台分别上架游戏,接入对应平台的SDK。

因为之前项目没有上架任何应用商店平台,只是通过广告下载的方式来分发应用。也就是只有一个渠道的安卓包需要维护。

等到上架多个应用商店之后,我发现因为 前面提到的 热更逻辑(*1) —— 每次热更,所有渠道包都会受影响。

这很麻烦。

 

开发不便

在开发过程中,为了适配不同渠道\不同包版本,需要增加相当数量的 判断代码 和 适配逻辑

var channel = Plat.inst.channel;

var pkVersion = Plat.inst.packageVersion;

if (channel == Channel.vivo) {

  if (pkVersion >= 3) {

    JSBKit.me.playTemplateAd(...);

  } else {

    console.warn("该包版本不支持模板广告")

  }
} else if (channel == Channel.mi) {

  // ......

}

// ......

 测试不便

在进行发布前测试时,因为即将发布的代码会在所有渠道的包上运行。就算我们的代码只是针对某个渠道,那我们也得测试所有渠道的包。

影响玩家使用体验

玩家可能单纯因为其它渠道的包有功能需要热更,在启动时就需要花费时间等待热更。

维护不便

意外总是会发生,一旦代码没写好,针对某一渠道的代码更新一旦“溢出”到其它渠道中,那爆发潜在问题的就是 n-1 数量的渠道 (n 为 总渠道数量)。颇有些“低收益高风险”。

 

总结

对于 不同的渠道 的安卓包,最好使用 不同的热更远程地址。

标签:ver,代码,更新,渠道,UI,打包,安卓热,多渠道,channel
From: https://www.cnblogs.com/bakabird/p/channelAndHotfix_talk.html

相关文章

  • poj 2886 Who Gets the Most Candies? (线段树单点更新应用)
                           poj2886WhoGetstheMostCandies?DescriptionNchildrenaresittinginacircletoplayagame.Thechildrenarenumberedfrom1toNinclockwiseorder.Eachofthemhasacardwithanon-zerointegeronit......
  • uva 12299 RMQ with Shifts(线段树单点更新初步应用)
                                 uva12299RMQwithShiftsInthetraditionalRMQ(RangeMinimumQuery)problem,wehaveastaticarrayA.Thenforeachquery(L,R)(LR),wereporttheminimumvalueamongA[L],A[L+1],...,A[R].N......
  • 更新合集 | 七月功能上新记
    点击链接了解详情七月来临,正式开启2023下半年的新征途!这个盛夏,腾讯云CODING上线了微信扫码注册、微信通知、Go制品管理等重点能力,为企业及团队研发管理带来更多便利!以下是CODING新功能速递,快来看看是否有您期待已久的功能特性:01支持微信扫码注册除原有邮箱注册方式以外......
  • kafka rebalance 总结(更新中)
    KAFKA2.3 以后,consumer分为dynamic和static,以是否设置了group.instance.id属性区分。以默认的consumer为例,即dynamicconsumer,以下图描述其正常的生命周期:依赖FindCoordinator,JoinGroup,SyncGroup,Heatbeat,LeaveGroup等接口,kafkaconsumer 和broker联合......
  • 我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新
    什么是rest-api-spring-boot-starterrest-api-spring-boot-starter适用于SpringBootWebAPI快速构建让开发人员快速构建统一规范的业务RestFullAPI不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。动机每次WebAPI常用功能都需要重新写一遍。或者复制之前的项目代码......
  • 一条命令突破Windows限制,暂定更新时间至3000天
    在系统界面上最长也就只能延期35天,而且35天以后一定要更新了才能继续暂停。不过,我找到了一段能延长暂停时间的代码regadd“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings”/vFlightSettingsMaxPauseDays/treg_dword/d3000/f这段代码的含义:r......
  • 【持续更新】C/C++ 踩坑记录(一)
    未定义行为之NULLdereference下面这段代码中is_valid()解引用了空指针str,我们的直觉是编译运行后将迎来SIGSEGV,然而事情并非所期望的那样。/**ub_null.c-未定义行为演示之NULLdereference*/#include<stdio.h>#include<string.h>intis_valid(constchar*......
  • mysql 两表关联更新
    在实际情况下,其中一张表里的数据没有赋值到关联表中,可以使用下面的关联方式进行更新 把b表的name给a表的nameUPDATEtable_aaLEFTJOINtable_bbONp.id=a.uidSETa.name=b.nameWHEREa.name!='' ......
  • FeignClient 动态获取nacos中的配置,线上更改后能热更新
    1.设置nacos变量在一个类中@Component@RefreshScope@ConfigurationProperties(prefix="testC")publicclassSupplierInfoRakuten{privateStringversion;publicStringgetVersion(){returnversion;}publicvoidsetVersion(Str......
  • 【更新公告】Airtest更新至1.3.0.1版本
    1.前言本次更新为Airtest库更新,版本提升至1.3.0.1版本,主要新增了一些iOS设备相关的装包等接口,以及封装了一些tidevice常用接口。更多更新详情,详见我们下文的描述。2.新增iOS设备接口1)iOS安装接口:install、install_app对于本地USB连接的iOS设备,新版本支持装包功能:#可以直......