CN114253596A - 一种微信小程序打包平台、方法、设备及存储介质 - Google Patents

一种微信小程序打包平台、方法、设备及存储介质 Download PDF

Info

Publication number
CN114253596A
CN114253596A CN202111328149.9A CN202111328149A CN114253596A CN 114253596 A CN114253596 A CN 114253596A CN 202111328149 A CN202111328149 A CN 202111328149A CN 114253596 A CN114253596 A CN 114253596A
Authority
CN
China
Prior art keywords
information
code
hash table
file
compiled
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.)
Pending
Application number
CN202111328149.9A
Other languages
English (en)
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.)
Tongcheng Network Technology Co Ltd
Original Assignee
Tongcheng Network Technology 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 Tongcheng Network Technology Co Ltd filed Critical Tongcheng Network Technology Co Ltd
Priority to CN202111328149.9A priority Critical patent/CN114253596A/zh
Priority to PCT/CN2021/134242 priority patent/WO2023082365A1/zh
Publication of CN114253596A publication Critical patent/CN114253596A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

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

Abstract

本申请涉及计算机软件领域,尤其是涉及一种微信小程序打包平台、方法、设备及存储介质,其中平台包括服务系统和文件系统;服务系统用于获取第一信息并生成微信小程序的预编译代码;文件系统用于供服务系统调用;服务系统包括接收模块、Diff信息生成模块、Diff信息处理模块以及编译模块;文件系统包括微信开发者工具;接收模块用于接收第一信息;Diff信息生成模块用于处理第一信息并生成Diff信息;Diff信息处理模块用于处理Diff信息并生成待编译信息;编译模块用于处理待编译信息并生成预编译代码;微信开发者工具用于编译出微信小程序的代码包,实现微信小程序的打包。本申请具有便于提升微信小程序的打包效率的效果。

Description

