CN110764791B - 小程序的渠道适配方法、装置及电子设备 - Google Patents

小程序的渠道适配方法、装置及电子设备 Download PDF

Info

Publication number
CN110764791B
CN110764791B CN201911025131.4A CN201911025131A CN110764791B CN 110764791 B CN110764791 B CN 110764791B CN 201911025131 A CN201911025131 A CN 201911025131A CN 110764791 B CN110764791 B CN 110764791B
Authority
CN
China
Prior art keywords
channel
target
applet
code
adaptation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911025131.4A
Other languages
English (en)
Other versions
CN110764791A (zh
Inventor
陈海宾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201911025131.4A priority Critical patent/CN110764791B/zh
Publication of CN110764791A publication Critical patent/CN110764791A/zh
Application granted granted Critical
Publication of CN110764791B publication Critical patent/CN110764791B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种小程序的渠道适配方法、装置及电子设备,方法包括:响应针对于用户交互界面上的渠道选取操作,基于渠道选取操作确定目标小程序当前欲适配的目标渠道;用户交互界面上提供有多个待选渠道;从渠道基本配置目录中获取通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件;基于目标小程序的逻辑代码、目标适配器、目标配置文件、目标小程序的基础资源和通用接口适配代码,执行预设的打包流程,生成目标小程序对应目标渠道的渠道运行包体;其中,渠道运行包体包含目标小程序的逻辑代码、目标适配器和通用接口适配代码。本申请可以快速地生成小程序针对每个渠道的渠道运行包体,以提高小程序适配多个渠道的效率。

Description

小程序的渠道适配方法、装置及电子设备
技术领域
本申请涉及计算机软件技术领域,尤其是涉及一种小程序的渠道适配方法、装置及电子设备。
背景技术
自微信小程序(如小游戏)平台(即渠道)推广后,各小程序平台如雨后春笋,如facebook、头条、百度等,每个小程序平台所拥有的独特的用户群体,是各大游戏互相争抢的主要资源。而现实中,每个小程序平台都会有自己的一套小程序运行环境,包括声音系统,文件系统,字体以及html5运行环境等,因此每个小程序如何能够对接所有的这些平台,成为目前急需解决的问题。
目前IDE(Integrated Development Environment,集成开发环境)可以提供创建部分渠道的项目的功能,一旦项目创建好后,可以生成对应渠道的发布资源,即单一渠道的发布资源。而IDE生成的发布资源(代码和所有资源集合)不能直接被渠道使用,只能以原始的文件夹的方式输出,该方式无法提供生成渠道可直接运行的包体的功能。另外,目前只有少数几个渠道可以利用其他渠道的项目制作对应的插件,以生成该渠道对应的发布资源,同样该发布资源是无法直接被渠道使用的。
发明内容
本申请的目的在于提供现提供一种小程序的渠道适配方法、装置及电子设备,以缓解现有技术中无法使每个小程序快速地生成适配各个渠道的运行包体的技术问题。
本申请提供的一种小程序的渠道适配方法,该方法应用于配置有用户交互界面的服务器,且服务器配置有多个待选渠道中每个渠道对应的渠道基本配置目录,渠道基本配置目录包含通用接口适配代码,以及与渠道对应的适配器和配置文件;适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成小程序与渠道的SDK接口适配;方法包括:
响应针对于用户交互界面上的渠道选取操作,基于渠道选取操作确定目标小程序当前欲适配的目标渠道;用户交互界面上提供有多个待选渠道;
从渠道基本配置目录中获取通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件;
基于目标小程序的逻辑代码、目标适配器、目标配置文件、目标小程序的基础资源和通用接口适配代码,执行预设的打包流程,生成目标小程序对应目标渠道的渠道运行包体;其中,渠道运行包体包含目标小程序的逻辑代码、目标适配器和通用接口适配代码。
进一步的,上述响应针对于用户交互界面上的渠道选取操作,基于渠道选取操作确定目标小程序当前欲适配的目标渠道的步骤,包括:
响应针对于用户交互界面上的渠道标识选取操作,将渠道标识选取操作对应的渠道确定为目标小程序当前欲适配的目标渠道。
进一步的,上述方法还包括:
响应针对于用户交互界面上的渠道参数选取操作,将渠道参数选取操作对应的渠道参数确定为目标渠道的参数;渠道参数包括以下参数中的至少一个:语言版本参数、发布类型参数和版本信息参数。
进一步的,上述预设的打包流程包括:
将目标小程序的逻辑代码和基础资源加载至预设的工程目录的打包指定存储区;
基于目标渠道的语言版本参数设置资源目录,并在工程目录中的指定文件中嵌入与目标渠道对应的目标适配器;
基于资源目录进行UI工程配置和纹理合图操作;
基于加载的逻辑代码、基础资源和通用接口适配代码进行编译操作;
基于编译得到的代码及合图操作后的纹理进行代码合并及版本化纹理资源操作;
对代码合并及版本化纹理资源操作得到的纹理资源进行压缩操作;
基于目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体。
进一步的,上述基于目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体的步骤,包括:
获取目标渠道的配置文件;
根据配置文件中的指定参数,判断目标小程序对应的基础资源是否存放于内容发布网络CDN上;
如果是,将目标小程序对应的基础资源存放于CDN上;
基于目标配置文件和编译后的代码进行打包,得到渠道运行包体。
进一步的,上述基于目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体的步骤,包括:
确定目标渠道的发布类型参数和版本信息参数;
根据发布类型参数和版本信息参数指定的方式,将目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体。
进一步的,上述渠道基本配置目录还包括:渠道对应的最小渠道包所需要的预设代码文件和预设配置文件;
生成目标小程序对应目标渠道的渠道运行包体的步骤,还包括:
从执行预设的打包流程后生成的各文件中,查找与目标渠道对应的渠道基本配置目录对应的代码文件和配置文件;
对代码文件和配置文件进行打包,得到目标小程序对应目标渠道的渠道运行包体。
本申请实施例还提供一种小程序的渠道适配方法,该方法应用于用户终端;用户终端上安装有目标渠道;目标渠道上加载有对应的渠道运行包体,渠道运行包体包括目标小程序的逻辑代码和通用接口适配代码、目标渠道对应的目标适配器;目标适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成与目标渠道的SDK接口的适配;方法包括:
基于渠道运行包体启动目标小程序时,通过目标适配器,触发生成目标渠道对应的window对象属性;
根据window对象属性,调用目标渠道对应的目标适配器,以使目标小程序与目标渠道的运行环境适配;
运行通用接口适配代码,以通过SDK的工厂方法模式确定与目标渠道对应的拓展SDK接口,实现目标小程序的逻辑代码与目标渠道对应的SDK接口适配,运行目标小程序。
进一步的,上述通过渠道运行包体中的目标适配器,触发生成目标渠道对应的window对象属性的步骤,包括:
在目标适配器的初始化过程中,将目标适配器的属性赋值于window对象,生成目标渠道对应的window对象属性。
进一步的,上述根据window对象属性,调用目标渠道对应的目标适配器的步骤,包括:
根据window对象属性,识别目标渠道对应的渠道类型,调用渠道类型对应的目标适配器。
进一步的,上述通过SDK的工厂方法模式确定与目标渠道对应的拓展SDK接口,实现目标小程序的逻辑代码与目标渠道对应的SDK接口适配的步骤,包括:
获取目标渠道的目标配置文件;
根据目标配置文件中的渠道标识,识别目标渠道的渠道类型;
以工厂方法模式的形式创建渠道类型对应的拓展SDK对象;拓展SDK对象用于实现目标小程序的逻辑代码与目标渠道的SDK接口的适配。
进一步的,方法还包括:
获取目标小程序的基础资源的版本信息;
根据版本信息,访问对应的基础资源文件。
本申请实施例还提供一种小程序的渠道适配装置,该装置应用于配置有用户交互界面的服务器,且服务器配置有多个待选渠道中每个渠道对应的渠道基本配置目录,渠道基本配置目录包含通用接口适配代码,以及与渠道对应的适配器和配置文件;适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成小程序与渠道的SDK接口适配;装置包括:
渠道确定模块,用于响应针对于用户交互界面上的渠道选取操作,基于渠道选取操作确定目标小程序当前欲适配的目标渠道;用户交互界面上提供有多个待选渠道;
信息获取模块,用于从渠道基本配置目录中获取通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件;
打包模块,用于基于目标小程序的逻辑代码、目标适配器、目标配置文件、目标小程序的基础资源和通用接口适配代码,执行预设的打包流程,生成目标小程序对应目标渠道的渠道运行包体;其中,渠道运行包体包含目标小程序的逻辑代码、目标适配器和通用接口适配代码。
本申请实施例还提供一种小程序的渠道适配装置,装置应用于用户终端;用户终端上安装有目标渠道;目标渠道上加载有对应的渠道运行包体,渠道运行包体包括目标小程序的逻辑代码和通用接口适配代码、目标渠道对应的目标适配器;目标适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成与目标渠道的SDK接口的适配;装置包括:
对象属性生成模块,用于基于渠道运行包体启动目标小程序时,通过目标适配器,触发生成目标渠道对应的window对象属性;
运行环境适配模块,用于根据window对象属性,调用目标渠道对应的目标适配器,以使目标小程序与目标渠道的运行环境适配;
接口适配模块,用于运行通用接口适配代码,以通过SDK的工厂方法模式确定与目标渠道对应的拓展SDK接口,实现目标小程序的逻辑代码与目标渠道对应的SDK接口适配,运行目标小程序。
本申请实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述方法。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述方法。
本申请提供的小程序的渠道适配方法,可应用于配置有用户交互界面的服务器,且服务器配置有多个待选渠道中每个渠道对应的渠道基本配置目录,渠道基本配置目录包含通用接口适配代码,以及与渠道对应的适配器和配置文件;适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成小程序与渠道的SDK接口适配;在具体实施时,上述用户交互界面上提供有多个待选渠道,服务器首先响应针对于用户交互界面上的渠道选取操作,基于渠道选取操作确定目标小程序当前欲适配的目标渠道;然后从上述渠道基本配置目录中获取通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件;最后基于目标小程序的逻辑代码、目标适配器、目标配置文件、目标小程序的基础资源和通用接口适配代码,执行预设的打包流程,生成目标小程序对应目标渠道的渠道运行包体;其中,渠道运行包体包含目标小程序的逻辑代码、目标适配器和通用接口适配代码。相比于现有的针对每个渠道制作不同的插件以实现渠道适配的方式,本申请所提供的方法可以利用加载通用接口适配代码和渠道对应的适配器的方式,快速地生成小程序针对每个渠道的渠道运行包体,以提高小程序适配多个渠道的效率。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种小程序的渠道适配方法的流程图;
图2为本申请实施例提供的一种小程序的渠道适配方法中打包流程的流程图;
图3为本申请实施例提供的一种小程序的渠道适配方法中工程目录的示意图;
图4为本申请实施例提供的一种小程序的渠道适配方法中多语言资源目录的示意图;
图5为本申请实施例提供的一种小程序的渠道适配方法中渠道基本配置目录的示意图;
图6为本申请实施例提供的一种小程序的渠道适配方法中另一种打包流程的流程图;
图7为本申请实施例提供的一种小程序的渠道适配方法中配置文件及渠道类型的示意图;
图8为本申请实施例提供的一种小程序的渠道适配方法中用户交互界面的示意图;
图9为本申请实施例提供的一种小程序的渠道适配方法的流程图;
图10为本申请实施例提供的另一种小程序的渠道适配方法的流程图;
图11为本申请实施例提供的另一种小程序的渠道适配方法中接口适配的流程图;
图12为本申请实施例提供的一种小程序的渠道适配装置的结构示意图;
图13为本申请实施例提供的另一种小程序的渠道适配装置的结构示意图;
图14为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合实施例对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
由于不同的渠道其打包的方式和工具不一样,IDE通过插件的形式提供可视化的流程,不同的渠道,对应会有不同的插件,现有技术中的渠道运行包体的打包方式是针对每种渠道,分别制作不同的插件,以达到运行环境和接口的适配,其工作量非常大,一个项目只用于打包一个渠道的包体,无法使每个小程序快速地适配各个渠道。
基于此,本申请实施例提供一种小程序的渠道适配方法、装置及电子设备,能够利用加载通用接口适配代码和渠道对应的适配器的方式,快速地生成小程序针对每个渠道的渠道运行包体,以提高小程序适配多个渠道的效率。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种小程序的渠道适配方法进行详细介绍。
图1示出了本申请实施例提供的一种小程序的渠道适配方法的流程图,该方法应用于配置有用户交互界面的服务器,且该服务器中配置有多个待选渠道中每个渠道对应的渠道基本配置目录,渠道基本配置目录包含通用接口适配代码,以及与渠道对应的适配器和配置文件;其中,适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK(Software Develpment Kit,软件开发工具包)的工厂方法模式,完成小程序与渠道的SDK接口适配;
本申请实施例是基于特定引擎(Laya引擎)做的开发,引擎中使用的环境一般都是浏览器环境,该环境与渠道的运行环境并不相同,比如微信会有自己的声音系统,文件系统,文字和图片等等。如果要让小程序在微信中运行起来,则底层使用的环境一定是微信自定义的模块集合。因此需要在运行时将引擎实际使用的环境替换成渠道自己的环境。渠道SDK提供了实际的运行环境,将引擎运行环境替换成渠道运行环境的程序在本申请中被描述成上述适配器。上述小程序的渠道适配方法方法包括以下步骤:
步骤S102,响应针对于用户交互界面上的渠道选取操作,基于渠道选取操作确定目标小程序当前欲适配的目标渠道。
具体实施时,上述用户交互界面上可以提供有多个待选渠道,比如:facebook、微信、头条等等多个待选渠道,用户可以根据小程序的实际应用需求,在用户交互界面上进行渠道选取操作,进而使服务器根据用户的操作来确定出目标小程序当前想要适配的目标渠道。
步骤S104,从渠道基本配置目录中获取通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件。
渠道基本配置目录中预先存储有用于完成小程序与渠道的SDK接口适配的代码,这种代码可以使小程序与不同的渠道的SDK接口进行适配,具体的实现过程通过SDK的工厂方法模式来实现。此外,渠道基本配置目录中还预先存储有渠道对应的适配器和配置文件,该适配器可以将引擎运行环境替换为渠道运行环境,从而实现小程序与渠道运行环境的适配过程。本步骤中,针对确定的目标渠道,进一步从渠道基本配置目录中提取出通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件。
步骤S106,基于目标小程序的逻辑代码、目标适配器、目标配置文件、目标小程序的基础资源和通用接口适配代码,执行预设的打包流程,生成目标小程序对应目标渠道的渠道运行包体。
在获取通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件后,再结合目标小程序的逻辑代码和基础资源,进行一个打包流程,从而生成目标小程序对应目标渠道的渠道运行包体。该打包流程可以通过预先设计的流程工具来实现,最终的渠道运行包体包含目标小程序的逻辑代码、目标适配器和通用接口适配代码,当然,在不同的打包需求下,渠道运行包体中还可以包括目标小程序的基础资源。
本申请实施例提供的小程序的渠道适配方法,相比于现有的针对每个渠道制作不同的插件以实现渠道适配的方式,可在用户交互界面上选择任意需要适配的目标渠道,并通过服务器中配置的多个待选渠道中每个渠道对应的渠道基本配置目录的通用接口适配代码,以及与渠道对应的适配器和配置文件,结合目标小程序的逻辑代码和基础资源,快速生成目标渠道对应的渠道运行包体,而该渠道运行包体中包括有目标适配器和通用接口适配代码,可以实现小程序与渠道运行环境的适配及与渠道的SDK接口适配。本申请实施例所提供的方法可以利用加载通用接口适配代码和渠道对应的适配器的方式,快速地生成小程序针对每个渠道的渠道运行包体,以提高小程序适配多个渠道的效率。
上述用户交互界面中设置有多个渠道选取选项,可以以下拉菜单形式实现,也可以是图标陈列方式实现,上述基于渠道选取操作确定目标小程序当前欲适配的目标渠道的具体实现过程为:服务器响应针对于用户交互界面上的渠道标识选取操作,将渠道标识选取操作对应的渠道确定为目标小程序当前欲适配的目标渠道。其中,渠道标识可以是文字、字母或者其它可以区别渠道的标识信息。
此外,上述用户交互界面中除了提供用户的渠道选取选项外,还可以提供一些渠道参数的选择项,渠道参数可以包括以下参数中的至少一个:语言版本参数、发布类型参数和版本信息参数。因此,作为一种优选的实施方式,本申请实施例还可以实现渠道参数的选取过程,即,服务器响应针对于用户交互界面上的渠道参数选取操作,将渠道参数选取操作对应的渠道参数确定为目标渠道的参数,以使服务器基于不同的渠道参数进行渠道运行包体的打包过程。
需要说明的是,如果用户只进行了渠道标识选取操作,那么可以利用渠道的默认参数来实现打包的过程。也就是说,渠道参数可以是用户在用户交互界面上实时选择的参数,也可以是用户交互界面上默认的参数。
在一种优选的实施方式中,上述预设的打包流程包括以下步骤,参见图2所示:
步骤S202,将目标小程序的逻辑代码和基础资源加载至预设的工程目录的打包指定存储区。
目标小程序的逻辑代码为每个小程序特有的代码,比如,小游戏的游戏逻辑代码。基础资源为代码之外的一切文件,如音频,图片,动画,字体,UI工程,配置表等。每次修改了目标小程序的逻辑代码和基础资源时,都需要对其进行打包操作。首先将目标小程序的逻辑代码和基础资源加载至预设的打包指定存储区,比如:将目标小程序的逻辑代码存入工程目录结构(如图3所示)中的src目录,将目标小程序的基础资源存入工程目录结构中的laya和laya_en目录。图3中,laya、laya_en为资源目录,src为代码目录,channels为渠道配置目录,pack为打包程序目录,release为打包输出目录,对于非第一次打包的流程来说,还会清空上一次打包过程的中间产物,即release打包输出目录中的内容。
步骤S204,基于目标渠道的语言版本参数设置资源目录,并在工程目录中的指定文件中嵌入与目标渠道对应的目标适配器。
本实施例提供的设置资源目录过程,不仅支持多种渠道,还可以支持多种语言。如图4所示,为多语言资源目录,其中,laya_en为英文长文本格式资源目录,laya目录为中文短文本格式目录,现有的Laya引擎提供的工具只能指定laya目录为资源目录,而本实施例中通过修改工具,使得资源目录可以指定;assets为图片纹理,声音动画字体等目录,pages为UI(User Interface,用户界面)工程目录,UI工程目录的文件会引用asset中的资源;中文资源目录中,将带有文字的繁体图片资源和字体放到assets_fanti目录中(这些纹理和字体在assets中存在同目录同文件名文件,只是assets中对应为简体中文纹理和字体),如果是打繁体包时,会将assets_fanti目录中的资源覆盖assets中的资源,将assets变成繁体资源版本。打包完成时再通过版本控制工具revert命令恢复assets为中文版本资源。
此步骤中,还会在渠道基本配置目录中的指定文件index.html中嵌入目标适配器,该目标适配器的嵌入可以实现小程序运行时与目标渠道的运行环境适配。index.html引用了所有的程序资源,后面编译发布时会将其引用的所有代码合并成一个代码文件code.js。
步骤S206,基于资源目录进行UI工程配置和纹理合图操作。
该步骤的输入为上一步骤的输出,即指定语言版本的资源目录,然后进行根据UI工程配置,利用pages中的UI文件生成uiLaout.json文件,该文件是描述了各个UI中View的属性和结构,程序在启动后会下载这个文件,读取各个View的结构和属性。需要提出来的是,部分ui View的属性和结构会生成到代码layaUI.max.all.js中,该文件同样被index.html引用,主要是考虑一些基础的页面,比如登录,只要代码下过来,就可以运行,不至于出现因为CDN故障导致uiLayout下载不了而出现黑屏的情况。View的结构和属性到底是生成在代码还是生成在uiLayout.json文件中,可以通过UI工程配置文件制定(laya/pageStyles.xml),其输出为bin/uiLayout.json以及src/ui/layaUI.max.all.ts,后面编译才会生成bin/js/layaUI.max.all.js。
该步骤中,还会将assets中的纹理以文件夹为单位,合并大图。合并大图可以理解成将文件夹下的所有图片资源拼在一张大的图片中,可以通过纹理的uv去访问具体的小图片。这样做的目的是使得同一个ui中的图片控件可以引用同一张纹理,因为同一个UI工程一般是引用同一个目录中的图片。这样会增加引擎合批的概率(合批的条件是shader和引用的纹理相同),减少drawcall。其输出为bin/game目录,目录下的资源就是合过大图的纹理资源以及其他资源(其他资源直接从laya/assets中拷贝)。
步骤S208,基于加载的逻辑代码、基础资源和通用接口适配代码进行编译操作。
该步骤中,会将typescript代码,包括加载的逻辑代码、基础资源和通用接口适配代码,一起编译成javacript代码,输出js代码。这个过程中,对通用接口适配代码进行了编译,使得在后续目标小程序运行时,可以调用该代码,以实现目标小程序与目标渠道的SDK接口适配。
步骤S210,基于编译得到的代码及合图操作后的纹理进行代码合并及版本化纹理资源操作。
本步骤的输入为编译得到的代码及合图操作后的纹理,对输入内容进行代码合并及版本化纹理资源操作,如:将资源根据md5值版本化(名字+md5),将步骤S208所产生的所有js代码合并成code.js并进行混淆和压缩。
步骤S212,对代码合并及版本化纹理资源操作得到的纹理资源进行压缩操作。
该步骤中,进行图片资源压缩,这个过程为增量迭代过程,具体来说,只压缩有变化的纹理,因为资源根据其md5值进行了版本化,从文件名就可以判断资源是否更改过。压缩资源是一个耗时的过程,这样可以加快打包的速度。
步骤S214,基于目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体。
对上述一系列步骤流程后产生的代码、纹理资源及目标渠道对应的目标配置文件进行打包,得到目标小程序在目标渠道对应的渠道运行包体。
在一种优选的实施方式中,上述渠道基本配置目录除了包含通用接口适配代码,以及与渠道对应的适配器和配置文件外,还设置了该渠道运行包体的最小渠道包所需要的代码和配置文件,比如,以facebook渠道为例如图5所示,渠道基本配置目录mini_file.lst中fbapp-config.json,game.json,index.html为渠道要求的基础文件,gameConfig.json为上述目标配置文件,code.js为游戏代码,该代码已经集成了目标适配器,unisdk代码为公司统一与计费交互的接口实现。渠道基本配置目录中存放了一些渠道相关的静态配置文件,如fbapp-config.json,game.json,index.html,gameConfig.json,因为公司unisdk-facebook也可以当成是静态资源,因此该代码也可以放在这个目录。而code.js是编译发布过程生成的代码,存在于编译发布的生成目录中。
在打包时,可以根据上述渠道基本配置目录mini_file.list找到最小包体所需要的代码配置文件集合,文件查找的顺序为:渠道配置目录、渠道配置目录config、publishout目录。然后基于上述码配置文件集合和基础资源打包成渠道运行包体。这种方式可以减少渠道运行包体的内存大小,更容易满足各种渠道的硬件需求。
由于现有的打包方式缺乏资源部署策略,大部分平台或渠道要求包体不超过4M或者8M,所以资源一般会放到CDN上进行托管,因此完整的打包机制还需要对资源进行打包,其次海外的一些平台如facebook包体限制为200M,这个空间对于大部分小程序来说,足够撑起所有的资源和代码,省去CDN的上托管费用,因此提供灵活的资源部署策略对于多渠道适配来说也是非常有必要的。在另一种优选的实施方式中,打包过程还包括以下步骤,参见图6所示:
步骤S602,获取目标渠道的目标配置文件;
步骤S604,根据目标配置文件中的指定参数,判断目标小程序对应的基础资源是否存放于内容发布网络CDN上。
如果是,执行步骤S606,将目标小程序对应的基础资源存放于CDN上。然后执行步骤S608,基于目标配置文件和编译后的代码进行打包,得到渠道运行包体。
如果否,执行步骤S610,基于目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体。步骤S610与上述步骤S214一样。
具体的,上述目标配置文件参见图7所示,目标配置文件中关于CDN的指定参数为“enable_cdn”,其对应的值为true,可以判断目标小程序对应的基础资源需要存放于内容发布网络CDN上。如果指定参数“enable_cdn”,对应的值为false,判断目标小程序对应的基础资源不需要存放于内容发布网络CDN上,而是需要与目标配置文件、编译后的代码一起打包进渠道运行包体中。
此外,对于用户选择了渠道参数,包括发布类型参数和版本信息参数的情况下,上述基于目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体的步骤,包括:
(1)确定目标渠道的发布类型参数和版本信息参数。其中,发布类型参数包括:内部调试版本和外放版本;版本信息参数用于标记包体是源于哪个分支,release Or trunkor other branch。
(2)根据发布类型参数和版本信息参数指定的方式,将目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体。
本实施例中,上述用户交互界面可以借助jenkins平台来实现,Jenkins是一款由Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从Hudson项目复刻。Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。在jenkins配置中编写批处理命令,以界面可视化的方式(如图8所示的用户交互界面)提供打包服务,这样其他职能部门,比如QA和策划也能方便地执行打包操作。
如图8所示的用户交互界面中,CHANNEL,LAN,RELEASE_TAG,RELEASE_VERSION参数对应指定打包流程工具时输入的参数channelIndex,lan,DebugMode,Version,BRANCH_DIR用于指定打包内容是release分支还是其他分支,在批处理中会根据这个参数和RELEASE_VERSION参数切换分支。
本发明实施例提供的小程序的渠道适配方法,可以提供命令行方式进行渠道打包操作,或者提供最小化包体命令行打包操作,使同一套小程序的逻辑代码通过上述打包流程工具和上述配置方式可以灵活地生成不同渠道对应的渠道运行包体,从而提高一个小程序针对多个渠道的打包效率;并且可以根据不同渠道的发布限制制定合理的资源部署策略。
基于上述方法实施例,本申请实施例还提供另一种小程序的渠道适配方法,该方法应用于用户终端;用户终端上安装有目标渠道;目标渠道上加载有对应的渠道运行包体,渠道运行包体包括目标小程序的逻辑代码和通用接口适配代码、目标渠道对应的目标适配器;目标适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成与目标渠道的SDK接口的适配;参见图9所示,该方法包括以下步骤:
步骤S902,基于渠道运行包体启动目标小程序时,通过目标适配器,触发生成目标渠道对应的window对象属性。
不同的渠道在打包时会嵌入不同的适配器,基于渠道运行包体启动目标小程序时,之前嵌入的适配器会触发生成目标渠道对应的window对象属性,即在目标适配器的初始化过程中,将目标适配器的属性赋值于window对象,生成目标渠道对应的window对象属性。
步骤S904,根据window对象属性,调用目标渠道对应的目标适配器,以使目标小程序与目标渠道的运行环境适配。
利用目标渠道对应的window对象属性就可以区分不同的渠道,即根据window对象属性,识别目标渠道对应的渠道类型,调用渠道类型对应的目标适配器,从而将引擎的基础模块替换成渠道自定义的基础模块,完成渠道运行环境的适配。
以适配微信渠道的运行环境为例,打微信渠道包体时,打包程序通过配置文件识别出当前渠道为微信渠道后,会自动将微信渠道对应的适配器插入到index.html中去。index.html中汇集了所有程序代码,其中laya.wxmini.js为渠道提供的适配程序,后续编译发布程序会将index.html中引用的程序合并成code.js。程序在启动时会对各个模块进行初始化,适配器在初始化的过程中会将渠道适配器属性赋值给window对象(window对象表示一个包含DOM文档的窗口),比如微信渠道的适配器会新增一个window.wx属性,通过该属性即可访问微信SDK。不同的渠道适配器会产生不同的window属性,根据window的特定属性即可判断具体渠道,然后调用对应适配器。
比如,如果window对象存在qg属性,则为oppo渠道,执行oppo渠道的适配器,如果存在wx对象,则为微信或者头条属性(头条完全仿照微信,其适配器可以通用),如果存在FBinstant对象,则为facebook渠道,执行对应的适配器。
渠道环境适配保证了小程序在运行基本模块(比如图片,字体,文件系统等)时,能够得到正确稳定的输出。渠道还提供了与渠道交互的各种接口,比如登录,分享,广告,付费等接口,登录模块可以让小程序获得渠道的用户账户信息,分享模块可以使得小程序借助渠道进行自传播,广告和付费是小程序的主要收益来源。每个渠道的提供互动的模块内容是大致一致的,而其提供的接口却不尽相同的,因此,在进行完渠道环境适配后,还需要执行以下步骤:
步骤S906,运行通用接口适配代码,以通过SDK的工厂方法模式确定与目标渠道对应的拓展SDK接口,实现目标小程序的逻辑代码与目标渠道对应的SDK接口适配,运行目标小程序。
完成渠道运行环境适配后,还需要进一步完成渠道的SDK接口的适配,也就是通过上述通用接口适配代码,实现通过SDK的工厂方法模式确定与目标渠道对应的拓展SDK接口,进而通过该拓展SDK接口实现目标小程序的逻辑代码与目标渠道对应的SDK接口适配。至此渠道的适配工作完成,后续可以进行小程序的逻辑代码运行。
在一种优选的实施方式中,上述接口适配的过程,可以通过以下方式进行,参见图10所示:
步骤S1002,获取目标渠道的目标配置文件。
步骤S1004,根据目标配置文件中的渠道标识,识别目标渠道的渠道类型。还以图7所示的目标配置文件为例,其中sdk_target通过渠道类型id指定了具体的渠道,右图为渠道类型id对应的渠道,可以看出,sdk_target的值为1,对应的渠道为微信。
步骤S1006,以工厂方法模式的形式创建渠道类型对应的拓展SDK对象;拓展SDK对象用于实现目标小程序的逻辑代码与目标渠道的SDK接口的适配。
现有的各个渠道均会提供其交互模块,虽然在功能内容上相似,但是接口包括参数是完全不同的。因此,需要做接口适配,即在渠道的SDK接口上再进行一次封装,称为拓展SDK接口。首先抽象出登录,分享,广告,付费这四大通用的渠道基本接口,将这些接口定义在BaseSDK中,doLogin为登录接口,share为分享接口,createOrder为支付接口,watchAd为广告接口。
每新增一个渠道,新加一个拓展SDK接口,用拓展SDK接口实现BaseSDK中的接口,程序结构如图11所示。在程序启动时,根据图7的目标配置文件获取渠道类型,通过SDKFactory工厂方法模式创建对应的拓展SDK接口对象,并通过一个全局对象访问GameMain.sdk_platform。
在进行登录操作时,调用GameMain.sdk_platform.doLogin接口;
在进行分享时,调用GameMain.sdk_platform.share接口;
在进行支付时,调用GameMain.sdk_platform.createOrder接口;
在看广告时,调用GameMain.sdk_platform.watchAd接口。
通过这样的方式,使得同一份小程序的逻辑代码能够运行在多个渠道上。
进一步的,在获取目标渠道的目标配置文件步骤之后,还包括以下步骤:
(1)获取目标小程序的基础资源的版本信息;版本信息为预设文件中的版本指定字段。
(2)根据版本信息,访问对应的基础资源文件。
程序在加载基础资源(纹理,字体,音频,配置表,uiLayout文件等需要从CDN上下载的一切文件)时,首先会获取基础资源的版本信息。在打包流程中,代码合并及版本化资源的步骤中会生成版本化资源,即将资源名a变a+md5值,并且将这个映射保存到version.json文件中,如资源game/test.png,此时它的MD5值为12345678,则版本化后的资源为game/test12345678.png,在加载game/test.png资源时,首先会查找version.json文件,其对应的版本化资源为game/test12345678.png。这样做的目的是一旦资源发生改变,其MD5值将会改变,这样就可以避免因缓存机制而访问到旧的资源。获取完版本信息后,会通过拼接Laya.URL.Basepath来确定最终URL(Uniform Resource Locator,统一资源定位符)资源。这样一来,不论资源时放在包体里还是放在第三方CDN上,都能够通过配置打包参数(gameConfig.json中enable_cdn字段)生成合适的包体,包体运行时都能正确访问资源文件。这种方式应对了前期没做计费,没做广告时游戏收入非常低迷的情况下,通过将资源部署到平台提供的免费环境中来节省第三方CDN流量费用。
基于上述服务器侧的方法实施例,本申请实施例还提供一种小程序的渠道适配装置,该装置应用于配置有用户交互界面的服务器,且服务器配置有多个待选渠道中每个渠道对应的渠道基本配置目录,渠道基本配置目录包含通用接口适配代码,以及与渠道对应的适配器和配置文件;适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成小程序与渠道的SDK接口适配;参见图12所示,该装置包括:渠道确定模块121、信息获取模块122和打包模块123。
其中,渠道确定模块121,用于响应针对于用户交互界面上的渠道选取操作,基于渠道选取操作确定目标小程序当前欲适配的目标渠道;用户交互界面上提供有多个待选渠道;信息获取模块122,用于从渠道基本配置目录中获取通用接口适配代码,以及目标渠道对应的目标适配器和目标配置文件;打包模块123,用于基于目标小程序的逻辑代码、目标适配器、目标配置文件、目标小程序的基础资源和通用接口适配代码,执行预设的打包流程,生成目标小程序对应目标渠道的渠道运行包体;其中,渠道运行包体包含目标小程序的逻辑代码、目标适配器和通用接口适配代码。
上述渠道确定模块121还用于:响应针对于用户交互界面上的渠道标识选取操作,将渠道标识选取操作对应的渠道确定为目标小程序当前欲适配的目标渠道。
一种优选的实施方式中,上述装置还包括:参数选取模块,用于响应针对于用户交互界面上的渠道参数选取操作,将渠道参数选取操作对应的渠道参数确定为目标渠道的参数;渠道参数包括以下参数中的至少一个:语言版本参数、发布类型参数和版本信息参数。
进一步的,上述预设的打包流程包括:将目标小程序的逻辑代码和基础资源加载至预设的打包指定存储区;基于目标渠道的语言版本参数设置资源目录,并在渠道基本配置目录中的指定文件中嵌入与目标渠道对应的目标适配器;基于资源目录进行UI工程配置和纹理合图操作;基于加载的逻辑代码、基础资源和通用接口适配代码进行编译操作;基于编译得到的代码及合图操作后的纹理进行代码合并及版本化纹理资源操作;对代码合并及版本化纹理资源操作得到的纹理资源进行压缩操作;基于目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体。
上述打包模块123还用于:获取目标渠道的配置文件;根据配置文件中的指定参数,判断目标小程序对应的基础资源是否存放于内容发布网络CDN上;如果是,将目标小程序对应的基础资源存放于CDN上;基于目标配置文件和编译后的代码进行打包,得到渠道运行包体。
上述打包模块123还用于:确定目标渠道的发布类型参数和版本信息参数;根据发布类型参数和版本信息参数指定的方式,将目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到渠道运行包体。
上述渠道基本配置目录还包括:渠道对应的最小渠道包所需要的预设代码文件和预设配置文件;上述打包模块123还用于:从执行预设的打包流程后生成的各文件中,查找与目标渠道对应的渠道基本配置目录对应的代码文件和配置文件;对代码文件和配置文件进行打包,得到目标小程序对应目标渠道的渠道运行包体。
基于上述用户终端侧的方法实施例,本申请实施例还提供一种小程序的渠道适配装置,装置应用于用户终端;用户终端上安装有目标渠道;目标渠道上加载有对应的渠道运行包体,渠道运行包体包括目标小程序的逻辑代码和通用接口适配代码、目标渠道对应的目标适配器;目标适配器用于触发渠道运行环境的适配操作;通用接口适配代码用于通过SDK的工厂方法模式,完成与目标渠道的SDK接口的适配;参见图13所示,该装置包括:对象属性生成模块131、运行环境适配模块132和接口适配模块133。
其中,对象属性生成模块131,用于基于渠道运行包体启动目标小程序时,通过目标适配器,触发生成目标渠道对应的window对象属性;运行环境适配模块132,用于根据window对象属性,调用目标渠道对应的目标适配器,以使目标小程序与目标渠道的运行环境适配;接口适配模块143,用于运行通用接口适配代码,以通过SDK的工厂方法模式确定与目标渠道对应的拓展SDK接口,实现目标小程序的逻辑代码与目标渠道对应的SDK接口适配,运行目标小程序。
进一步的,上述对象属性生成模块131还用于:在目标适配器的初始化过程中,将目标适配器的属性赋值于window对象,生成目标渠道对应的window对象属性。
进一步的,上述运行环境适配模块132还用于:根据window对象属性,识别目标渠道对应的渠道类型,调用渠道类型对应的目标适配器。
进一步的,上述接口适配模块133还用于:获取目标渠道的目标配置文件;根据目标配置文件中的渠道标识,识别目标渠道的渠道类型;获取渠道类型对应的SDK接口;通过SDK的工厂方法模式,生成与SDK接口对应的拓展SDK接口;其中,拓展SDK接口可通过调用全局对象方式进行访问,以完成目标小程序的逻辑代码与目标渠道的SDK接口的适配。
进一步的,上述装置还包括,资源访问模块:用于从目标配置文件中获取目标小程序的基础资源的版本信息;版本信息为配置文件中的版本指定字段;根据版本信息,访问对应的基础资源文件。
本申请实施例还提供了一种电子设备,如图14所示,为该电子设备的结构示意图,其中,该电子设备包括处理器141和存储器140,该存储器140存储有能够被该处理器141执行的计算机可执行指令,该处理器141执行该计算机可执行指令以实现上述小程序的渠道适配方法。
在图14示出的实施方式中,该电子设备还包括总线142和通信接口143,其中,处理器141、通信接口143和存储器140通过总线142连接。
其中,存储器140可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口143(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线142可以是ISA(IndustryStandard Architecture,工业标准体系结构)总线、PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线142可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器141可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器141中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器141可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器141读取存储器中的信息,结合其硬件完成前述实施例的小程序的渠道适配方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述小程序的渠道适配方法,具体实现可参见前述方法实施例,在此不再赘述。
本申请实施例所提供的小程序的渠道适配方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的小程序的渠道适配方法,具体实现可参见方法实施例,在此不再赘述。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本申请的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (14)

1.一种小程序的渠道适配方法,其特征在于,所述方法应用于配置有用户交互界面的服务器,且所述服务器配置有多个待选渠道中每个渠道对应的渠道基本配置目录,所述渠道基本配置目录包含通用接口适配代码,以及与所述渠道对应的适配器和配置文件;所述适配器用于触发渠道运行环境的适配操作;所述通用接口适配代码用于通过SDK的工厂方法模式,完成小程序与渠道的SDK接口适配;所述方法包括:
响应针对于所述用户交互界面上的渠道选取操作,基于所述渠道选取操作确定目标小程序当前欲适配的目标渠道;所述用户交互界面上提供有多个待选渠道;
从所述渠道基本配置目录中获取所述通用接口适配代码,以及所述目标渠道对应的目标适配器和目标配置文件;
基于所述目标小程序的逻辑代码、所述目标适配器、所述目标配置文件、所述目标小程序的基础资源和所述通用接口适配代码,执行预设的打包流程,生成所述目标小程序对应所述目标渠道的渠道运行包体;其中,所述渠道运行包体包含所述目标小程序的逻辑代码、所述目标适配器和所述通用接口适配代码;
其中,所述预设的打包流程包括:
将所述目标小程序的逻辑代码和基础资源加载至预设的工程目录的打包指定存储区;
基于所述目标渠道的语言版本参数设置资源目录,并在所述工程目录中的指定文件中嵌入与所述目标渠道对应的目标适配器;
基于所述资源目录进行UI工程配置和纹理合图操作;
基于加载的所述逻辑代码、所述基础资源和所述通用接口适配代码进行编译操作;
基于编译得到的代码及合图操作后的纹理进行代码合并及版本化纹理资源操作;
对代码合并及版本化纹理资源操作得到的纹理资源进行压缩操作;
基于所述目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到所述渠道运行包体。
2.根据权利要求1所述的方法,其特征在于,响应针对于所述用户交互界面上的渠道选取操作,基于所述渠道选取操作确定目标小程序当前欲适配的目标渠道的步骤,包括:
响应针对于所述用户交互界面上的渠道标识选取操作,将渠道标识选取操作对应的渠道确定为目标小程序当前欲适配的目标渠道。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应针对于所述用户交互界面上的渠道参数选取操作,将渠道参数选取操作对应的渠道参数确定为所述目标渠道的参数;所述渠道参数包括以下参数中的至少一个:语言版本参数、发布类型参数和版本信息参数。
4.根据权利要求1所述的方法,其特征在于,基于所述目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到所述渠道运行包体的步骤,包括:
获取所述目标渠道的配置文件;
根据所述配置文件中的指定参数,判断所述目标小程序对应的基础资源是否存放于内容发布网络CDN上;
如果是,将所述目标小程序对应的基础资源存放于所述CDN上;
基于所述目标配置文件和编译后的代码进行打包,得到所述渠道运行包体。
5.根据权利要求4所述的方法,其特征在于,基于所述目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到所述渠道运行包体的步骤,包括:
确定所述目标渠道的发布类型参数和版本信息参数;
根据所述发布类型参数和版本信息参数指定的方式,将所述目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到所述渠道运行包体。
6.根据权利要求1所述的方法,其特征在于,所述渠道基本配置目录还包括:渠道对应的最小渠道包所需要的预设代码文件和预设配置文件;
生成所述目标小程序对应所述目标渠道的渠道运行包体的步骤,还包括:
从执行预设的打包流程后生成的各文件中,查找与所述目标渠道对应的渠道基本配置目录对应的代码文件和配置文件;
对所述代码文件和所述配置文件进行打包,得到所述目标小程序对应所述目标渠道的渠道运行包体。
7.一种小程序的渠道适配方法,其特征在于,所述方法应用于用户终端;所述用户终端上安装有目标渠道;所述目标渠道上加载有对应的渠道运行包体,所述渠道运行包体包括目标小程序的逻辑代码和通用接口适配代码、所述目标渠道对应的目标适配器;所述目标适配器用于触发渠道运行环境的适配操作;所述通用接口适配代码用于通过SDK的工厂方法模式,完成与所述目标渠道的SDK接口的适配;所述方法包括:
基于所述渠道运行包体启动所述目标小程序时,通过所述目标适配器,触发生成所述目标渠道对应的window对象属性;
根据所述window对象属性,调用所述目标渠道对应的目标适配器,以使所述目标小程序与所述目标渠道的运行环境适配;
运行所述通用接口适配代码,以通过所述SDK的工厂方法模式确定与所述目标渠道对应的拓展SDK接口,实现所述目标小程序的逻辑代码与所述目标渠道对应的SDK接口适配,运行所述目标小程序;
其中,通过所述SDK的工厂方法模式确定与所述目标渠道对应的拓展SDK接口,实现所述目标小程序的逻辑代码与所述目标渠道对应的SDK接口适配的步骤,包括:
获取所述目标渠道的目标配置文件;
根据所述目标配置文件中的渠道标识,识别所述目标渠道的渠道类型;
以所述工厂方法模式的形式创建所述渠道类型对应的拓展SDK对象;所述拓展SDK对象用于实现所述目标小程序的逻辑代码与所述目标渠道的SDK接口的适配。
8.根据权利要求7所述的方法,其特征在于,通过所述渠道运行包体中的目标适配器,触发生成所述目标渠道对应的window对象属性的步骤,包括:
在所述目标适配器的初始化过程中,将所述目标适配器的属性赋值于window对象,生成所述目标渠道对应的window对象属性。
9.根据权利要求7所述的方法,其特征在于,根据所述window对象属性,调用所述目标渠道对应的目标适配器的步骤,包括:
根据所述window对象属性,识别所述目标渠道对应的渠道类型,调用所述渠道类型对应的目标适配器。
10.根据权利要求9所述的方法,其特征在于,所述方法,还包括:
获取目标小程序的基础资源的版本信息;
根据所述版本信息,访问对应的基础资源文件。
11.一种小程序的渠道适配装置,其特征在于,所述装置应用于配置有用户交互界面的服务器,且所述服务器配置有多个待选渠道中每个渠道对应的渠道基本配置目录,所述渠道基本配置目录包含通用接口适配代码,以及与所述渠道对应的适配器和配置文件;所述适配器用于触发渠道运行环境的适配操作;所述通用接口适配代码用于通过SDK的工厂方法模式,完成小程序与渠道的SDK接口适配;所述装置包括:
渠道确定模块,用于响应针对于所述用户交互界面上的渠道选取操作,基于所述渠道选取操作确定目标小程序当前欲适配的目标渠道;所述用户交互界面上提供有多个待选渠道;
信息获取模块,用于从所述渠道基本配置目录中获取所述通用接口适配代码,以及所述目标渠道对应的目标适配器和目标配置文件;
打包模块,用于基于所述目标小程序的逻辑代码、所述目标适配器、所述目标配置文件、所述目标小程序的基础资源和所述通用接口适配代码,执行预设的打包流程,生成所述目标小程序对应所述目标渠道的渠道运行包体;其中,所述渠道运行包体包含所述目标小程序的逻辑代码、所述目标适配器和所述通用接口适配代码;
其中,所述打包模块中,所述预设的打包流程包括:
将所述目标小程序的逻辑代码和基础资源加载至预设的工程目录的打包指定存储区;
基于所述目标渠道的语言版本参数设置资源目录,并在所述工程目录中的指定文件中嵌入与所述目标渠道对应的目标适配器;
基于所述资源目录进行UI工程配置和纹理合图操作;
基于加载的所述逻辑代码、所述基础资源和所述通用接口适配代码进行编译操作;
基于编译得到的代码及合图操作后的纹理进行代码合并及版本化纹理资源操作;
对代码合并及版本化纹理资源操作得到的纹理资源进行压缩操作;
基于所述目标配置文件、编译后的代码和压缩操作后的纹理资源进行打包,得到所述渠道运行包体。
12.一种小程序的渠道适配装置,其特征在于,所述装置应用于用户终端;所述用户终端上安装有目标渠道;所述目标渠道上加载有对应的渠道运行包体,所述渠道运行包体包括目标小程序的逻辑代码和通用接口适配代码、所述目标渠道对应的目标适配器;所述目标适配器用于触发渠道运行环境的适配操作;所述通用接口适配代码用于通过SDK的工厂方法模式,完成与所述目标渠道的SDK接口的适配;所述装置包括:
对象属性生成模块,用于基于所述渠道运行包体启动所述目标小程序时,通过所述目标适配器,触发生成所述目标渠道对应的window对象属性;
运行环境适配模块,用于根据所述window对象属性,调用所述目标渠道对应的目标适配器,以使所述目标小程序与所述目标渠道的运行环境适配;
接口适配模块,用于运行所述通用接口适配代码,以通过所述SDK的工厂方法模式确定与所述目标渠道对应的拓展SDK接口,实现所述目标小程序的逻辑代码与所述目标渠道对应的SDK接口适配,运行所述目标小程序;
其中,所述接口适配模块中,通过所述SDK的工厂方法模式确定与所述目标渠道对应的拓展SDK接口,实现所述目标小程序的逻辑代码与所述目标渠道对应的SDK接口适配的步骤,包括:
获取所述目标渠道的目标配置文件;
根据所述目标配置文件中的渠道标识,识别所述目标渠道的渠道类型;
以所述工厂方法模式的形式创建所述渠道类型对应的拓展SDK对象;所述拓展SDK对象用于实现所述目标小程序的逻辑代码与所述目标渠道的SDK接口的适配。
13.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至6或权利要求7至10任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1至6或权利要求7至10任一项所述的方法。
CN201911025131.4A 2019-10-25 2019-10-25 小程序的渠道适配方法、装置及电子设备 Active CN110764791B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911025131.4A CN110764791B (zh) 2019-10-25 2019-10-25 小程序的渠道适配方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911025131.4A CN110764791B (zh) 2019-10-25 2019-10-25 小程序的渠道适配方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN110764791A CN110764791A (zh) 2020-02-07
CN110764791B true CN110764791B (zh) 2023-10-27

Family

ID=69333661

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911025131.4A Active CN110764791B (zh) 2019-10-25 2019-10-25 小程序的渠道适配方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN110764791B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111371676B (zh) * 2020-03-03 2022-04-15 腾讯科技(深圳)有限公司 一种客服功能接入方法和相关装置
CN111381825B (zh) * 2020-03-06 2021-04-09 北京五八信息技术有限公司 一种小程序的生成方法和装置
CN111381865B (zh) * 2020-04-01 2023-04-07 深圳传趣网络技术有限公司 游戏应用的打包方法、装置、设备及存储介质
CN111475142B (zh) * 2020-04-03 2023-04-28 支付宝(杭州)信息技术有限公司 一种小程序文件包的生成方法、装置及设备
CN112416353B (zh) * 2020-08-10 2024-07-23 上海幻电信息科技有限公司 渠道包打包方法、装置及计算机设备
CN112286619B (zh) * 2020-12-28 2021-05-07 南京智闪萤科技有限公司 用于数据驱动界面呈现的方法、电子设备和存储介质
CN113094040B (zh) * 2021-03-08 2024-06-28 南京唯优信息技术有限公司 一种小程序编译方法和装置
CN113127005B (zh) * 2021-05-08 2024-05-24 抖音视界有限公司 一种可执行文件生成的方法、装置以及计算机存储介质
CN113296828B (zh) * 2021-05-26 2024-10-18 北京京东振世信息技术有限公司 一种发布应用的方法、服务器和系统
CN113946384B (zh) * 2021-10-15 2023-06-13 中电金信软件有限公司 一种小程序的运行方法、装置及电子设备
CN114168215B (zh) * 2021-11-17 2024-03-19 广东太平洋互联网信息服务有限公司 一种多个小程序功能模块插件化处理方法、系统及介质
CN114610412B (zh) * 2022-03-16 2024-03-15 杭州每刻科技有限公司 一种应用可见性分层管理方法和系统
CN114510266B (zh) * 2022-04-20 2022-10-21 武汉绿之云科技有限公司 一种一端发布轻应用且自动适配多终端使用的方法及系统
CN114999481A (zh) * 2022-05-30 2022-09-02 北斗星通智联科技有限责任公司 适配多种语音识别引擎的适配器系统和适配方法
CN116643794B (zh) * 2023-06-01 2024-07-30 中电金信软件有限公司 一种信息处理方法、装置及电子设备
CN116843454B (zh) * 2023-07-18 2024-05-31 广东企企通科技有限公司 渠道信息管理方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522030A (zh) * 2018-11-29 2019-03-26 北纬通信科技南京有限责任公司 基于一键生成多个游戏渠道包的平台出包方法
CN109656572A (zh) * 2018-11-14 2019-04-19 深圳壹账通智能科技有限公司 安装包的打包方法及装置、计算机设备、存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645934B2 (en) * 2010-05-06 2014-02-04 International Business Machines Corporation Simultaneous compiler binary optimizations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109656572A (zh) * 2018-11-14 2019-04-19 深圳壹账通智能科技有限公司 安装包的打包方法及装置、计算机设备、存储介质
CN109522030A (zh) * 2018-11-29 2019-03-26 北纬通信科技南京有限责任公司 基于一键生成多个游戏渠道包的平台出包方法

Also Published As

Publication number Publication date
CN110764791A (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
CN110764791B (zh) 小程序的渠道适配方法、装置及电子设备
CN111552473B (zh) 一种应用程序的处理方法、装置及设备
CN108121539B (zh) 组件处理方法和装置
CN111813385B (zh) 一种基于Web应用的页面插件化方法、装置及设备
CN111158687B (zh) Java插件的界面生成方法、装置、计算机设备和存储介质
CN110941779B (zh) 加载页面的方法、装置、存储介质及电子设备
CN111068328A (zh) 游戏广告配置表格的生成方法、终端设备及介质
CN113885935A (zh) 资源打包方法、装置、电子设备及计算机可读存储介质
CN114879976A (zh) 版本的环境部署方法、装置及电子设备
CN110908677A (zh) 一种Flutter应用安装包体积优化的方法及存储介质
CN111435313A (zh) 一种软件换肤的方法及装置
CN116719523A (zh) 页面渲染方法及电子设备
CN110888634A (zh) 游戏落地页生成方法、装置、计算机设备和存储介质
CN112306486A (zh) 一种界面生成方法、装置、服务器及存储介质
CN115794214B (zh) 应用模块元数据管理方法、设备、存储介质及装置
CN113641594B (zh) 跨端自动化测试方法以及相关装置
CN114461960B (zh) 页面生成方法、页面展示方法及装置
CN116302181A (zh) 基于Vite的web字体文件压缩方法、装置及其应用
CN115390835A (zh) 一种小程序标签化搜索框的构建方法及设备
CN112486378B (zh) 图形生成方法、装置、终端及存储介质
CN114168875A (zh) 一种页面程序的生成方法、装置、计算机设备及存储介质
CN113934412A (zh) 程序生成方法、装置、设备及存储介质
CN112162743A (zh) 驱动程序生成方法、装置、计算机设备和存储介质
CN113485740B (zh) 一种一键自动化打包方法、装置、设备及介质
CN116450535B (zh) 子应用调试方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant