CN110908738B - 用于运行小程序的方法和装置 - Google Patents

用于运行小程序的方法和装置 Download PDF

Info

Publication number
CN110908738B
CN110908738B CN201911199931.8A CN201911199931A CN110908738B CN 110908738 B CN110908738 B CN 110908738B CN 201911199931 A CN201911199931 A CN 201911199931A CN 110908738 B CN110908738 B CN 110908738B
Authority
CN
China
Prior art keywords
dynamic library
applet
referenced
platform
small program
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
CN201911199931.8A
Other languages
English (en)
Other versions
CN110908738A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201911199931.8A priority Critical patent/CN110908738B/zh
Publication of CN110908738A publication Critical patent/CN110908738A/zh
Priority to GB2007821.8A priority patent/GB2589658B/en
Priority to US16/894,946 priority patent/US11550599B2/en
Priority to DE102020115253.1A priority patent/DE102020115253A1/de
Priority to FR2006000A priority patent/FR3103927B1/fr
Application granted granted Critical
Publication of CN110908738B publication Critical patent/CN110908738B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44584Portable applications, i.e. making applications self-contained, e.g. U3 standard

Landscapes

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

Abstract

本申请实施例公开了用于运行小程序的方法和装置。该方法的一具体实施方式包括:响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库;从沙盒目录和/或小程序平台加载小程序所引用的动态库;响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。该实施方式在运行小程序时,从沙盒目录和/或小程序平台加载小程序所引用的动态库,小程序包中不再集成动态库。即使小程序所引用的动态库新增特征,也无需将最新版本的动态库集成到小程序包中。由于小程序包的代码无变化,因此就无需重新提审小程序包,大幅提升了收敛率。

Description