一种微信小程序打包平台、方法、设备及存储介质
技术领域
本申请涉及计算机软件领域,尤其是涉及一种微信小程序打包平台、方法、设备及存储介质。
背景技术
微信小程序是微信体系内的一种新的开放能力,开发者可以使用微信开发者工具快速地开发一个微信小程序并打包出相应的微信小程序代码包。
目前主要的微信小程序打包方法为开发人员本地打包方式:先通过网络I/O技术使客户端从服务系统获取微信小程序需更新的代码信息,然后主要依靠于本地的电脑配置对微信小程序进行打包。
在实现本申请的过程中,发明人发现上述技术至少存在以下问题:使用开发人员本地打包方式,一方面由于网络I/O技术会产生较高的网络时延,另一方面由于在进行微信小程序的打包过程中需要占用本地电脑极高的CPU资源,导致打包过程中开发者难以进行其他的微信小程序打包操作,故而会比较影响微信小程序的打包效率,可见,现有技术中的微信小程序的打包效率较低。
发明内容
为了便于提升微信小程序的打包效率,本申请提供一种微信小程序打包平台、方法、设备及存储介质。
第一方面,本申请提供一种微信小程序打包平台,采用如下的技术方案:
一种微信小程序打包平台,包括服务系统和文件系统;
所述服务系统用于获取第一信息并依据所述第一信息生成所述微信小程序的预编译代码;
所述文件系统用于供所述服务系统调用;
所述服务系统包括接收模块、Diff信息生成模块、Diff信息处理模块以及编译模块;
所述文件系统包括微信开发者工具;
所述接收模块用于接收所述第一信息;
所述Diff信息生成模块用于处理所述第一信息并生成相应的Diff信息;
所述Diff信息处理模块用于处理所述Diff信息并生成相应的待编译信息;
所述编译模块用于处理所述待编译信息并生成所述预编译代码;
所述微信开发者工具用于调试所述预编译代码并编译出所述微信小程序的代码包,实现所述微信小程序的打包。
通过采用上述技术方案,可使微信小程序打包的主要过程由服务系统及文件系统完成,这样不仅消除了网络I/O技术带来的网络时延,由于打包过程主要由服务系统及文件系统完成,则打包过程不会占用过多的客户端的CPU资源,从而可使用户能够使用客户端进行其他的微信小程序打包操作,如此便于提升微信小程序的打包效率。
优选的,所述文件系统还包括用户空间和代码空间;
所述用户空间用于分别独立存储每个用户开发的所述微信小程序的第一分支代码,以及与所述第一分支代码对应的第一Hash表文件,所述用户空间还用于存储所述Diff信息以及所述预编译代码;
所述代码空间用于存储重新编译的且与所述第一分支代码对应的第二分支代码,以及与所述第二分支代码对应的第二Hash表文件。
通过采用上述技术方案,每个用户开发的微信小程序的分支代码,以及与分支代码对应的第一Hash表文件均可以在用户空间内进行独立的存储,便于使不同的微信小程序进行同步打包操作而不会存在相互覆盖的问题,从而便于提升微信小程序的打包效率。
另外,微信小程序打包完成后进一步会上线投入使用,后续随着微信小程序版本的更新,势必会对之前版本的微信小程序的某些分支代码进行改进,改进时需要比较改进后的分支代码和改进前的分支代码的异同,如果将改进后的分支代码和改进前的分支代码进行逐行的比对需要消耗大量的时间,为了加快比较两者异同的过程,可通过用户空间为改进前的分支代码对应一个第一Hash表文件,并通过代码空间为改进后的分支代码对应一个第二Hash表文件,由于仅仅是比较两个第一Hash表文件和第二Hash表文件的异同速度较快,从而可以更加快速比较改进后的分支代码和改进前的分支代码的异同,进而便于提升微信小程序的打包效率。
优选的,所述服务系统还包括定时任务模块,所述文件系统还包括Git仓库;
所述Git仓库用于存储微信小程序各版本的分支代码;
所述定时任务模块用于每隔预设的更新时间间隔判断所述第二分支代码相较于所述第一分支代码在预设的时间范围内是否有更新,若有更新,则将所述第一分支代码更新为所述第二分支代码。
通过采用上述技术方案,首先使用定时任务模块每隔预设的更新时间间隔判断预设的时间阈值内Git仓库中的第二分支代码相较于所述用户空间中的第一分支代码是否有更新,然后将所有的有更新的第一分支代码更新为对应的第二分支代码,这样便于保证用户空间中的第一分支代码可以得到及时有效的更新,从而便于提升微信小程序打包的效率。
优选的,所述服务系统还包括WebHooks模块;
所述WebHooks模块的工作模式为触发式,触发条件为所述Git仓库中写入所述第二分支代码;
所述WebHooks模块用于受到触发后通知所述微信小程序打包平台将所述第一分支代码更新为所述第二分支代码。
通过采用上述技术方案,一旦用户向Git仓库更新微信小程序分支的代码可以立刻触发WebHooks模块,从而使WebHooks模块及时将第一分支代码更新为第二分支代码,这样可以使用户空间中的第一分支代码得到及时有效的更新,从而便于提升微信小程序打包的效率。
第二方面,本申请提供一种微信小程序打包方法,采用如下的技术方案:
一种微信小程序打包方法,包括:
获取需进行打包的第一信息;
对所述第一信息进行处理,生成Diff信息;
对所述Diff信息进行处理,生成待编译信息;
对所述待编译信息进行处理,生成预编译代码;
对所述预编译代码进行调试,生成所述微信小程序的代码包,实现所述微信小程序的打包。
通过采用上述技术方案,可使微信小程序打包的主要过程由服务系统及文件系统完成,这样不仅消除了网络I/O技术带来的网络时延,由于打包过程主要由服务系统及文件系统完成,则打包过程不会占用过多的客户端的CPU资源,从而可使用户能够使用客户端进行其他的微信小程序打包操作,如此便于提升微信小程序的打包效率。
优选的,所述第一信息包括第一Hash表文件和第二Hash表文件;
所述对所述第一信息进行处理,生成Diff信息,包括:
获取所述第一Hash表文件和所述第二Hash表文件;
比较所述第一Hash表文件和所述第二Hash表文件,得到所述Diff信息。
通过采用上述技术方案,由于第一Hash表文件和第二Hash表文件易于比较异同,所以通过比较第一Hash表文件和第二Hash表文件异同的方式便于快速找出第一分支代码和第二分支代码的差异,得到相应的Diff信息,从而便于提升微信小程序的打包效率。
优选的,所述Diff信息包括所述第一Hash表文件和所述第二Hash表文件需要编译的文件名及其编译类型;
所述对所述Diff信息进行处理,生成待编译信息,包括:
获取所述Diff信息;
对所述Diff信息进行处理,生成待编译信息。
通过采用上述技术方案,通过对第一Hash表文件和第二Hash表文件进行处理的方式生成待编译信息,这样便于后续只对待编译信息进行编译,而不需要将第一Hash表文件中的文件全部编译一遍,如此便于节省编译的时间,从而便于提升微信小程序的打包效率。
优选的,所述对所述待编译信息进行处理,生成预编译代码,包括:
获取所述待编译信息;
依据所述待编译信息对更新后的所述第一分支代码进行编译,生成预编译代码。
通过采用上述技术方案,只需要依据待编译信息,即待编译文件列表中的内容,对第一分支代码进行编译,这样就不用对整个第一分支代码重新编译一次了,而只需要对第一代码分支中需要改动的部分进行编译,如此便于节省预编译的时间,进而便于提升微信小程序的打包效率。
第三方面,本申请提供一种计算机设备,其特征在于,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如上述任一种微信小程序打包方法的计算机程序。
通过采用上述技术方案,可使微信小程序打包的主要过程由服务系统及文件系统完成,这样不仅消除了网络I/O技术带来的网络时延,由于打包过程主要由服务系统及文件系统完成,则打包过程不会占用过多的客户端的CPU资源,从而可使用户能够使用客户端进行其他的微信小程序打包操作,如此便于提升微信小程序的打包效率。
第四方面,本申请提供一种计算机可读存储介质,其特征在于,存储有能够被处理器加载并执行如上述任一种微信小程序打包方法的计算机程序。
通过采用上述技术方案,可使微信小程序打包的主要过程由服务系统完成及文件系统,这样不仅消除了网络I/O技术带来的网络时延,由于打包过程主要由服务系统及文件系统完成,则打包过程不会占用过多的客户端的CPU资源,从而可使用户能够使用客户端进行其他的微信小程序打包操作,如此便于提升微信小程序的打包效率。
综上所述,本申请包括以下至少一种有益技术效果:
1.本申请方案在执行的过程中可使微信小程序的主要打包过程由服务系统及文件系统完成,而客户端主要起控制服务进行微信小程序打包的作用,如此可便于减少现有技术中客户端和服务系统之间采用网络I/O技术进行打包所带来的网络时延,此外由于微信小程序不再占用较多的客户端的CPU资源,故而开发者可通过客户端在服务系统及文件系统进行打包操作的同时进行其他的微信小程序打包操作,从而便于提升微信小程序的打包效率。
2.由于用户空间中可以独自存储不同用户的微信小程序信息,故而便于同步且独立进行不同版本微信小程序的打包操作,解决了不同版本微信小程序相互覆盖的问题,从而提升了微信小程序的打包效率。
3.通过微信小程序打包平台中的定时任务模块和WebHooks模块便于实现及时同步更新代码空间中的第二分支代码,从而有利于提升微信小程序的打包效率。
附图说明
图1是本申请实施例中使用微信小程序打包平台打包微信小程序的结构框图。
图2是本申请实施例中一种微信小程序打包方法的方法流程图。
图3是本申请实施例中S200的子步骤流程图。
图4是本申请实施例中S300的子步骤流程图。
图5是本申请实施例中S400的子步骤流程图。
附图标记说明:100、通信层;200、服务系统;201、定时任务模块;
202、WebHooks模块;203、接收模块;204、Diff信息生成模块;205、Diff信息处理模块;206、编译模块;300、文件系统;310、Git仓库;311、用户空间;312、代码空间;320、缓存空间;330、微信开发者工具。
具体实施方式
以下结合附图1-5对本申请作进一步详细说明。
一个微信小程序的源代码包括其若干分支的源代码,随着微信小程序版本的更迭,该微信小程序一个或若干个分支的源代码会有相应的更新,比如和上一版本相应的分支源代码相比,可能会出现源代码的增加、修改以及删除。然后,需要将更新后的分支代码进行自动化测试,并将自动化测试成功的分支代码重新集成到原来微信小程序源代码的主干上去,并将原来的分支代码覆盖掉,由此生成微信小程序的预编译代码,接着通过微信开发者工具对预编译代码进行调试与最终编译,然后可生成微信小程序的代码包。
本申请实施例公开一种微信小程序打包平台。参照图1,微信小程序打包平台包括通信层100、服务系统200以及文件系统300。
若要使用上述微信小程序打包平台,需要用户先通过客户端登录到该微信小程序打包平台,具体的:
用户通过客户端上的浏览器打开该微信小程序打包平台的登录界面,登录界面上有平台登录二维码,用户通过微信扫描该平台登录二维码可登录该微信小程序打包平台。
用户登录该微信小程序打包平台后,可通过客户端向服务系统200发送微信小程序打包信息,微信小程序打包信息的发送需要依托于客户端和服务系统200的之间的通信链接,而客户端和服务系统200的之间的通信链接由通信层100来实现,优选的,客户端和服务系统200之间的通信链接使用的通信协议包括WebSocket协议以及Http协议。
客户端还用于选择需要进行打包的Git仓库310和微信小程序的分支信息,将需要进行打包的Git仓库310和微信小程序的分支信息记为第一信息,客户端进一步将上述第一信息发送至服务系统200。
服务系统200用于接收客户端发出的微信小程序打包信息执行对微信小程序打包操作。
文件系统300用于在服务系统200对微信小程序进行打包操作时供服务系统200调用。
服务系统200包括:定时任务模块301、WebHooks模块302、接收模块203、文件I/O、Diff信息生成模块204、Diff信息处理模块305以及编译模块306。
文件系统300包括:Git仓库310、用户空间311、代码空间312、缓存空间320以及微信开发者工具330。
每个微信小程序均包含若干分支信息,举例来说,一个关于旅游的微信小程序可能会有包括酒店、火车票以及导游在内的若干分支信息,这些分支信息均存储于Git仓库310中。在微信小程序的版本更新中,当与酒店相关的分支信息发生更新,用户可登录微信小程序打包平台,选择与存储分支信息相关的Git仓库310,以及Git仓库310中与酒店相关且发生更新的分支信息。分支信息包括与酒店相关的每个版本的代码以及每个版本代码对应的Hash表文件。
当开发者完成当前版本微信小程序的分支代码的开发后,需要将开发完成的当前版本微信小程序的分支代码写入Git仓库310中,这样Git仓库310中存储有一个微信小程序每个版本的每个分支的代码。Git仓库310类似于一个云端代码库,为了保证Git仓库310和服务系统本地的微信小程序代码的一致性,需要将Git仓库310中写入的当前版本微信小程序的分支代码同步到服务系统本地的缓存空间320中。
Git仓库310可划分为用户空间311和代码空间312。
用户空间311用于分别独立存储每个用户开发的微信小程序的分支代码,将微信小程序的分支代码记为第一分支代码,用户空间311还用于分别独立存储与第一分支代码对应的第一Hash表文件,第一Hash表文件由第一分支代码通过Hash算法进行运算得到,第一Hash表文件包括与第一分支代码对应的若干文件,以及每个文件通过Hash算法计算得到的第一Hash值。
代码空间312用于存储从缓存空间320复制过来且完成更新的分支代码,将从缓存空间320复制过来且完成更新的分支代码记为第二分支代码,代码空间312还用于存储与第二分支代码对应的第二Hash表文件,第二Hash表文件由第二分支代码通过Hash算法进行运算得到,第二Hash表文件包括与第二分支代码对应的若干文件,以及每个文件通过Hash算法计算得到的第二Hash值。
将Git仓库310中写入的当前版本微信小程序的分支代码同步到服务系统本地的缓存空间320中有两种同步方式:
可选的,第一种为主动式同步,通过定时任务模块301进行主动同步,具体的:
预设更新时间间隔和时间范围,每隔更新时间间隔通过定时任务模块301判断时间范围内的Git仓库310中微信小程序的当前各分支代码是否发生更新,并将发生更新的微信小程序的分支代码更新到缓存空间320中,即将缓存空间320中相应的分支代码更新为Git仓库310中对应的发生更新的分支代码。
举例来说,预设的更新时间间隔为30分钟,预设的时间范围为30天。采用主动式同步方式,则需要每隔30分钟过定时任务模块301判断30天内Git仓库310中微信小程序的当前各分支代码是否发生更新,并将发生更新的微信小程序的分支代码更新到缓存空间320中。
可选的,第二种为被动式同步,通过WebHooks模块302进行被动同步,具体的:
需要说明的是:WebHooks模块302的工作模式为触发式,触发条件为开发者向Git仓库提交新的微信小程序的分支代码。
当开发者向Git仓库提交新的微信小程序的分支代码,WebHooks模块302受到触发后开始工作,将缓存空间320中与开发者提交的分支代码相对应的分支代码更新为开发者提交的分支代码。
通过上述任一种同步方式均可将Git仓库310中写入的当前版本微信小程序的分支代码同步到服务系统本地的缓存空间320中。进一步,还需要将缓存空间320中完成更新的分支代码通过文件I/O复制到代码空间312中,文件I/O用于进行服务系统200内文件的复制、粘贴、覆盖以及删除等操作。
用户通过客户端登录到微信小程序打包平台后,可进一步通过客户端选择Git仓库310的Git仓库信息以及Git仓库310中发生更新的微信小程序分支信息,将Git仓库信息以及Git仓库310中发生更新的微信小程序分支信息记为第一信息。进一步,客户端用于通过通信层100将第一信息发送至服务系统200。
服务系统200中的接收模块203用于接收客户端发来的第一信息,并将第一信息发送至Diff信息生成模块204。
Diff信息生成模块204用于处理第一信息,具体的:
先读取用户空间311中的第一Hash表文件和代码空间312中对应的第二Hash表文件,然后对第一Hash表文件和第二Hash表文件进行比较,得到Diff信息,并进一步将Diff信息发送至Diff信息处理模块305。
若某个文件在第二Hash表文件存在,但在第一Hash表文件中不存在,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“新增”。
若某个文件在第二Hash表文件不存在,但在第一Hash表文件中存在,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“删除”。
若某个文件在第二Hash表文件存在,在第一Hash表文件中也存在,但该文件在第二Hash表文件中对应的第二Hash值与该文件在第一Hash表文件中对应的第一Hash值不同,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“变化”。
若某个文件在第二Hash表文件存在,在第一Hash表文件中也存在,且该文件在第二Hash表文件中对应的第二Hash值与该文件在第一Hash表文件中对应的第一Hash值相同,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“不操作”。
Diff信息处理模块305用于处理上述Diff信息并生成相应的待编译信息,具体的:
Diff信息处理模块305先接收来自Diff信息生成模块204发送的Diff信息;
若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“新增”,则通过文件I/O将第二Hash表文件中新增的文件复制并拷贝到第一Hash表文件中相应的位置上,由此生成第三Hash表文件。
若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“删除”,则通过文件I/O将第一Hash表文件中相对于第二Hash表文件多出的文件删除,由此生成第四Hash表文件。
若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“变化”,则通过文件I/O将第二Hash表文件中相对于第一Hash表文件发生变化的文件复制并拷贝到第一Hash表文件中相应的位置上,由此生成第五Hash表文件。
若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“不操作”,则不对第一Hash表文件进行操作。
Diff信息处理模块305可将生成的第三Hash表文件、第四Hash表文件以及第五Hash表文件导入到预设的待编译文件列表中,生成待编译信息,并将待编译信息发送至编译模块306。
在实施中,一个微信小程序的分支代码在更新后,若存在部分新增进第一分支代码的代码,则通过Diff信息处理模块305会生成第三Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件导入到预设的待编译文件列表中,第三Hash表文件即为待编译信息。
一个微信小程序的分支代码在更新后,若第一分支代码中的部分代码被删除,则通过Diff信息处理模块305会生成第四Hash表文件,进一步,Diff信息处理模块305将第四Hash表文件导入到预设的待编译文件列表中,第四Hash表文件即为待编译信息。
一个微信小程序的分支代码在更新后,若第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第五Hash表文件,进一步,Diff信息处理模块305将第五Hash表文件导入到预设的待编译文件列表中,第五Hash表文件即为待编译信息。
一个微信小程序的分支代码在更新后,若既存在部分新增进第一分支代码的代码,还存在第一分支代码中的部分代码被删除,则通过Diff信息处理模块305会生成第三Hash表文件和第四Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件和第四Hash表文件导入到预设的待编译文件列表中,第三Hash表文件和第四Hash表文件即为待编译信息。
一个微信小程序的分支代码在更新后,若既存在部分新增进第一分支代码的代码,还存在第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第三Hash表文件和第五Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件和第五Hash表文件导入到预设的待编译文件列表中,第三Hash表文件和第五Hash表文件即为待编译信息。
一个微信小程序的分支代码在更新后,若既存在第一分支代码中的部分代码被删除,还存在第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第四Hash表文件和第五Hash表文件,进一步,Diff信息处理模块305将第四Hash表文件和第五Hash表文件导入到预设的待编译文件列表中,第四Hash表文件和第五Hash表文件即为待编译信息。
一个微信小程序的分支代码在更新后,若既存在部分新增进第一分支代码的代码,又存在第一分支代码中的部分代码被删除,还存在第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第三Hash表文件、第四Hash表文件以及第五Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件、第四Hash表文件以及第五Hash表文件导入到预设的待编译文件列表中,第三Hash表文件、第四Hash表文件以及第五Hash表文件即为待编译信息。
编译模块306用于处理待编译信息并生成微信小程序的预编译代码,具体的:
编译模块306接收Diff信息处理模块305发送的待编译信息;
若待编译信息中存在第三Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,生成第三分支代码;
若待编译信息中存在第四Hash表文件,则将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,生成第四分支代码;
若待编译信息中存在第五Hash表文件,则对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第五分支代码。
若待编译信息中既存在第三Hash表文件还存在第四Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,同时还将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,生成第六分支代码。
若待编译信息中既存在第三Hash表文件还存在第五Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,同时还对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第七分支代码。
若待编译信息中既存在第四Hash表文件还存在第五Hash表文件,则将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,同时还对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第八分支代码。
若待编译信息中同时存在第三Hash表文件、第四Hash表文件以及第五Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,同时还将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,同时又对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第九分支代码。
将第三分支代码、第四分支代码、第五分支代码记、第六分支代码、第七分支代码、第八分支代码以及第九分支代码均为可能的预编译代码。
在实施中,根据待编译信息的具体内容将第三分支代码、第四分支代码、第五分支代码记、第六分支代码、第七分支代码、第八分支代码以及第九分支代码中的一个分支代码作为预编译信息,将进一步将预编译代码发送至微信开发者工具330。
微信开发者工具330用于调试预编译代码并编译出微信小程序的代码包,具体的:
微信开发者工具330先接收编译模块306发送的预编译代码;
对接收的预编译代码进行调试;
将通过调试的预编译代码集成到微信小程序的代码主干上,生成微信小程序的代码包。
基于同样的发明构思,本申请实施例还公开一种微信小程序打包方法,参照图2,包括以下步骤:
S100、获取需进行打包的第一信息。
第一信息包括需要进行打包的Git仓库310信息以及该Git仓库310中存储的微信小程序分支的信息。需要说明的是,Git仓库310中存储有一个微信小程序每个版本的各个分支的代码以及各个分支代码对应的Hash表文件。
在实施中,若一个微信小程序需要进行版本的更迭,则开发者开发完本次版本微信小程序的分支代码后,会将开发完的分支代码上传至对应的Git仓库310中。
具体的,进行微信小程序的打包操作所使用到的Git仓库310中的信息主要包括本次版本微信小程序有更新的一个或多个分支代码以及相应分支代码的Hash表文件,还包括上一版本微信小程序对应的一个或多个分支代码以及相应分支代码的Hash表文件。为了便于表述,且将上一版本微信小程序有更新的一个或多个分支代码记为第一分支代码,将与第一分支代码对应或者说对应的Hash表文件记为第一Hash表文件;并将本次版本微信小程序对应的一个或多个分支代码记为第二分支代码,将与第二分支代码对应或者说对应的Hash表文件记为第二Hash表文件。
在实施中,用户可通过移动端扫描客户端登录界面上的微信二维码,从而登录至登录微信小程序打包平台,用户登录微信小程序打包平台后,可通过客户端选择包括第一分支代码、第一Hash表文件、第二分支代码以及第二Hash表文件在内的第一信息,且将上述第一信息发送至服务系统200。
客户端和服务系统200之间设置有通信层100,通信层100用于建立客户端和服务系统200之间的通信。
在实施中,当用户使用客户端选择好第一信息后,可进一步通过通信层100将第一信息发送至服务系统200,服务系统200通过接收模块203获取第一信息。
S200、对第一信息进行处理,生成Diff信息。
在实施中,接收模块203接收到第一信息后进一步将第一信息发送至Diff信息生成模块204,Diff信息生成模块204接收第一信息后对第一信息进行处理,然后生成Diff信息。
S200包括以下步骤,参照图3:
S201、获取第一Hash表文件和第二Hash表文件。
第一信息中包括第一分支代码以及与第一分支代码相对应的第一Hash表文件,第一信息中还包括第二分支代码以及与第二分支代码相对应的第二Hash表文件。
Diff信息生成模块204从接收到的第一信息中读取与第一分支代码相对应的第一Hash表文件以及与第二分支代码相对应的第二Hash表文件。
S202、比较第一Hash表文件和第二Hash表文件,得到Diff信息。
具体的,第一Hash表文件和第二Hash表文件均包括若干文件以及与每个文件一一对应的Hash值。
在比较中:
若某个文件在第二Hash表文件存在,但在第一Hash表文件中不存在,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“新增”。
若某个文件在第二Hash表文件不存在,但在第一Hash表文件中存在,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“删除”。
若某个文件在第二Hash表文件存在,在第一Hash表文件中也存在,但该文件在第二Hash表文件中对应的Hash值与该文件在第一Hash表文件中对应的Hash值不同,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“变化”。
若某个文件在第二Hash表文件存在,在第一Hash表文件中也存在,且该文件在第二Hash表文件中对应的Hash值与该文件在第一Hash表文件中对应的Hash值相同,则Diff信息为:该文件的文件名以及该文件本次编译的编译类型为“不操作”。
当Diff信息生成模块204完成Diff信息的生成操作以后,进一步将生成的Diff信息发送至Diff信息处理模块305。
S300、对Diff信息进行处理,生成待编译信息。
S300包括以下步骤,参照图4:
S301、获取Diff信息。
在实施中,Diff信息处理模块305获取Diff信息生成模块204发送的Diff信息,并进一步读取每个Diff信息的具体内容。
S302、对Diff信息进行处理,生成待编译信息。
在实施中,若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“新增”,则通过文件I/O将第二Hash表文件中新增的文件复制并拷贝到第一Hash表文件中相应的位置上,由此生成第三Hash表文件。
在实施中,若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“删除”,则通过文件I/O将第一Hash表文件中相对于第二Hash表文件多出的文件删除,由此生成第四Hash表文件。
在实施中,若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“变化”,则通过文件I/O将第二Hash表文件中相对于第一Hash表文件发生变化的文件复制并拷贝到第一Hash表文件中相应的位置上,由此生成第五Hash表文件。
在实施中,若接收的Diff信息为该文件的文件名以及该文件本次编译的编译类型为“不操作”,则不对第一Hash表文件进行操作。
Diff信息处理模块305将第三Hash表文件、第四Hash表文件以及第五Hash表文件均导入到预设的待编译文件列表中,生成待编译信息,并将待编译信息发送至编译模块306。
S400、对待编译信息进行处理,生成预编译代码。
S400包括以下步骤,参照图5:
S401、获取待编译信息。
在实施中,一个微信小程序的分支代码在更新后,若存在部分新增进第一分支代码的代码,则通过Diff信息处理模块305会生成第三Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件导入到预设的待编译文件列表中。
一个微信小程序的分支代码在更新后,若第一分支代码中的部分代码被删除,则通过Diff信息处理模块305会生成第四Hash表文件,进一步,Diff信息处理模块305将第四Hash表文件导入到预设的待编译文件列表中。
一个微信小程序的分支代码在更新后,若第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第五Hash表文件,进一步,Diff信息处理模块305将第五Hash表文件导入到预设的待编译文件列表中。
一个微信小程序的分支代码在更新后,若既存在部分新增进第一分支代码的代码,还存在第一分支代码中的部分代码被删除,则通过Diff信息处理模块305会生成第三Hash表文件和第四Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件和第四Hash表文件导入到预设的待编译文件列表中。
一个微信小程序的分支代码在更新后,若既存在部分新增进第一分支代码的代码,还存在第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第三Hash表文件和第五Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件和第五Hash表文件导入到预设的待编译文件列表中。
一个微信小程序的分支代码在更新后,若既存在第一分支代码中的部分代码被删除,还存在第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第四Hash表文件和第五Hash表文件,进一步,Diff信息处理模块305将第四Hash表文件和第五Hash表文件导入到预设的待编译文件列表中。
一个微信小程序的分支代码在更新后,若既存在部分新增进第一分支代码的代码,又存在第一分支代码中的部分代码被删除,还存在第一分支代码中的部分代码发生变化,则通过Diff信息处理模块305会生成第三Hash表文件、第四Hash表文件以及第五Hash表文件,进一步,Diff信息处理模块305将第三Hash表文件、第四Hash表文件以及第五Hash表文件导入到预设的待编译文件列表中。
通过Diff信息处理模块305导入待编译文件列表中的文件即为待编译信息。
在实施中,当待编译文件列表完成待编译信息的导入后,Diff信息处理模块305将待编译文件列表中的待编译信息传至编译模块306,编译模块306获取待编译信息。
S402、依据待编译信息对更新后的第一分支代码进行编译,生成预编译代码。
由于待编译文件列表中的待编译信息可能存在第三Hash表文件、第四Hash表文件以及第五Hash表文件,则:
在实施中,若待编译信息中仅存在第三Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,生成第三分支代码;
若待编译信息中仅存在第四Hash表文件,则将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,生成第四分支代码;
若待编译信息中仅存在第五Hash表文件,则对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第五分支代码。
若待编译信息中既存在第三Hash表文件还存在第四Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,同时还将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,生成第六分支代码。
若待编译信息中既存在第三Hash表文件还存在第五Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,同时还对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第七分支代码。
若待编译信息中既存在第四Hash表文件还存在第五Hash表文件,则将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,同时还对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第八分支代码。
若待编译信息中同时存在第三Hash表文件、第四Hash表文件以及第五Hash表文件,则编译第三Hash表文件中新增的文件,并将编译后的代码集成到第一分支代码上,同时还将第一Hash表文件中删除的文件对应的第一分支代码中的代码进行删除,同时又对第五Hash表文件中从第二Hash表文件复制并拷贝过来的文件进行编译,并将编译后的代码覆盖第一分支代码相应位置上的代码,生成第九分支代码。
将第三分支代码、第四分支代码、第五分支代码记、第六分支代码、第七分支代码、第八分支代码以及第九分支代码均为可能的预编译代码。
在实施中,根据待编译信息的具体内容将第三分支代码、第四分支代码、第五分支代码记、第六分支代码、第七分支代码、第八分支代码以及第九分支代码中的一个分支代码作为预编译信息,将进一步将预编译代码发送至微信开发者工具330。
S500、对预编译代码进行调试,生成微信小程序的代码包,实现微信小程序的打包。
在实施中,首先,微信开发者工具330接收编译模块306发送的预编译代码。然后,对接收的预编译代码进行调试。最后,将通过调试的预编译代码集成到微信小程序的代码主干上,生成微信小程序的代码包。
在实施中,进一步将生成的微信小程序的代码包上传至客户端或者微信平台,并生成相应的开发版二维码,优选的,用户可以通过使用微信扫描开发版二维码的方式体验更新后的微信小程序。
图2为一个实施例中一种微信小程序打包方法的流程示意图。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行;除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行;并且图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
基于相同的发明构思在本申请实施例中还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述一种微信小程序打包方法的步骤。此处微信小程序打包方法的步骤可以是上述实施例的一种微信小程序打包方法中的步骤。
基于相同的发明构思在本申请实施例中还提供了一种计算机可读存储介质,其存储有能够被处理器加载并执行如上述一种微信小程序打包方法的计算机程序,该计算机可读存储介质例如包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。