用于运行小程序的方法和装置
技术领域
本申请实施例涉及计算机技术领域,具体涉及用于运行小程序的方法和装置。
背景技术
随着计算机技术的不断发展,各种应用层出不穷。而小程序作为一种不需要下载安装即可使用的应用,更是得到了各行各业的广泛关注。
传统的小程序需要开发者完全自己开发所有业务模块和逻辑,其开发工作量较大。为了减轻小程序开发者的负担,促进小程序的发展,可以把一些常用的API(Application Programming Interface,应用程序编程接口)、组件和页面等封装成插件供其他小程序直接引用。如果某个小程序要引用一个插件,配置文件不仅需要配置该插件的标识,还需要配置该插件的版本。此外,该插件还需要集成在小程序包中。在运行该小程序时,直接使用小程序包中集成的该插件。如果该插件新增一些特征发布了新版本,那么该小程序要想使用新特征,必须在配置文件中将该插件的版本手动修改为最新版本,同时将最新版本的该插件集成到小程序包中,随后提审新的小程序包。新的小程序包过审后还需要一段时间的收敛后运行该小程序,才能使用户看到新特征。
发明内容
本申请实施例提出了用于运行小程序的方法和装置。
第一方面,本申请实施例提出了一种用于运行小程序的方法,包括:响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库;从沙盒目录和/或小程序平台加载小程序所引用的动态库;响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。
在一些实施例中,在读取配置文件以确定小程序所引用的动态库之前,还包括:对小程序进行签名和安全验证。
在一些实施例中,从沙盒目录和/或小程序平台加载小程序所引用的动态库,包括:对于小程序所引用的每个动态库,确定沙盒目录中是否存储该动态库;若未存储该动态库,从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
在一些实施例中,从沙盒目录和/或小程序平台加载小程序所引用的动态库,还包括:若沙盒目录存储该动态库,确定该动态库的下载时间是否超过过期时间;若超过过期时间,从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
在一些实施例中,从沙盒目录和/或小程序平台加载小程序所引用的动态库,还包括:若未超过过期时间,或者超过过期时间但最新版本的该动态库下载失败,加载沙盒目录中存储的该动态库。
在一些实施例中,从沙盒目录和/或小程序平台加载小程序所引用的动态库,还包括:若未超过过期时间,且小程序平台存在最新版本的该动态库,异步下载最新版本的该动态库。
在一些实施例中,下载的最新版本的该动态库存储到沙盒目录中,该动态库的超时时间和版本信息存储到数据库中,不同小程序共享沙盒目录中的动态库。
在一些实施例中,该方法还包括:在运行小程序的主页面的脚本代码时,确定小程序的从页面所引用的动态库,以及从小程序平台预下载从页面所引用的动态库。
在一些实施例中,该方法还包括:在跳转至小程序的从页面时,将沙盒目录的路径传递至前端,以使前端从路径下预加载从页面所引用的动态库。
在一些实施例中,动态库通过如下步骤发布:获取用户在小程序平台上注册的动态库的标识;获取用户使用小程序平台提供的开发工具开发的脚本、组件和页面;若脚本、组件和页面通过编译和调试,对脚本、组件和页面进行封装,得到动态库;对动态库、调试动态库的小程序样本和动态库的文档同时进行发布。
在一些实施例中,小程序通过如下步骤引用动态库:在配置文件中配置小程序所引用的动态库的标识;在页面文件中声明小程序所引用的动态库的使用组件;在布局文件中指定小程序所引用的动态库的位置和相关属性;在小程序的脚本代码中调用小程序所引用的动态库。
第二方面,本申请实施例提出了一种用于运行小程序的装置,包括:读取单元,被配置成响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库;加载单元,被配置成从沙盒目录和/或小程序平台加载小程序所引用的动态库;运行单元,被配置成响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。
在一些实施例中,该装置还包括:验证单元,被配置成对小程序进行签名和安全验证。
在一些实施例中,加载单元包括:第一确定子单元,被配置成对于小程序所引用的每个动态库,确定沙盒目录中是否存储该动态库;第一加载子单元,被配置成若未存储该动态库,从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
在一些实施例中,加载单元还包括:第二确定子单元,被配置成若沙盒目录存储该动态库,确定该动态库的下载时间是否超过过期时间;第二加载子单元,被配置成若超过过期时间,从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
在一些实施例中,加载单元还包括:第三加载子单元,被配置成若未超过过期时间,或者超过过期时间但最新版本的该动态库下载失败,加载沙盒目录中存储的该动态库。
在一些实施例中,加载单元还包括:异步下载子单元,被配置成若未超过过期时间,且小程序平台存在最新版本的该动态库,异步下载最新版本的该动态库。
在一些实施例中,下载的最新版本的该动态库存储到沙盒目录中,该动态库的超时时间和版本信息存储到数据库中,不同小程序共享沙盒目录中的动态库。
在一些实施例中,该装置还包括:预下载单元,被配置成在运行小程序的主页面的脚本代码时,确定小程序的从页面所引用的动态库,以及从小程序平台预下载从页面所引用的动态库。
在一些实施例中,该装置还包括:预加载单元,被配置成在跳转至小程序的从页面时,将沙盒目录的路径传递至前端,以使前端从路径下预加载从页面所引用的动态库。
在一些实施例中,动态库通过如下步骤发布:获取用户在小程序平台上注册的动态库的标识;获取用户使用小程序平台提供的开发工具开发的脚本、组件和页面;若脚本、组件和页面通过编译和调试,对脚本、组件和页面进行封装,得到动态库;对动态库、调试动态库的小程序样本和动态库的文档同时进行发布。
在一些实施例中,小程序通过如下步骤引用动态库:在配置文件中配置小程序所引用的动态库的标识;在页面文件中声明小程序所引用的动态库的使用组件;在布局文件中指定小程序所引用的动态库的位置和相关属性;在小程序的脚本代码中调用小程序所引用的动态库。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。
本申请实施例提供的用于运行小程序的方法和装置,首先响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库;然后从沙盒目录和/或小程序平台加载小程序所引用的动态库;最后响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。在运行小程序时,从沙盒目录和/或小程序平台加载小程序所引用的动态库,小程序包中不再集成动态库。即使小程序所引用的动态库新增特征,也无需将最新版本的动态库集成到小程序包中。由于小程序包的代码无变化,因此就无需重新提审小程序包,大幅提升了收敛率。此外,动态库不再集成在小程序包中,还实现了与小程序包在代码上互相隔离,进而防止开发者修改动态库的代码或者泄露动态库的核心实现。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构;
图2是根据本申请的用于运行小程序的方法的一个实施例的流程图;
图3是根据本申请的用于运行小程序的方法的又一个实施例的流程图;
图4是运行小程序的架构图;
图5是根据本申请的用于运行小程序的装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于运行小程序的方法或用于运行小程序的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括设备101、102、103和网络104。网络104用以在设备101、102、103之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
设备101、102、103可以是支持网络连接从而提供各种网络服务的硬件设备或软件。当设备为硬件时,其可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机和服务器等等。这时,作为硬件设备,其可以实现成多个设备组成的分布式设备群,也可以实现成单个设备。当设备为软件时,可以安装在上述所列举的电子设备中。这时,作为软件,其可以实现成例如用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
在实践中,设备可以通过安装相应的客户端应用或服务端应用来提供相应的网络服务。设备在安装了客户端应用之后,其可以在网络通信中体现为客户端。相应地,在安装了服务端应用之后,其可以在网络通信中体现为服务端。
作为示例,在图1中,设备101体现为客户端,而设备102、103体现为服务端。例如,设备101可以是安装有宿主应用的客户端,设备102可以是宿主应用的服务端,设备103可以是小程序的服务端。
需要说明的是,本申请实施例所提供的用于运行小程序的方法一般由设备101执行,相应地,用于运行小程序的装置一般设置于设备101中。
应该理解,图1中的网络和设备的数目仅仅是示意性的。根据实现需要,可以具有任意数目的网络和设备。
继续参考图2,其示出了根据本申请的用于运行小程序的方法的一个实施例的流程200。该用于运行小程序的方法包括以下步骤:
步骤201,响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库。
在本实施例中,当小程序下发到宿主应用上时,用于运行小程序的方法的执行主体(例如图1所示的设备101)可以读取配置文件,以确定小程序所引用的动态库。
这里,宿主应用可以例如是即时通信应用、搜索类应用等客户端应用。小程序可以是在宿主应用中运行的应用程序。小程序的运行依赖于宿主应用。宿主应用可以运行多个小程序。通常,若用户想要运行小程序,需要在宿主应用中搜索该小程序,若搜索结果页面上存在该小程序,那么该小程序就下发到了宿主应用上。
这里,配置文件可以是app.json。每个小程序对应一个配置文件,且配置文件记录有对应的小程序所引用的动态库的标识。一个小程序可以引用多个不同的动态库。动态库可以是对小程序开发中频繁使用和公用的脚本、组件和页面等进行封装所得到的。动态库的标识可以例如是动态库的名称和/或别名。动态库的名称在小程序平台上唯一。动态库的别名在同一小程序中唯一。此外,配置文件不再记录小程序所引用的动态库的版本,因此即使小程序所引用的动态库新增特征而更新版本,也无需在配置文件中更新小程序所引用的动态库的最新版本,更无需提审新的小程序包,从而大幅提升了收敛率。
在本实施例的一些可选的实现方式中,动态库可以通过如下步骤发布:
首先,获取用户在小程序平台上注册的动态库的标识。
通常,若要开发动态库,就需要开发者在小程序平台上注册动态库的标识。
之后,获取用户使用小程序平台提供的开发工具开发的脚本、组件和页面。
通常,小程序平台会提供开发工具,开发者可以使用小程序平台提供的开发工具开发频繁使用和公用的脚本(JS)、组件和页面等。
然后,若脚本、组件和页面通过编译和调试,对脚本、组件和页面进行封装,得到动态库。
通常,脚本、组件和页面等需要进行编译和调试,在通过编译和调试后,会将脚本、组件和页面等封装成动态库。并且,动态库对外提供API,小程序通过调用动态库的API实现对动态库的引用。
最后,对动态库、调试动态库的小程序样本和动态库的文档同时进行发布。
通常,在发布动态库时,需要提供动态库、调试动态库的小程序样本和动态库的文档三份文件,同时发布。其中,动态库是开发者开发和其他小程序引用的内容。调试动态库的小程序样本可以供审核人员审核,以及使用该动态库的小程序开发者调试预览用。动态库的文档可以提供该动态库所提供的特征的API,便于开发者接入。
应当理解的是,小程序开发中频繁使用和公用的脚本、组件和页面等封装成动态库,并上传至小程序平台供其他小程序引用。对于可从小程序平台引用的动态库,小程序开发者无需重复开发,从而降低了小程序的开发工作量。
在本实施例的一些可选的实现方式中,小程序可以通过如下步骤引用动态库:
首先,在配置文件中配置小程序所引用的动态库的标识。
这里,配置文件中配置小程序所引用的动态库的标识的代码可以例如是:
Figure BDA0002295611580000081
其中,app.json是配置文件,dynamicLib是小程序所引用动态库的声明地方,myAliasA和myAliasB是小程序所引用动态库的别名,DynamicLibAAA和DynamicLibBBB是小程序所引用动态库的名称。
之后,在页面文件中声明小程序所引用的动态库的使用组件。
这里,在页面文件中声明小程序所引用的动态库的使用组件的代码可以例如是:
Figure BDA0002295611580000082
Figure BDA0002295611580000091
其中,xxxPage.json是页面文件,usingComponents是页面文件中使用组件声明,my-component:dynamicLib://myAliasA/hello-component是声明使用别名为myAliasA的动态库的hello-component页面。
然后,在布局文件中指定小程序所引用的动态库的位置和相关属性。
这里,在布局文件中指定小程序所引用的动态库的位置和相关属性的代码可以例如是:
Figure BDA0002295611580000092
其中,xxxPage.swan是布局文件,<my-component></my-component>是xxxPage.swan中某个位置引用该动态库。
最后,在小程序的脚本代码中调用小程序所引用的动态库。
这里,在小程序的脚本代码中调用小程序所引用的动态库的代码可以例如是:
xxxPage.js
var lib=requireDynamicLib(‘myAliasA’);
其中,xxxPage.js是小程序的脚本代码,var lib=requireDynamicLib(‘myAliasA’)是在xxxPage.js代码中加载别名为myAliasA的动态库。
在本实施例的一些可选的实现方式中,上述执行主体可以对小程序进行签名和安全验证。在通过签名和安全验证之后,上述执行主体才会读取配置文件。
步骤202,从沙盒目录和/或小程序平台加载小程序所引用的动态库。
在本实施例中,对于小程序所引用的每个动态库,上述执行主体可以从沙盒目录或小程序平台加载该动态库。例如,若小程序平台上发布的该动态库的最新版本与沙盒目录中存储的该动态库的版本一致,上述执行主体可以直接从沙盒目录加载该动态库。若小程序平台上发布的该动态库的最新版本与沙盒目录中存储的该动态库的版本不一致,上述执行主体可以从小程序平台实时下载最新版本的该动态库,以及加载最新版本的该动态库。此外,所下载的最新版本的该动态库会存储到沙盒目录中,以便于下次运行小程序时引用。
通常,动态库更新特征后,引用该动态库的小程序无需在配置文件中更改该动态库的引用,也无需重新发布小程序包。在用户打开小程序时会查询小程序平台,以确定该动态库是否更新特征。如果没有更新则使用沙盒目录中的该动态库;如果有更新则将最新版本的动态库从小程序平台下载到沙盒目录中,运行小程序时就能呈现动态库的新特征。
应当理解的是,小程序所引用的动态库的代码并非打包时集成到小程序包中,而是使用时下载到沙盒目录,与小程序存储目录并行存储,但在代码上互相隔离。这样做的有点至少包括以下三项:其一,隔离:小程序和动态库的代码隔离存储,防止开发者修改动态库的代码或者泄露动态库的核心实现,两者仅存在调用API关系,接口实现层并不被使用者可见;其二,复用:不同小程序可以共享沙盒目录中的动态库,若两个小程序引用同一个动态库,一个小程序运行时已经下载了最新版本的该动态库,那么运行另一个小程序时,就无需重复下载该动态库,直接从沙盒目录中加载最新版本的该动态库即可,从而达到复用的目的;其三,安全:动态库存储在沙盒目录中,极大降低了用户以及其他竞争对手破解的风险,相对于存储在存储卡或直接将代码集成在小程序包中更为安全。
步骤203,响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。
在本实施例中,在接收到小程序的运行指令时,上述执行主体可以运行小程序的脚本代码以调用小程序所引用的动态库,使用动态库提供的特征。其中,当点击进入小程序的任一页面时,可以认为接收到小程序的运行指令。小程序的页面可以包括主页面和从页面。
在本实施例的一些可选的实现方式中,上述执行主体可以预下载和预加载动态库。具体地,在运行小程序的主页面的脚本代码时,上述执行主体可以确定小程序的从页面所引用的动态库,以及从小程序平台预下载从页面所引用的动态库。在跳转至小程序的从页面时,上述执行主体可以将沙盒目录的路径传递至前端,以使前端从路径下预加载从页面所引用的动态库。这里,小程序框架Runtime(在运行的状态)提供了预下载动态库的能力。通常,有些动态库的引用在小程序的从页面,在打开小程序的主页面后,上述执行主体可以动态调用预下载能力:preDownloadSwanPlugin,批量下载从页面引用的动态库,以便跳转至从页面时引用的动态库的页面能够提前做好准备。当跳转至从页面时,上述执行主体可以在从页面的页面准备事件产生时将沙盒目录的路径传递至前端,前端框架可以预加载该路径下动态库的代码,从而在从页面渲染时能够执行对应的脚本逻辑。
本申请实施例提供的用于运行小程序的方法,首先响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库;然后从沙盒目录和/或小程序平台加载小程序所引用的动态库;最后响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。在运行小程序时,从沙盒目录和/或小程序平台加载小程序所引用的动态库,小程序包中不再集成动态库。即使小程序所引用的动态库新增特征,也无需将最新版本的动态库集成到小程序包中。由于小程序包的代码无变化,因此就无需重新提审小程序包,大幅提升了收敛率。此外,动态库不再集成在小程序包中,还实现了与小程序包在代码上互相隔离,进而防止开发者修改动态库的代码或者泄露动态库的核心实现。
进一步参考图3,其示出了根据本申请的用于运行小程序的方法的又一个实施例的流程300。该用于运行小程序的方法包括以下步骤:
步骤301,响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库。
在本实施例中,步骤301的具体操作已在图2所示的实施例中步骤201中进行了详细的介绍,在此不再赘述。
步骤302,对于小程序所引用的每个动态库,确定沙盒目录中是否存储该动态库。
在本实施例中,对于小程序所引用的每个动态库,用于运行小程序的方法的执行主体(例如图1所示的设备101)可以查询沙盒目录,以确定沙盒目录中是否存储该动态库。若沙盒目录中存储该动态库,执行步骤303;若沙盒目录中未存储该动态库,执行步骤304。
步骤303,确定该动态库的下载时间是否超过过期时间。
在本实施例中,若沙盒目录存储该动态库,上述执行主体可以确定该动态库的下载时间是否超过过期时间。若超过过期时间,执行步骤304。若未超过过期时间,执行步骤305。其中,过期时间可以是maxAge,一般为1小时。
步骤304,从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
在本实施例中,若未存储该动态库,或者存储的该动态库的下载时间超过过期时间,上述执行主体可以从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。其中,同步下载可以是实时下载,例如,只要确定出未存储该动态库,或者存储的该动态库的下载时间超过过期时间,就立即建立上述执行主体与小程序平台之间的通信连接,并从小程序平台实时下载最新版本的该动态库。
通常,在一个小程序引用一个动态库之后,当用户首次打开该小程序时,框架Runtime检测到沙盒目录没有任何版本的该动态库,则会同步下载最新版本的该动态库到沙盒目录,并且动态库的过期时间、版本等信息会存储到数据库中。此外,当再次冷启动该小程序时,如果距离上次下载该动态库的时间超过过期时间,说明沙盒目录中的该动态库无效,会再次同步下载最新版本的该动态库到沙盒目录,并且动态库的过期时间、版本等信息会存储到数据库中。
在本实施例的一些可选的实现方式中,下载的最新版本的该动态库可以存储在沙盒目录中,该动态库的超时时间和版本信息可以存储在数据库中。不同小程序可以共享沙盒目录中的动态库。也就是说,动态库可以复用。例如,若两个小程序引用同一个动态库,一个小程序运行时已经下载了最新版本的该动态库,那么运行另一个小程序时,就无需重复下载该动态库,直接从沙盒目录中加载最新版本的该动态库即可,从而达到复用的目的。
步骤305,加载沙盒目录中存储的该动态库。
在本实施例中,若未超过过期时间,上述执行主体可以加载沙盒目录中存储的该动态库。此外,若超过过期时间,但是最新版本的该动态库下载失败,上述执行主体也可以加载沙盒目录中存储的该动态库。例如,若小程序平台未发布版本不同于沙盒目录中存储的该动态库,说明沙盒目录中存储的就是最新版本的该动态库,此时,即使超过过期时间,也不会再从小程序平台中下载该动态库。
通常,当再次冷启动一个小程序时,如果距离上次下载所引用的一个动态库的时间没有超过过期时间,说明沙盒目录中的该动态库有效,不会再下载最新版本的该动态库,直接使用沙盒目录中的最新版本的该动态库。此外,当再次冷启动该小程序时,如果距离上次下载该动态库的时间超过过期时间,但小程序平台无更新版本的该动态库,说明沙盒目录中存储的就是最新版本的该动态库,会直接使用沙盒目录中的最新版本的该动态库。
在本实施例的一些可选的实现方式中,若未超过过期时间,且小程序平台存在最新版本的该动态库,上述执行主体可以异步下载最新版本的该动态库。下载的最新版本的该动态库可以存储到沙盒目录中,以便下次运行小程序时使用。其中,异步下载可以是非实时下载,例如,若确定出存储的该动态库的下载时间未超过过期时间,可以待本次小程序运行结束后,建立上述执行主体与小程序平台之间的通信连接,并从小程序平台下载最新版本的该动态库。
步骤306,响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。
在本实施例中,步骤306的具体操作已在图2所示的实施例中步骤203中进行了详细的介绍,在此不再赘述。
继续参见图4,其示出了运行小程序的架构图。如图4所示,若开发者想要发布动态库A和动态库B,就需要在小程序平台上注册动态库A和动态库B的名称和别名。其中,动态库A的名称是DynamicLibAAA,别名是myAliasA,动态库B的名称是DynamicLibBBB,别名是myAliasB。开发者可以使用小程序平台提供的开发工具IDE开发脚本、组件和页面,编译打包成动态库A和动态库B,并发布在小程序平台的B端上。若小程序A和小游戏A想要引用动态库A和动态库B,就需要在配置文件app.json中配置动态库A和动态库B的名称和别名。在页面文件Page.json中声明动态库A和动态库B的使用组件。在布局文件Page.swan中指定动态库A和动态库B的位置和相关属性。在小程序A和小游戏A的脚本代码中调用动态库A和动态库B,编译打包成小程序包A和小游戏包A,并发布在小程序平台的B端上。小程序A、小程序B、小游戏A和小游戏B可以下发到宿主应用上,若需要运行小程序A和小游戏A,就需要解析配置文件确定出小程序A和小游戏A依赖动态库A和动态库B。确定沙盒目录中是否存储动态库A和动态库B的最新版本,若未存储,则从小程序平台的C端下载最新版本的动态库A和动态库B。当用户想要运行小程序A或小游戏B,则从小程序平台下载小程序包A或小游戏包A,并运行脚本代码以调用动态库A和动态库B。
从图3中可以看出,与图2对应的实施例相比,本实施例中的用于运行小程序的方法的流程300突出了加载动态库的步骤。由此,本实施例描述的方案在运行小程序时,通过确定动态库的下载时间是否超过过期时间来确定是否同步下载最新版本的动态库,既保证了动态库的收敛率,又不会频繁下载动态库而对小程序平台造成过大压力。
进一步参考图5,作为对上述各图所示的方法的实现,本申请提供了一种用于运行小程序的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的用于运行小程序的装置510可以包括:读取单元511、加载单元512和运行单元513。其中,读取单元511,被配置成响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库;加载单元512,被配置成从沙盒目录和/或小程序平台加载小程序所引用的动态库;运行单元513,被配置成响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。
在本实施例中,用于运行小程序的装置510中:读取单元511、加载单元512和运行单元513的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201-203的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,用于运行小程序的装置510还包括:验证单元(图中未示出),被配置成对小程序进行签名和安全验证。
在本实施例的一些可选的实现方式中,加载单元512包括:第一确定子单元(图中未示出),被配置成对于小程序所引用的每个动态库,确定沙盒目录中是否存储该动态库;第一加载子单元(图中未示出),被配置成若未存储该动态库,从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
在本实施例的一些可选的实现方式中,加载单元512还包括:第二确定子单元(图中未示出),被配置成若沙盒目录存储该动态库,确定该动态库的下载时间是否超过过期时间;第二加载子单元(图中未示出),被配置成若超过过期时间,从小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
在本实施例的一些可选的实现方式中,加载单元512还包括:第三加载子单元(图中未示出),被配置成若未超过过期时间,或者超过过期时间但最新版本的该动态库下载失败,加载沙盒目录中存储的该动态库。
在本实施例的一些可选的实现方式中,加载单元512还包括:异步下载子单元(图中未示出),被配置成若未超过过期时间,且小程序平台存在最新版本的该动态库,异步下载最新版本的该动态库。
在本实施例的一些可选的实现方式中,下载的最新版本的该动态库存储到沙盒目录中,该动态库的超时时间和版本信息存储到数据库中,不同小程序共享沙盒目录中的动态库。
在本实施例的一些可选的实现方式中,用于运行小程序的装置510还包括:预下载单元(图中未示出),被配置成在运行小程序的主页面的脚本代码时,确定小程序的从页面所引用的动态库,以及从小程序平台预下载从页面所引用的动态库。
在本实施例的一些可选的实现方式中,用于运行小程序的装置510还包括:预加载单元(图中未示出),被配置成在跳转至小程序的从页面时,将沙盒目录的路径传递至前端,以使前端从路径下预加载从页面所引用的动态库。
在本实施例的一些可选的实现方式中,动态库通过如下步骤发布:获取用户在小程序平台上注册的动态库的标识;获取用户使用小程序平台提供的开发工具开发的脚本、组件和页面;若脚本、组件和页面通过编译和调试,对脚本、组件和页面进行封装,得到动态库;对动态库、调试动态库的小程序样本和动态库的文档同时进行发布。
在本实施例的一些可选的实现方式中,小程序通过如下步骤引用动态库:在配置文件中配置小程序所引用的动态库的标识;在页面文件中声明小程序所引用的动态库的使用组件;在布局文件中指定小程序所引用的动态库的位置和相关属性;在小程序的脚本代码中调用小程序所引用的动态库。
下面参考图6,其示出了适于用来实现本申请实施例的电子设备(例如图1所示的设备101)的计算机系统600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向目标的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或电子设备上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括读取单元、加载单元和运行单元。其中,这些单元的名称在种情况下并不构成对该单元本身的限定,例如,读取单元还可以被描述为“响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于小程序下发到宿主应用上,读取配置文件以确定小程序所引用的动态库;从沙盒目录和/或小程序平台加载小程序所引用的动态库;响应于小程序的运行指令,运行小程序的脚本代码以调用小程序所引用的动态库。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (22)

1.一种用于运行小程序的方法,包括:
响应于小程序下发到宿主应用上,读取配置文件以确定所述小程序所引用的动态库;
从沙盒目录和/或小程序平台加载所述小程序所引用的动态库;
响应于所述小程序的运行指令,运行所述小程序的脚本代码以调用所述小程序所引用的动态库;
其中,所述从沙盒目录和/或小程序平台加载所述小程序所引用的动态库,包括:响应于所述沙盒目录中未存储所述小程序所引用的动态库,从所述小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
2.根据权利要求1所述的方法,其中,在所述读取配置文件以确定所述小程序所引用的动态库之前,还包括:
对所述小程序进行签名和安全验证。
3.根据权利要求1所述的方法,其中,所述从沙盒目录和/或小程序平台加载所述小程序所引用的动态库,还包括:
若所述沙盒目录存储该动态库,确定该动态库的下载时间是否超过过期时间;
若超过所述过期时间,从所述小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
4.根据权利要求3所述的方法,其中,所述从沙盒目录和/或小程序平台加载所述小程序所引用的动态库,还包括:
若未超过所述过期时间,或者超过所述过期时间但最新版本的该动态库下载失败,加载所述沙盒目录中存储的该动态库。
5.根据权利要求4所述的方法,其中,所述从沙盒目录和/或小程序平台加载所述小程序所引用的动态库,还包括:
若未超过所述过期时间,且所述小程序平台存在最新版本的该动态库,异步下载最新版本的该动态库。
6.根据权利要求1、3-5之一所述的方法,其中,下载的最新版本的该动态库存储到所述沙盒目录中,该动态库的超时时间和版本信息存储到数据库中,不同小程序共享所述沙盒目录中的动态库。
7.根据权利要求1所述的方法,其中,所述方法还包括:
在运行所述小程序的主页面的脚本代码时,确定所述小程序的从页面所引用的动态库,以及从所述小程序平台预下载所述从页面所引用的动态库。
8.根据权利要求7所述的方法,其中,所述方法还包括:
在跳转至所述小程序的从页面时,将所述沙盒目录的路径传递至前端,以使所述前端从所述路径下预加载所述从页面所引用的动态库。
9.根据权利要求1所述的方法,其中,动态库通过如下步骤发布:
获取用户在小程序平台上注册的所述动态库的标识;
获取所述用户使用所述小程序平台提供的开发工具开发的脚本、组件和页面;
若所述脚本、组件和页面通过编译和调试,对所述脚本、组件和页面进行封装,得到所述动态库;
对所述动态库、调试所述动态库的小程序样本和所述动态库的文档同时进行发布。
10.根据权利要求9所述的方法,其中,小程序通过如下步骤引用动态库:
在配置文件中配置所述小程序所引用的动态库的标识;
在页面文件中声明所述小程序所引用的动态库的使用组件;
在布局文件中指定所述小程序所引用的动态库的位置和相关属性;
在所述小程序的脚本代码中调用所述小程序所引用的动态库。
11.一种用于运行小程序的装置,包括:
读取单元,被配置成响应于小程序下发到宿主应用上,读取配置文件以确定所述小程序所引用的动态库;
加载单元,被配置成从沙盒目录和/或小程序平台加载所述小程序所引用的动态库;
运行单元,被配置成响应于所述小程序的运行指令,运行所述小程序的脚本代码以调用所述小程序所引用的动态库;
其中,所述加载单元进一步被配置成:
响应于所述沙盒目录中未存储所述小程序所引用的动态库,从所述小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
12.根据权利要求11所述的装置,其中,所述装置还包括:
验证单元,被配置成对所述小程序进行签名和安全验证。
13.根据权利要求11所述的装置,其中,所述加载单元还包括:
第二确定子单元,被配置成若所述沙盒目录存储该动态库,确定该动态库的下载时间是否超过过期时间;
第二加载子单元,被配置成若超过所述过期时间,从所述小程序平台同步下载最新版本的该动态库,以及加载最新版本的该动态库。
14.根据权利要求13所述的装置,其中,所述加载单元还包括:
第三加载子单元,被配置成若未超过所述过期时间,或者超过所述过期时间但最新版本的该动态库下载失败,加载所述沙盒目录中存储的该动态库。
15.根据权利要求14所述的装置,其中,所述加载单元还包括:
异步下载子单元,被配置成若未超过所述过期时间,且所述小程序平台存在最新版本的该动态库,异步下载最新版本的该动态库。
16.根据权利要求11、13-15之一所述的装置,其中,下载的最新版本的该动态库存储到所述沙盒目录中,该动态库的超时时间和版本信息存储到数据库中,不同小程序共享所述沙盒目录中的动态库。
17.根据权利要求11所述的装置,其中,所述装置还包括:
预下载单元,被配置成在运行所述小程序的主页面的脚本代码时,确定所述小程序的从页面所引用的动态库,以及从所述小程序平台预下载所述从页面所引用的动态库。
18.根据权利要求17所述的装置,其中,所述装置还包括:
预加载单元,被配置成在跳转至所述小程序的从页面时,将所述沙盒目录的路径传递至前端,以使所述前端从所述路径下预加载所述从页面所引用的动态库。
19.根据权利要求11所述的装置,其中,动态库通过如下步骤发布:
获取用户在小程序平台上注册的所述动态库的标识;
获取所述用户使用所述小程序平台提供的开发工具开发的脚本、组件和页面;
若所述脚本、组件和页面通过编译和调试,对所述脚本、组件和页面进行封装,得到所述动态库;
对所述动态库、调试所述动态库的小程序样本和所述动态库的文档同时进行发布。
20.根据权利要求19所述的装置,其中,小程序通过如下步骤引用动态库:
在配置文件中配置所述小程序所引用的动态库的标识;
在页面文件中声明所述小程序所引用的动态库的使用组件;
在布局文件中指定所述小程序所引用的动态库的位置和相关属性;
在所述小程序的脚本代码中调用所述小程序所引用的动态库。
21.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一所述的方法。
22.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-10中任一所述的方法。
CN201911199931.8A 2019-11-29 2019-11-29 用于运行小程序的方法和装置 Active CN110908738B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201911199931.8A CN110908738B (zh) 2019-11-29 2019-11-29 用于运行小程序的方法和装置
GB2007821.8A GB2589658B (en) 2019-11-29 2020-05-26 Method and apparatus for running an applet
US16/894,946 US11550599B2 (en) 2019-11-29 2020-06-08 Method and apparatus for running applet
DE102020115253.1A DE102020115253A1 (de) 2019-11-29 2020-06-09 Verfahren und einrichtung zum ausführen eines applets
FR2006000A FR3103927B1 (fr) 2019-11-29 2020-06-09 Procédé et appareil pour exécuter un applet

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911199931.8A CN110908738B (zh) 2019-11-29 2019-11-29 用于运行小程序的方法和装置