Claims (10)

1.一种微信小程序打包平台,其特征在于:包括服务系统(200)和文件系统(300);
所述服务系统(200)用于获取第一信息并依据所述第一信息生成所述微信小程序的预编译代码;
所述文件系统(300)用于供所述服务系统(200)调用;
所述服务系统(200)包括接收模块(203)、Diff信息生成模块(204)、Diff信息处理模块(205)以及编译模块(206);
所述文件系统(300)包括微信开发者工具(330);
所述接收模块(203)用于接收所述第一信息;
所述Diff信息生成模块(204)用于处理所述第一信息并生成相应的Diff信息;
所述Diff信息处理模块(205)用于处理所述Diff信息并生成相应的待编译信息;
所述编译模块(206)用于处理所述待编译信息并生成所述预编译代码;
所述微信开发者工具(330)用于调试所述预编译代码并编译出所述微信小程序的代码包,实现所述微信小程序的打包。
2.根据权利要求1所述的一种微信小程序打包平台,其特征在于:所述文件系统(300)还包括用户空间(311)和代码空间(312);
所述用户空间(311)用于分别独立存储每个用户开发的所述微信小程序的第一分支代码,以及与所述第一分支代码对应的第一Hash表文件,所述用户空间(311)还用于存储所述Diff信息以及所述预编译代码;
所述代码空间(312)用于存储重新编译的且与所述第一分支代码对应的第二分支代码,以及与所述第二分支代码对应的第二Hash表文件。
3.根据权利要求2所述的一种微信小程序打包平台,其特征在于:所述服务系统(200)还包括定时任务模块(201),所述文件系统(300)还包括Git仓库(310);
所述Git仓库(310)用于存储微信小程序各版本的分支代码;
所述定时任务模块(201)用于每隔预设的更新时间间隔判断所述第二分支代码相较于所述第一分支代码在预设的时间范围内是否有更新,若有更新,则将所述第一分支代码更新为所述第二分支代码。
4.根据权利要求3所述的一种微信小程序打包平台,其特征在于:所述服务系统(200)还包括WebHooks模块(202);
所述WebHooks模块(202)的工作模式为触发式,触发条件为所述Git仓库(310)中写入所述第二分支代码;
所述WebHooks模块(202)用于受到触发后通知所述微信小程序打包平台将所述第一分支代码更新为所述第二分支代码。
5.一种微信小程序打包方法,其特征在于,包括:
获取需进行打包的第一信息;
对所述第一信息进行处理,生成Diff信息;
对所述Diff信息进行处理,生成待编译信息;
对所述待编译信息进行处理,生成预编译代码;
对所述预编译代码进行调试,生成所述微信小程序的代码包,实现所述微信小程序的打包。
6.根据权利要求5所述的一种微信小程序打包方法,其特征在于:所述第一信息包括第一Hash表文件和第二Hash表文件;
所述对所述第一信息进行处理,生成Diff信息,包括:
获取所述第一Hash表文件和所述第二Hash表文件;
比较所述第一Hash表文件和所述第二Hash表文件,得到所述Diff信息。
7.根据权利要求6所述的一种微信小程序打包方法,其特征在于:所述Diff信息包括所述第一Hash表文件和所述第二Hash表文件需要编译的文件名及其编译类型;
所述对所述Diff信息进行处理,生成待编译信息,包括:
获取所述Diff信息;
对所述Diff信息进行处理,生成待编译信息。
8.根据根据权利要求7所述的一种微信小程序打包方法,其特征在于:所述对所述待编译信息进行处理,生成预编译代码,包括:
获取所述待编译信息;
依据所述待编译信息对更新后的所述第一分支代码进行编译,生成预编译代码。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如权利要求5至8中任一种微信小程序打包方法的计算机程序。
10.一种计算机可读存储介质,其特征在于,存储有能够被处理器加载并执行如权利要求5至8中任一种微信小程序打包方法的计算机程序。
CN202111328149.9A 2021-11-10 2021-11-10 一种微信小程序打包平台、方法、设备及存储介质 Pending CN114253596A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111328149.9A CN114253596A (zh) 2021-11-10 2021-11-10 一种微信小程序打包平台、方法、设备及存储介质
PCT/CN2021/134242 WO2023082365A1 (zh) 2021-11-10 2021-11-30 一种微信小程序打包平台、方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111328149.9A CN114253596A (zh) 2021-11-10 2021-11-10 一种微信小程序打包平台、方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114253596A true CN114253596A (zh) 2022-03-29

Family

ID=80792416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111328149.9A Pending CN114253596A (zh) 2021-11-10 2021-11-10 一种微信小程序打包平台、方法、设备及存储介质

Country Status (2)

Country Link
CN (1) CN114253596A (zh)
WO (1) WO2023082365A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9483259B1 (en) * 2012-05-07 2016-11-01 Google Inc. System and method for providing real-time execution of source code in a collaborative online software development environment
CN110333868B (zh) * 2019-06-12 2023-12-19 创新先进技术有限公司 用于生成子应用的安装包的方法和系统
CN112114815B (zh) * 2020-09-23 2024-05-14 南京楚航科技有限公司 一种自动化编译和软件版本发布方法
CN112748926B (zh) * 2020-12-30 2024-05-17 上海微盟企业发展有限公司 一种小程序发布方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
WO2023082365A1 (zh) 2023-05-19

Similar Documents

Publication Publication Date Title
CN107967139B (zh) 游戏的热更新方法及装置
US20080098160A1 (en) Mobile device capable of multiple updates
CN109710185B (zh) 数据处理方法及装置
CN109766124A (zh) 业务开发方法、装置、计算机设备和存储介质
CN110166543A (zh) 应用程序处理方法、装置和计算机设备
CN111176717B (zh) 生成安装包的方法、装置及电子设备
CN110569108B (zh) 小游戏虚拟机执行环境的创建方法及相关产品
CN109800005B (zh) 一种客户端热更新方法及装置
TW201421363A (zh) 傳播更新的驅動程式給行動計算裝置的方法及其傳播系統
CN111026439B (zh) 应用程序的兼容方法、装置、设备及计算机存储介质
CN112256296A (zh) 基于Weex的快递服务APP更新方法、装置、设备及存储介质
CN110362338B (zh) 一种在移动平台下的游戏资源打包和资源快速访问方法
CN108549537A (zh) 基于Android终端的用户数据采集的方法及系统
CN109358833B (zh) 一种音频播放方法及系统、一种计算设备及存储介质
CN108614702A (zh) 字节码优化方法及装置
CN109491661A (zh) 通用交叉编译方法及设备
CN114356341A (zh) 一种数据处理方法、装置、设备、存储介质及产品
CN110032425B (zh) 一种动态链接库文件虚拟化方法、系统及存储介质
CN107918587B (zh) 一种应用程序的调试方法及系统
CN115994085A (zh) 代码覆盖率的测试处理方法、装置、设备及存储介质
CN114253596A (zh) 一种微信小程序打包平台、方法、设备及存储介质
CN109933342B (zh) 一种从本地docker镜像中提取文件内容的方法及装置
CN110990056A (zh) 逆向分析方法、装置、电子设备及存储介质
CN114020278B (zh) 数据处理方法、装置、设备及存储介质
CN113220314A (zh) App资源加载及apk生成方法、装置、设备及介质

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