Publications (2)

Publication Number Publication Date
CN110908738A CN110908738A (zh) 2020-03-24
CN110908738B true CN110908738B (zh) 2021-03-23

Family

ID=69820664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911199931.8A Active CN110908738B (zh) 2019-11-29 2019-11-29 用于运行小程序的方法和装置

Country Status (5)

Country Link
US (1) US11550599B2 (zh)
CN (1) CN110908738B (zh)
DE (1) DE102020115253A1 (zh)
FR (1) FR3103927B1 (zh)
GB (1) GB2589658B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908738B (zh) 2019-11-29 2021-03-23 百度在线网络技术(北京)有限公司 用于运行小程序的方法和装置
CN111459512B (zh) * 2020-03-31 2023-06-16 南方电网科学研究院有限责任公司 电网轻应用部署方法、系统、设备及存储介质
CN113703857A (zh) * 2020-05-08 2021-11-26 腾讯科技(深圳)有限公司 一种启动应用的方法、装置及计算机可读存储介质
CN111787088B (zh) 2020-06-28 2023-04-28 百度在线网络技术(北京)有限公司 小程序数据处理的方法和装置
CN111782296A (zh) * 2020-06-29 2020-10-16 北京百度网讯科技有限公司 基于小程序的挂载信息回流系统、方法以及挂载服务设备
CN112527252B (zh) * 2020-11-30 2024-01-09 北京百度网讯科技有限公司 小程序管理方法及装置、小程序平台、电子设备、介质
CN112948018B (zh) * 2021-03-01 2023-08-01 北京百度网讯科技有限公司 用于小程序的动态库加载方法、装置、设备及介质
CN113642295B (zh) * 2021-08-24 2023-10-20 北京百度网讯科技有限公司 页面排版方法、装置及计算机程序产品
CN114816559A (zh) * 2022-03-07 2022-07-29 支付宝(杭州)信息技术有限公司 模块加载方法、装置、存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641569A (zh) * 2004-01-06 2005-07-20 英业达股份有限公司 Java小应用程序下插件功能的实现方法
US8646100B2 (en) * 2011-06-03 2014-02-04 Apple Inc. Method for executing an application in a restricted operating environment

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6125402A (en) * 1997-06-16 2000-09-26 Sun Microsystems, Inc. Method and system for executing one of several forms of a multi-purpose program
US6574661B1 (en) * 1997-09-26 2003-06-03 Mci Communications Corporation Integrated proxy interface for web based telecommunication toll-free network management using a network manager for downloading a call routing tree to client
US20040123270A1 (en) 2002-12-23 2004-06-24 Motorola, Inc. Method and apparatus for shared libraries on mobile devices
KR101255685B1 (ko) * 2008-12-22 2013-04-24 한국전자통신연구원 로봇 응용 프로그램 실행 장치 및 방법
CN101819525B (zh) * 2009-02-27 2013-11-27 国际商业机器公司 用于查找系统中应用的配置文件的方法和设备
US9483249B2 (en) 2014-01-06 2016-11-01 Apple Inc. On-board applet migration
US9934014B2 (en) 2014-08-22 2018-04-03 Apple Inc. Automatic purposed-application creation
CN106325847B (zh) 2015-07-02 2020-01-10 杭州海康机器人技术有限公司 基于iOS平台获取应用程序功能的方法和装置
CN105407130A (zh) * 2015-09-25 2016-03-16 成都趣点科技有限公司 一种移动端插件系统及移动端插件处理方法
CN105260196B (zh) * 2015-11-27 2018-08-07 山东超越数控电子有限公司 一种Android系统支持QT APP的实现方法
US10802810B2 (en) * 2016-12-27 2020-10-13 Sap Se Consuming persistent library bundles
CN109032691B (zh) * 2018-06-25 2020-12-15 腾讯科技(深圳)有限公司 一种小程序运行方法、装置及存储介质
CN110389936B (zh) * 2019-07-25 2021-05-14 上海连尚网络科技有限公司 一种启动小程序的方法、设备和计算机存储介质
CN110389935B (zh) * 2019-07-25 2021-04-16 上海连尚网络科技有限公司 一种启动小程序的方法、设备和计算机存储介质
CN110908738B (zh) 2019-11-29 2021-03-23 百度在线网络技术(北京)有限公司 用于运行小程序的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641569A (zh) * 2004-01-06 2005-07-20 英业达股份有限公司 Java小应用程序下插件功能的实现方法
US8646100B2 (en) * 2011-06-03 2014-02-04 Apple Inc. Method for executing an application in a restricted operating environment

Also Published As

Publication number Publication date
CN110908738A (zh) 2020-03-24
GB202007821D0 (en) 2020-07-08
US20210165666A1 (en) 2021-06-03
GB2589658B (en) 2021-12-15
FR3103927B1 (fr) 2022-03-11
GB2589658A (en) 2021-06-09
DE102020115253A1 (de) 2021-06-02
FR3103927A1 (fr) 2021-06-04
US11550599B2 (en) 2023-01-10

Similar Documents

Publication Publication Date Title
CN110908738B (zh) 用于运行小程序的方法和装置
CN110187910B (zh) 一种热更新方法、装置、设备及计算机可读存储介质
CN110554876A (zh) 用于编译安卓工程的方法和装置
CN110865889A (zh) 组件间传递事件的方法和装置
CN109766148B (zh) 用于处理接口方法调用的方法和装置
CN112631590B (zh) 组件库生成方法、装置、电子设备和计算机可读介质
CN113050984A (zh) 资源调取方法、装置、电子设备及存储介质
CN107273226B (zh) 在安卓系统中集成组件及调用被集成组件的方法和装置
CN111506368A (zh) 对异步调用转同步调用的方法、装置、设备及存储介质
CN111338666A (zh) 一种实现应用程序升级的方法、装置、介质和电子设备
CN109408256B (zh) 应用调用方法和装置
CN113360377B (zh) 一种测试方法和装置
CN111124523A (zh) 用于初始化应用的方法和装置
CN113315829B (zh) 客户端离线化h5页面加载方法、装置、计算机设备及介质
CN113157274B (zh) 基于微前端的软件开发方法、装置、电子设备及存储介质
CN113835842A (zh) 同时支持单体架构和微服务架构的服务设计方法和系统
CN114064176A (zh) 一种视图交互方法、装置、电子设备及计算机可读介质
CN114356745A (zh) 软件测试方法及装置、电子设备和计算机可读存储介质
CN113176907A (zh) 接口数据调用方法、装置、计算机系统及可读存储介质
CN113656110B (zh) 一种前端升级后免清缓存的页面加载方法及装置
CN113722538B (zh) 一种界面动态渲染方法及装置
CN111240856B (zh) 消息处理方法及装置、存储介质
CN111782282B (zh) 启动程序加载方法和装置、电子设备和存储介质
CN108845803B (zh) 一种列表视图的更新方法、装置、设备及存储介质
CN116541030A (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