CN117971350A - 小程序运行方法、装置和计算机可读存储介质 - Google Patents
小程序运行方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN117971350A CN117971350A CN202211318499.1A CN202211318499A CN117971350A CN 117971350 A CN117971350 A CN 117971350A CN 202211318499 A CN202211318499 A CN 202211318499A CN 117971350 A CN117971350 A CN 117971350A
- Authority
- CN
- China
- Prior art keywords
- applet
- application
- file
- target
- architecture
- 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
Links
- 238000011017 operating method Methods 0.000 title claims description 11
- 238000012545 processing Methods 0.000 claims abstract description 106
- 238000006243 chemical reaction Methods 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims abstract description 82
- 238000009877 rendering Methods 0.000 claims abstract description 71
- 238000011161 development Methods 0.000 claims abstract description 58
- 230000006870 function Effects 0.000 claims description 210
- 238000010276 construction Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 10
- 238000004806 packaging method and process Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种小程序运行方法、装置和计算机可读存储介质;通过接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;创建加载后小程序架构对应的数据处理组件,并获取待运行小程序的第二应用的应用程序接口信息;基于应用程序接口信息将小程序的源代码文件中的接口调用代码进行接口转换,得到目标源代码文件;基于数据处理组件,将目标源代码文件转化为框架文件;将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以在第二应用中运行小程序。以此,简化了小程序跨应用运行的过程,提高了小程序的运行效率。
Description
技术领域
本申请涉及互联网技术领域,具体涉及一种小程序运行方法、装置和计算机可读存储介质。
背景技术
近年来,随着互联网技术的快速发展,小程序以其无需安装即可使用的特点在各种场景中的应用越来越广泛。为了进一步扩展小程序的应用范围,开发人员将开发好的小程序移植到多个应用程序中进行运行。
在对现有技术的研究和实践过程中发现,由于不同应用程序提供给开发者的小程序开发工具不同,在现有小程序运行方法中,需要开发人员根据待运行的应用程序对小程序进行再次开发,以将小程序移植到不同的应用程序中,使得小程序在多个应用程序中的运行流程繁琐,进而导致小程序的运行效率较低。
发明内容
本申请实施例提供一种小程序运行方法、装置和计算机可读存储介质,可以实现小程序的跨应用运行,简化小程序跨应用运行的流程,进而提高小程序的运行效率。
本申请实施例提供一种小程序运行方法,包括:
接收第一应用发送的小程序架构加载请求,基于所述小程序架构加载请求将小程序架构加载在所述第一应用中,并在所述第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;
创建所述加载后小程序架构对应的数据处理组件,并通过所述数据处理组件获取待运行所述小程序的第二应用对应的应用程序接口信息;
基于所述应用程序接口信息,将所述小程序对应的源代码文件中的接口调用代码进行接口转换,得到所述小程序的目标源代码文件;
基于所述数据处理组件,将所述小程序的目标源代码文件转化为框架文件;
通过所述数据处理组件,将携带所述框架文件的小程序加载请求发送至所述第二应用的集成开发环境中,以基于所述框架文件通过所述小程序加载请求指示所述集成开发环境在所述第二应用中运行所述小程序。
相应的,本申请实施例提供一种小程序运行装置,包括:
构建单元,用于接收第一应用发送的小程序架构加载请求,基于所述小程序架构加载请求将小程序架构加载在所述第一应用中,并在所述第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;
获取单元,用于创建所述加载后小程序架构对应的数据处理组件,并通过所述数据处理组件获取待运行所述小程序的第二应用对应的应用程序接口信息;
转换单元,用于基于所述应用程序接口信息,将所述小程序对应的源代码文件中的接口调用代码进行接口转换,得到所述小程序的目标源代码文件;
转化单元,用于基于所述数据处理组件,将所述小程序的目标源代码文件转化为框架文件;
加载单元,用于通过所述数据处理组件,将携带所述框架文件的小程序加载请求发送至所述第二应用的集成开发环境中,以基于所述框架文件通过所述小程序加载请求指示所述集成开发环境在所述第二应用中运行所述小程序。
在一实施例中,所述转换单元,包括:
接口调用代码识别子单元,用于获取所述小程序对应的源代码文件,并在所述源代码文件中识别出所述小程序对应的接口调用代码;
平台接口信息提取子单元,用于在所述应用程序接口信息中提取出所述第二应用对应的平台接口信息;
接口转换子单元,用于在所述接口调用代码中识别出目标接口信息,并根据所述平台接口信息对所述接口调用代码中的目标接口信息进行转换。
在一实施例中,所述构建单元,包括:
加载子单元,用于在加载后小程序架构中创建渲染控制组件,并通过所述渲染控制组件遍历所述第一应用对应的原生控件;
函数映射子单元,用于根据小程序对应的函数调用信息将遍历到的原生控件对应的调用函数进行函数映射,得到映射后调用函数,以基于映射后调用函数实现小程序在所述第一应用中的运行;
构建子单元,用于基于所述原生控件的映射后调用函数,在所述第一应用中构建小程序。
在一实施例中,所述构建子单元,包括:
筛选模块,用于在所述原生控件中确定出用于构建小程序的目标控件,并在所述原生控件对应的映射后调用函数中筛选出所述目标控件对应的目标调用函数;
函数信息获取模块,用于当接收到针对小程序的自定义功能构建请求时,通过所述渲染控制组件获取所述自定义功能对应的函数地址以及调用属性信息;
接口关联模块,用于基于所述函数地址以及调用属性信息,通过所述渲染控制组件将所述自定义功能与预设功能桥接接口进行关联,得到目标功能桥接接口;
构建模块,用于根据所述目标调用函数以及所述目标功能桥接接口,在所述第一应用中构建所述小程序。
在一实施例中,所述转化单元,包括:
编译子单元,用于基于所述数据处理组件,将所述目标源代码文件进行编译处理,得到所述目标源代码文件对应的目标格式文件;
资源获取子单元,用于获取与所述小程序关联的资源文件的资源属性信息,并根据所述资源属性信息获取所述资源文件;
打包子单元,用于采用包管理框架将所述目标格式文件以及所述资源文件进行打包处理,得到所述小程序对应的框架文件。
在一实施例中,所述编译子单元,包括:
文件编译模块,用于基于所述数据处理组件,将所述目标源代码文件进行编译,得到目标文件;
序列转换模块,用于获取字节码转换信息,基于所述字节码转换信息对所述目标文件进行序列转换,得到转换后目标文件;
链接模块,用于对所述转换后目标文件进行链接处理,得到所述目标源代码文件对应的目标格式文件。
在一实施例中,所述打包子单元,包括:
存储模块,用于将所述资源文件存储至包管理框架中的框架资源文件包中,并将所述目标格式文件存储至所述包管理框架中的链接地址文件中;
确定模块,用于根据所述包管理框架中的框架资源文件包以及链接地址文件,确定所述小程序对应的框架文件。
此外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种小程序运行方法中的步骤。
此外,本申请实施例还提供一种计算机设备,包括处理器和存储器,所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序实现本申请实施例提供的小程序运行方法。
本申请实施例还提供一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行本申请实施例提供的小程序运行方法中的步骤。
本申请实施例通过接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息;基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,得到小程序的目标源代码文件;基于数据处理组件,将小程序的目标源代码文件转化为框架文件;通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。以此,通过在第一应用中加载小程序架构,并在加载后小程序架构中创建渲染控制组件,从而根据渲染控制组件构建第一应用的小程序,进而通过基于加载后小程序架构创建的数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息,从而根据应用程序接口信息将小程序对应的源代码文件中的接口调用代码进行接口转换,并将接口转换后的源代码文件以框架文件的形式加载到第二应用的集成开发环境中,以此实现了小程序的跨应用运行,简化了小程序跨应用运行的流程,进而提高了小程序的运行效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种小程序运行方法实施场景示意图;
图2是本申请实施例提供的一种小程序运行方法的流程示意图;
图3a是本申请实施例提供的一种小程序运行方法的时序流程示意图;
图3b是本申请实施例提供的一种小程序运行方法的具体流程示意图;
图4是本申请实施例提供的一种小程序运行方法的整体流程示意图;
图5是本申请实施例提供的一种小程序运行方法的另一流程示意图;
图6是本申请实施例提供的小程序运行装置的结构示意图;
图7是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种小程序运行方法、装置和计算机可读存储介质。其中,该小程序运行装置可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
请参阅图1,以小程序运行装置集成在计算机设备中为例,图1为本申请实施例所提供的小程序运行方法的实施场景示意图,其中,该计算机设备可以为服务器,也可以为终端,该计算机设备可以接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息;基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,得到小程序的目标源代码文件;基于数据处理组件,将小程序的目标源代码文件转化为框架文件;通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。
需要说明的是,本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。图1所示的小程序运行方法的实施环境场景示意图仅仅是一个示例,本申请实施例描述的小程序运行方法的实施环境场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定。本领域普通技术人员可知,随着小程序运行的演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。
本申请实施例提供的方案具体通过如下实施例进行说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从小程序运行装置的角度进行描述,该小程序运行装置具体可以集成在计算机设备中,该计算机设备可以是服务器,本申请在此不作限制。
请参阅图2,图2是本申请实施例提供的小程序运行方法的流程示意图。该小程序运行方法包括:
在步骤101中,接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序。
其中,该第一应用可以为构建小程序的应用程序,该小程序架构加载请求可以为向小程序架构的服务端请求在第一应用中加载小程序架构的指令,在该第一应用中可以加载小程序架构,该小程序架构可以为内置在第一应用中的一个基础架构,开发人员可以基于这个基础架构提供的接口在第一应用中进行小程序的开发,该加载后小程序架构可以为在第一应用中加载的小程序架构,可以用于在第一应用中运行小程序以及将小程序加载到其他应用中运行。在该加载后小程序架构中可以创建渲染控制组件,该渲染控制组件可以为用于实现小程序在第一应用中正常运行的组件,可以在小程序的开发过程中对系统的原生控件以及系统能力进行封装,同时还可以对第一应用自有的功能以及自定义功能桥接到小程序中,从而可以在小程序运行阶段实现小程序对原生控件以、系统能力以及自定义功能的调用,还可以在小程序的运行阶段负责将小程序的逻辑层(JavaScript层,简称JS层)与原生层(Native)之间的数据交互进行数据转换和加密保护等,其中,该逻辑层可以为小程序的架构中负责逻辑处理、数据请求、接口调用等流程的层级,该原生层可以为小程序的架构中与系统原生交互的层级。
其中,基于小程序架构加载请求将小程序架构加载在第一应用中的方式可以有多种,例如,请参考图3a,图3a是本申请实施例提供的一种小程序运行方法的时序流程示意图,可以接收第一应用发送的小程序架构加载请求,从而可以根据小程序架构加载请求,将小程序架构数据发送到第一应用中,从而可以根据小程序架构数据在第一应用中加载该小程序架构,得到加载后小程序架构。其中,该小程序架构数据可以为用于在第一应用中加载小程序架构的数据。
其中,在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序的方式可以有多种,例如,可以在加载后小程序架构中创建渲染控制组件,并通过渲染控制组件遍历第一应用对应的原生控件,根据小程序对应的函数调用信息将遍历到的原生控件对应的调用函数进行函数映射,得到映射后调用函数,以基于映射后调用函数实现小程序在第一应用中的运行,基于原生控件的映射后调用函数,在第一应用中构建小程序。
其中,该原生控件可以为小程序架构的系统中原生的控件,可以包括图片(ImageView)、按钮(Button)、标签(Label)、搜索框(SearchBar)、列表(TableView)、输入框(TextFiled)、弹窗(ToastView)等控件。该函数调用信息可以为小程序调用原生控件的调用信息,例如,可以包括调用方与被调用方之间进行调用的信息,该调用函数可以为小程序调用原生控件的函数,该映射后调用函数可以为对调用函数进行函数映射之后的调用函数,由于小程序中的逻辑层与系统原生的编程语言不同,因此,为了实现小程序在第一应用中的正常运行,需要将原生的原生控件的调用函数映射为小程序JS层的调用逻辑,从而可以实现小程序在运行过程中对原生控件的调用,从而实现小程序的正常运行。例如,可以采用渲染控制组件对原生控件的调用进行封装,具体的,为了尽可能的接近原生体验,在小程序加载运行的视图渲染过程中会优先从系统的原生控件中进行初始化,因此,为了实现小程序对原生控件的调用,可以通过小程序架构中的渲染控制组件遍历系统的原生控件,从而可以将原生控件的类名、属性和方法通过JavaScript(一种编程语言)进行函数映射,例如,假设在小程序中初始化弹窗控件时,原生层调用原生的弹窗控件方法为(void)showAnimated:(BOOL)animated,而传入小程序的逻辑层的参数表示为是否需要通过动画显示,在逻辑层中需要映射为functionShowAlert函数,即映射后调用函数。从而可以在小程序的JS层中提供映射后调用函数给第一应用的小程序开发人员进行调用和调试。
其中,基于原生控件的映射后调用函数,在第一应用中构建小程序的方式可以有多种,例如,可以在原生控件中确定出用于构建小程序的目标控件,并在原生控件对应的映射后调用函数中筛选出目标控件对应的目标调用函数,当接收到针对小程序的自定义功能构建请求时,通过渲染控制组件获取自定义功能对应的函数地址以及调用属性信息,基于函数地址以及调用属性信息,通过渲染控制组件将自定义功能与预设功能桥接接口进行关联,得到目标功能桥接接口,根据目标调用函数以及目标功能桥接接口,在第一应用中构建小程序。
其中,该目标控件可以为构建小程序所需要的原生控件,即可以为小程序运行时可以调用的原生控件,该目标调用函数可以为目标控件对应的映射后调用函数,即小程序可以通过这个目标调用函数来实现调用目标控件,该自定义功能构建请求可以为在小程序开发过程中用于在小程序构建过程中为小程序增加自定义功能调用的请求,该自定义功能可以为系统原生中不存在的功能,可以为开发人员根据需求设计的功能,也可以为第一应用中自有的非原生的功能模块,该函数地址可以为实现该自定义功能所需要的函数的地址,该调用属性信息可以为在调用自定义功能时对自定义功能的函数的访问顺序以及调用过程中所需要的中间变量的修改指令等信息,该预设功能桥接接口可以为预先设定的用于将自定义功能桥接给小程序使用的接口,可以为上层开发与原生层的桥梁,实现自定义功能在小程序中的调用,该目标功能桥接接口可以为与小程序对应的自定义功能的能力关联的预设功能桥接接口,即将自定义功能的函数地址注入到预设功能桥接接口,从而实现自定义功能的能力与预设功能桥接接口的关联,得到目标功能桥接接口。以此,根据目标调用函数以及目标功能桥接接口,可以实现欲开发的小程序对原生控件以及自定义功能的调用,使得小程序实现原生控件的能力以及自定义功能的能力,从而可以实现在第一应用中构建小程序。
在一实施例中,请参考图3b,图3b是本申请实施例提供的一种小程序运行方法的具体流程示意图,第一应用的开发人员可以通过加载在第一应用中的小程序架构创建的渲染控制组件提供的接口开发小程序和对小程序进行调式,从而生成小程序并在第一应用中进行运行。其中,该渲染控制组件可以用于原生控件封装、数据转换和保护、系统能力调用以及自有模块桥接等模块的实现,在小程序开发完成之后,可以基于渲染控制组件在第一应用中调用原生控件、系统能力以及自有模块提供的自定义功能,并对小程序运行过程中的数据进行转换以及数据安全保护,从而实现小程序在第一应用中的运行。
其中,该原生控件封装模块可以遍历系统的原生控件,从而可以将原生控件的类名、属性和方法通过JavaScript进行函数映射,得到映射后调用函数,以供小程序调用。
该数据转换和保护模块可以对小程序运行过程中产生的数据进行数据转换,从而可以在逻辑层与原生层等不同层级之间进行数据交互,并对数据传输过程中的数据安全性进行包括,由于客户端数据缓存是由原生写入,在逻辑层需要将数据进行转换和透传,而逻辑层的数据访问特性跟原生层不一样,因此,在JS和原生的数据传递过程中需要做数据转化,例如,可以将数组进行合并,将多个JS对象合并成一个数组,如果参数类型是数组则可以将数组内的元素拆解出来加到原始数组中。还可以对数组进行遍历,在JS层中将多维数组打平成一维数组再遍历所有子元素。还可以对字符串进行拆分,原生可以将字符串按一个一个字符拆成数组,并自动过滤掉空白字符。此外,还可以对颜色值进行转换,从JS层中使用16进制方式的颜色字符串生成颜色空间(RGBA)类型的原生颜色,例如,#00ff00ff可以转化为RGBA(255,0,255,0)等。此外,渲染控制组件在进行底层存储时,可以将待存储的原生数据进行数据加密后再进行归档,加密的数据对象可以为基本数据类型,在业务层自定义的对象类型会通过解析对象属性来将加密的数据对象解析为基本数据类型,再组合成数组或集合的方式进行存储,例如,待存储的数据为用户数据(User),一个实体对象,但用户中包含了姓名、性别、手机号等属性字段,为此,可以将这些属性拆分为字符串等基本数据类型,然后再组合到数组中进行加密存储。
对于系统能力调用模块,在某些业务场景中需要用到系统的原生能力时,可以在小程序的渲染控制组件中基于系统能力调用模块对这些原生能力进行接入,该系统原生的能力可以包括但不限于定位、相机、相册、麦克风、蓝牙、推送等能力。例如,在通过小程序访问系统能力时可以先执行弹窗,待用户基于该弹窗同意访问之后,再进行系统能力的访问和调用。渲染控制组件将这些系统能力的应用程序接口(API)封装到预设系统能力调用接口中,将待开发的小程序所使用到的系统能力、使用时间段和访问范围上传到小程序架构的服务端中,由服务器对小程序调用系统能力的权限进行控制。可选的,在用户通过小程序进行提现、转账等功能时,可能需要访问相机对人脸进行识别,此时,小程序可以向小程序架构服务端请求访问相机的权限,在接收到小程序架构服务器下发权限后,再进行系统能力调用从而完成提现、转账等功能。
对于自有模块桥接模块,再小程序对用户界面(UI)的风格要求较高,而原生控件无法满足,或小程序想实现的功能是第一应用中已有的功能,此时,可以通过渲染控制组件的自有模块桥接模块提供的预设功能桥接接口来实现这些功能。在调用前可以通过渲染控制组件将自定义功能的函数的函数地址注入到预设功能桥接接口(JSBridge)中,从而实现自定义功能的能力关联到预设功能桥接接口,得到目标功能桥接接口。在产生调用时可以通过目标功能桥接接口,传入自定义功能的函数的访问顺序以及在函数访问过程中的中间变量的修改指令等,从而实现在小程序中对自定义功能的调用。
可选的,在通过预设功能桥接接口在小程序中接入自定义功能时,可以通过渲染控制组件来对自定义功能接入的安全性进行审核,以此提高小程序开发的合规性。
在一实施例中,请参考图4,图4是本申请实施例提供的一种小程序运行方法的整体流程示意图,可以基于第一应用发送的小程序架构加载请求在第一应用中加载小程序架构,从而可以在加载后小程序架构中创建渲染控制组件,从而开发人员可以通过小程序架构提供的接口以及该渲染控制组件进行小程序的开发以及小程序的能力调试,此外,小程序架构提供了对小程序进行编译的支持,可以通过小程序架构对小程序进行编译链接,小程序可以在第一应用中进行运行,并在运行过程中产生数据请求时可以通过上传到第一应用的服务端进行数据请求。
在步骤102中,创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息。
其中,该数据处理组件可以为进行数据转换以实现小程序跨应用运行的组件,可以用于将生成的小程序通过接口变换的方式转换到各个应用的平台中加载调试,从而实现第一应用生成的小程序在不同应用中进行运行。该第二应用可以为待运行小程序的应用程序,该应用程序接口信息可以为包括第二应用的应用程序接口的信息,例如,可以为应用程序接口(API)名称。应用程序会在相应的小程序开放平台开放API接口的信息提供给开发者进行小程序的编写,例如,可以包括API接口名称、功能描述以及参数等信息。因此,可以通过该小程序架构,获取第二应用对应的应用程序接口信息。可选的,可以通过小程序架构对应的数据处理组件来获取待运行小程序的第二应用对应的应用程序接口信息,也可以直接通过小程序架构来获取待运行小程序的第二应用对应的应用程序接口信息,在此不做限定。
可选的,该小程序架构可以为小程序架构平台加载在第一应用中的客户端,小程序架构平台对应的小程序架构服务端可以创建数据处理组件,小程序架构服务端可以创建数据处理组件以及渲染控制组件,小程序架构客户端也可以创建数据处理组件以及渲染控制组件,通过该小程序架构对应的客户端和服务端创建的渲染控制组件以及数据处理组件之间的数据交互,可以实现第一应用中开发的小程序在第一应用中的正常运行以及将生成的小程序转换到不同应用中进行运行。
其中,创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息的方式可以有多种,例如,请继续参考图3a,可以接收第一应用发送的小程序跨应用运行请求,该小程序跨应用运行请求可以为请求将小程序加载到第二应用中进行运行的指令,该小程序跨应用运行请求可以携带第二应用信息,该第二应用信息可以为包括指示小程序待运行的第二应用的信息,例如,可以为第二应用的名称等信息,从而可以获取小程序的源代码文件,并通过第二应用的集成开发环境平台中获取第二应用的应用程序接口信息。其中,需要说明的是,创建数据处理组件的时间可以根据实际情况进行设定,在此不做限定。
在步骤103中,基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,得到小程序的目标源代码文件。
其中,该源代码文件可以为包括小程序对应的源代码的文件,该源代码可以为一组具有特定意义的可以实现特定功能的字符(程序开发代码),即开发人员编写的用于生成小程序的代码。该接口调用代码可以为源代码文件中用于实现接口调用的代码,例如,可以为源代码文件中将小程序运行在第二应用中所需要调用的应用程序接口的代码,该目标源代码文件可以为将源代码文件中的接口调用代码进行接口转换后的源代码文件。
其中,基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换的方式可以有多种,例如,可以获取小程序对应的源代码文件,并在源代码文件中识别出小程序对应的接口调用代码,在应用程序接口信息中提取出第二应用对应的平台接口信息,在接口调用代码中识别出目标接口信息,并根据平台接口信息对接口调用代码中的目标接口信息进行转换。
其中,该平台接口信息可以为应用程序接口信息中基于不同应用而存在区别的信息,例如,可以为应用程序接口名称的前缀,由于各个应用程序的小程序开放平台中提供的功能和接口名称除了前缀不同,应用程序接口名称基本保持一致。该目标接口信息可以为接口调用代码中与平台接口信息对应的信息,例如,在平台接口信息为应用程序接口名称中与第二应用关联的前缀信息时,相应的,该目标接口信息可以为接口调用代码中应用程序接口名称的前缀信息。以此,可以将小程序需要在第二应用中运行所需要调用的接口的前缀转换为第二应用对应的应用程序接口名称的前缀,从而实现对接口调用代码的接口转换。
例如,请继续参考图4,可以根据小程序架构平台规定的源码形式,通过小程序架构生成小程序的源代码文件,在接收到针对小程序的跨应用运行请求时,可以将小程序的源代码文件上传至第一应用服务端,根据第一应用服务端对小程序制定的合法性规则对小程序进行合法性校验,在校验通过之后,可以再根据小程序架构平台规定的合法性通过小程序架构服务端对小程序的源代码文件进行合法性校验,在校验通过之后,可以通过小程序架构的数据处理组件,获取待运行小程序的第二应用对应的应用程序接口信息,并基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,从而可以得到小程序的目标源代码文件,以基于目标源代码文件实现将小程序加载到第二应用中进行运行。
在步骤104中,基于数据处理组件,将小程序的目标源代码文件转化为框架文件。
其中,该框架文件可以为二进制格式的文件,用于将小程序加载到第二应用中的文件,例如,可以包括类库文件、静态链接库文件(.a文件)或者框架(framework)文件。
其中,基于数据处理组件,将小程序的目标源代码文件转化为框架文件的方式可以有多种,例如,可以基于数据处理组件,将目标源代码文件进行编译处理,得到目标源代码文件对应的目标格式文件,获取与小程序关联的资源文件的资源属性信息,并根据资源属性信息获取资源文件,采用包管理框架将目标格式文件以及资源文件进行打包处理,得到小程序对应的框架文件。
其中,该目标格式文件可以为二进制格式的文件,即将小程序打包为二进制格式的文件,该资源文件可以为包括小程序运行所需要的资源的文件,例如,可以包括小程序中的图片、音乐、视频等资源,该资源属性信息可以为资源的属性信息,该属性信息可以包括资源的性质与资源之间关系的信息,例如,可以包括资源路径和资源类型等信息,该资源路径可以为存储资源的路径,该资源类型可以为资源的数据类型,例如,可以包括文本类型、图像类型等数据类型。该包管理框架可以为将小程序打包为框架文件的工具,可以管理动态链接库以及静态链接库的一个包工具,例如可以为框架(frameworks)。
其中,基于数据处理组件,将目标源代码文件进行编译处理,得到目标源代码文件对应的目标格式文件的方式可以有多种,例如,可以基于数据处理组件,将目标源代码文件进行编译,得到目标文件,获取字节码转换信息,基于字节码转换信息对目标文件进行序列转换,得到转换后目标文件,对转换后目标文件进行链接处理,得到目标源代码文件对应的目标格式文件。
其中,该目标文件可以为对目标源代码文件进行编译后得到的二进制文件,可以为包含在信息交换标准代码(American Standard Code for Information Interchange,简称ASCII)及扩展ASCII字符中编写的数据或程序指令的文件。该字节码转换信息可以为包括字节码(bitCode)序列的转换规则的信息,该转换规则可以根据开发需求进行预先设置,该转换后目标文件可以为进行字节码转换后的目标文件,可以为编译程序的一种中间形式的代码。
其中,基于数据处理组件,将目标源代码文件进行编译的方式可以有多种,例如,可以通过数据处理组件执行编译链接模块,对目标源文件进行编译,在编译过程中检索目标源文件的内容,根据检索到的内容加载系统和第三方的静态链接库。当编译到当前存在依赖缺失时,可以检索当前目标源文件的头文件包含关系,根据头文件包含关系遍历找出缺失的包含文件,对缺失的包含文件执行增加搜索路径(searchPath),从而可以在编译过程中根据该搜索路径获取到缺失的包含文件,避免依赖缺失的问题。
在基于数据处理组件,将目标源代码文件进行编译之后,便可以获取字节码转换信息,基于字节码转换信息对目标文件进行序列转换。其中,基于字节码转换信息对目标文件进行序列转换的方式可以有多种,例如,可以对编译后产生的目标文件进行尝试链接,通过字节码转换信息设置字节码序列的转换规则,根据该转换规则将目标文件转换为转换后目标文件。在对小程序的目标源文件进行链接的过程中,可以获取与小程序关联的资源文件的资源属性信息。
其中,采用包管理框架将目标格式文件以及资源文件进行打包处理,得到小程序对应的框架文件的方式可以有多种,例如,可以将资源文件存储至包管理框架中的框架资源文件包中,并将目标格式文件存储至包管理框架中的链接地址文件中,根据包管理框架中的框架资源文件包以及链接地址文件,确定小程序对应的框架文件。
其中,该框架资源文件包可以为包管理框架中保存资源文件的资源文件包,该链接地址文件可以为包管理框架中保存每一文件的地址信息的文件,该地址信息可以为包管理框架中各个组件在项目工程中的地址的信息。通过该链接地址文件和资源文件包,可以在第二应用中对小程序进行编译链接时,获取到小程序对应的目标格式文件以及资源文件,从而实现小程序在第二应用中的运行。
其中,将资源文件存储至包管理框架中的框架资源文件包中的方式可以有多种,例如,可以创建资源文件包(bundle),并将小程序对应的资源文件打包到这个资源文件包中,从而可以将这个资源文件包加载至包管理框架中对应的框架资源文件包中。
可选的,可以采用数据处理组件对生成的框架文件进行模块(Module)化,从而可以在其他小程序加载到其他第三方应用中运行时,可以根据需要获取模块化的框架文件进行复用,实现了资源复用,同时可以避免重复开发,进而提高资源利用率以及开发效率。
在步骤105中,通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。
其中,该小程序加载请求可以为向第二应用的集成开发环境平台中请求加载小程序的指令,该小程序加载请求可以携带框架文件,该集成开发环境(IDE,IntegratedDevelopment Environment)可以用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。例如,请继续参考图3a以及图4,可以将本申请实施例提供的小程序运行方法集成在小程序架构服务端中,从而小程序架构服务端可以根据框架文件生成携带小程序对应的框架文件的小程序加载请求,进而可以将小程序加载请求发送至第二应用的集成开发环境中,以此,第二应用的集成开发环境平台可以基于框架文件在第二应用中加载并运行小程序。可选的,可以假设该第二应用包括应用a、应用b以及应用c,即将小程序加载到应用a、应用b以及应用c中进行运行,可以通过数据处理组件,将小程序的框架文件加载至应用a、应用b以及应用c的集成开发环境平台中(即平台a、平台b以及平台c),从而可以在应用a、应用b以及应用c的集成开发环境中基于框架文件对小程序进行编译链接,进而实现小程序在应用a、应用b以及应用c中运行小程序,实现了小程序的跨应用运行,提高小程序运行效率。
以此,本申请实施例通过在第一应用中加载小程序架构,通过加载后小程序架构进行小程序开发、跨应用的加载和调试,同时可以对小程序开发以及运行过程中的隐私合规、数据安全等进行审核,然后通过渲染控制组件在小程序中进行原生控件封装、数据转换和保护、系统能力调用以及自有模块桥接等模块的实现,从而可以在小程序运行阶段,可以基于渲染控制组件在第一应用中调用原生控件、系统能力以及自有模块提供的自定义功能,保证小程序能尽可能的享有原生体验,并对小程序运行过程中的数据进行转换以及数据安全保护,从而实现小程序在第一应用中的运行,同时,可以通过小程序架构中的数据处理组件将小程序转换到各个应用程序平台中,实现开发人员仅开发一次小程序就可以在各个应用平台中运行,减少了开发人力成本,提高小程序的运行效率。
由以上可知,本申请实施例通过接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;创建小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息;基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,得到小程序的目标源代码文件;基于数据处理组件,将小程序的目标源代码文件转化为框架文件;通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。以此,通过在第一应用中加载小程序架构,并在加载后小程序架构中创建渲染控制组件,从而根据渲染控制组件构建第一应用的小程序,进而通过基于加载后小程序架构创建的数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息,从而根据应用程序接口信息将小程序对应的源代码文件中的接口调用代码进行接口转换,并将接口转换后的源代码文件以框架文件的形式加载到第二应用的集成开发环境中,以此实现了小程序的跨应用运行,简化了小程序跨应用运行的流程,进而提高了小程序的运行效率。
根据上面实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该小程序运行装置具体集成在计算机设备为例进行说明。其中,该小程序运行方法以服务器为执行主体为例进行具体的描述。
为了更好的描述本申请实施例,请参阅图5,图5为本申请实施例提供的小程序运行方法的另一流程示意图。具体流程如下:
在步骤201中,服务器接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,在加载后小程序架构中创建渲染控制组件,并通过渲染控制组件遍历第一应用对应的原生控件,根据小程序对应的函数调用信息将遍历到的原生控件对应的调用函数进行函数映射。
其中,由于小程序中的逻辑层与系统原生的编程语言不同,因此,为了实现小程序在第一应用中的正常运行,需要将原生的原生控件的调用函数映射为小程序JS层的调用逻辑,从而可以实现小程序在运行过程中对原生控件的调用,从而实现小程序的正常运行。为此,服务器可以采用渲染控制组件对原生控件的调用进行封装,具体的,为了尽可能的接近原生体验,在小程序的视图渲染会优先从系统的原生控件中进行初始化,因此,为了实现小程序对原生控件的调用,服务器可以通过小程序架构中的渲染控制组件遍历系统的原生控件,从而可以将原生控件的类名、属性和方法通过JavaScript进行函数映射,例如,假设在小程序中初始化弹窗控件时,原生层调用原生的弹窗控件方法为(void)showAnimated:(BOOL)animated,而传入小程序的逻辑层的参数表示为是否需要通过动画显示,在逻辑层中则需要将其映射为functionShowAlert函数,得到弹窗控件对应的映射后调用函数。从而服务器可以在小程序的JS层中提供映射后调用函数给第一应用的小程序开发人员进行调用和调试。
在步骤202中,服务器在原生控件中确定出用于构建小程序的目标控件,并在原生控件对应的映射后调用函数中筛选出目标控件对应的目标调用函数,当接收到针对小程序的自定义功能构建请求时,通过渲染控制组件获取自定义功能对应的函数地址以及调用属性信息。
其中,该目标控件可以为构建小程序所需要的原生控件,即可以为小程序运行时可以调用的原生控件,该目标调用函数可以为目标控件对应的映射后调用函数,即小程序可以通过这个目标调用函数来实现调用目标控件,该自定义功能构建请求可以为在小程序开发过程中用于在小程序构建过程中为小程序增加自定义功能调用的请求,该自定义功能可以为系统原生中不存在的功能,可以为开发人员根据需求设计的功能,也可以为第一应用中自有的非原生的功能模块,该函数地址可以为实现该自定义功能所需要的函数的地址,该调用属性信息可以为在调用自定义功能时对自定义功能的函数的访问顺序以及调用过程中所需要的中间变量的修改指令等信息。
在步骤203中,服务器基于函数地址以及调用属性信息,通过渲染控制组件将自定义功能与预设功能桥接接口进行关联,得到目标功能桥接接口,根据目标调用函数以及目标功能桥接接口,在第一应用中构建小程序。
其中,该预设功能桥接接口可以为预先设定的用于将自定义功能桥接给小程序使用的接口,可以为上层开发与原生层的桥梁,实现自定义功能在小程序中的调用,该目标功能桥接接口可以为与小程序对应的自定义功能的能力关联的预设功能桥接接口,即服务器将自定义功能的函数地址注入到预设功能桥接接口,从而实现自定义功能的能力与预设功能桥接接口的关联,得到目标功能桥接接口。以此,服务器可以接收开发人员根据目标调用函数以及目标功能桥接接口编写的小程序的源代码,从而可以实现欲开发的小程序对原生控件以及自定义功能的调用,使得小程序实现原生控件的能力以及自定义功能的能力,从而可以实现在第一应用中构建小程序。
在步骤204中,服务器创建小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息,获取小程序对应的源代码文件,并在源代码文件中识别出小程序对应的接口调用代码。
可选的,服务器可以通过根据小程序架构创建的数据处理组件来获取待运行小程序的第二应用对应的应用程序接口信息,也可以直接通过小程序架构来获取待运行小程序的第二应用对应的应用程序接口信息,本申请在此不做限定。
在步骤205中,服务器在应用程序接口信息中提取出第二应用对应的平台接口信息,在接口调用代码中识别出目标接口信息,并根据平台接口信息对接口调用代码中的目标接口信息进行转换,得到小程序的目标源代码文件。
例如,在平台接口信息为应用程序接口名称中与第二应用关联的前缀信息时,相应的,该目标接口信息可以为接口调用代码中应用程序接口名称的前缀信息,以此,服务器可以将小程序需要在第二应用中运行所需要调用的接口的前缀转换为第二应用对应的应用程序接口名称的前缀,从而实现对接口调用代码的接口转换,得到小程序的目标源代码文件。
在步骤206中,服务器基于数据处理组件,将目标源代码文件进行编译处理,得到目标源代码文件对应的目标格式文件,获取与小程序关联的资源文件的资源属性信息,并根据资源属性信息获取资源文件。
其中,服务器基于数据处理组件,将目标源代码文件进行编译处理,得到目标源代码文件对应的目标格式文件的方式可以有多种,例如,服务器可以基于数据处理组件,将目标源代码文件进行编译,得到目标文件,获取字节码转换信息,基于字节码转换信息对目标文件进行序列转换,得到转换后目标文件,对转换后目标文件进行链接处理,得到目标源代码文件对应的目标格式文件。
其中,服务器基于数据处理组件,将目标源代码文件进行编译的方式可以有多种,例如,服务器可以通过数据处理组件执行编译链接模块,对目标源文件进行编译,在编译过程中检索目标源文件的内容,根据检索到的内容加载系统和第三方的静态链接库。当编译到当前存在依赖缺失时,服务器可以检索当前目标源文件的头文件包含关系,根据头文件包含关系遍历找出缺失的包含文件,对缺失的包含文件执行增加搜索路径(searchPath),从而可以在编译过程中根据该搜索路径获取到缺失的包含文件,避免依赖缺失的问题。
服务器在基于数据处理组件,将目标源代码文件进行编译之后,便可以获取字节码转换信息,基于字节码转换信息对目标文件进行序列转换。其中,服务器基于字节码转换信息对目标文件进行序列转换的方式可以有多种,例如,服务器可以对编译后产生的目标文件进行尝试链接,通过字节码转换信息设置字节码序列的转换规则,根据该转换规则将目标文件转换为转换后目标文件。在对小程序的目标源文件进行链接的过程中,服务器可以获取与小程序关联的资源文件的资源属性信息。
在步骤207中,服务器采用包管理框架将目标格式文件以及资源文件进行打包处理,得到小程序对应的框架文件,通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。
其中,服务器采用包管理框架将目标格式文件以及资源文件进行打包处理,得到小程序对应的框架文件的方式可以有多种,例如,服务器可以将资源文件存储至包管理框架中的框架资源文件包中,并将目标格式文件存储至包管理框架中的链接地址文件中,根据包管理框架中的框架资源文件包以及链接地址文件,确定小程序对应的框架文件。
其中,服通过该链接地址文件和资源文件包,可以在第二应用中对小程序进行编译链接时,获取到小程序对应的目标格式文件以及资源文件,从而实现小程序在第二应用中的运行。
其中,服务器将资源文件存储至包管理框架中的框架资源文件包中的方式可以有多种,例如,服务器可以创建资源文件包(bundle),并将小程序对应的资源文件打包到这个资源文件包中,从而可以将这个资源文件包加载至包管理框架中对应的框架资源文件包中。
可选的,服务器可以采用数据处理组件对生成的框架文件进行模块(Module)化,从而可以在其他小程序加载到其他第三方应用中运行时,可以根据需要获取模块化的框架文件进行复用,实现了资源复用,同时可以避免重复开发,进而提高资源利用率以及开发效率。
在获取到小程序对应的框架文件之后,服务器可以通过数据处理组件,将框架文件加载至第二应用的集成开发环境中,以在第二应用中运行小程序。例如,请继续参考图4,假设该第二应用包括应用a、应用b以及应用c,即将小程序加载到应用a、应用b以及应用c中进行运行,可以通过数据处理组件,将小程序的框架文件加载至应用a、应用b以及应用c的集成开发环境平台中(即平台a、平台b以及平台c),从而可以在应用a、应用b以及应用c的集成开发环境中基于框架文件对小程序进行编译链接,进而实现小程序在应用a、应用b以及应用c中运行小程序,实现了小程序的跨应用运行,提高小程序运行效率。
由以上可知,本申请实施例通过服务器接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,在加载后小程序架构中创建渲染控制组件,并通过渲染控制组件遍历第一应用对应的原生控件,根据小程序对应的函数调用信息将遍历到的原生控件对应的调用函数进行函数映射;服务器在原生控件中确定出用于构建小程序的目标控件,并在原生控件对应的映射后调用函数中筛选出目标控件对应的目标调用函数,当接收到针对小程序的自定义功能构建请求时,通过渲染控制组件获取自定义功能对应的函数地址以及调用属性信息;服务器基于函数地址以及调用属性信息,通过渲染控制组件将自定义功能与预设功能桥接接口进行关联,得到目标功能桥接接口,根据目标调用函数以及目标功能桥接接口,在第一应用中构建小程序;服务器通过创建小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息,获取小程序对应的源代码文件,并在源代码文件中识别出小程序对应的接口调用代码;服务器在应用程序接口信息中提取出第二应用对应的平台接口信息,在接口调用代码中识别出目标接口信息,并根据平台接口信息对接口调用代码中的目标接口信息进行转换,得到小程序的目标源代码文件;服务器基于数据处理组件,将目标源代码文件进行编译处理,得到目标源代码文件对应的目标格式文件,获取与小程序关联的资源文件的资源属性信息,并根据资源属性信息获取资源文件;服务器采用包管理框架将目标格式文件以及资源文件进行打包处理,得到小程序对应的框架文件,通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。以此,通过在第一应用中加载小程序架构,根据加载后小程序架构提供的渲染控制组件构建第一应用的小程序,并基于渲染控制组件实现小程序在第一应用中调用原生控件以及自定义功能的能力,然后通过基于小程序架构创建的数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息,从而根据应用程序接口信息将小程序对应的源代码文件中的接口调用代码进行接口转换,并将接口转换后的源代码文件以框架文件的形式加载到第二应用的集成开发环境中,以此实现了小程序的跨应用运行,简化了小程序跨应用运行的流程,进而提高了小程序的运行效率。
为了更好地实施以上方法,本发明实施例还提供一种小程序运行装置,该小程序运行装置可以集成在计算机设备中。
例如,如图6所示,为本申请实施例提供的小程序运行装置的结构示意图,该小程序运行装置可以包括构建单元301、获取单元302、转换单元303、转化单元304和加载单元305,如下:
构建单元301,用于接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;
获取单元302,用于创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行该小程序的第二应用对应的应用程序接口信息;
转换单元303,用于基于该应用程序接口信息,将该小程序对应的源代码文件中的接口调用代码进行接口转换,得到该小程序的目标源代码文件;
转化单元304,用于基于该数据处理组件,将该小程序的目标源代码文件转化为框架文件;
加载单元305,用于通过该数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境。
在一实施例中,该转换单元303,包括:
接口调用代码识别子单元,用于获取该小程序对应的源代码文件,并在该源代码文件中识别出该小程序对应的接口调用代码;
平台接口信息提取子单元,用于在该应用程序接口信息中提取出该第二应用对应的平台接口信息;
接口转换子单元,用于在该接口调用代码中识别出目标接口信息,并根据该平台接口信息对该接口调用代码中的目标接口信息进行转换。
在一实施例中,该构建单元301,包括:
加载子单元,用于在加载后小程序架构中创建渲染控制组件,并通过渲染控制组件遍历该第一应用对应的原生控件;
函数映射子单元,用于根据小程序对应的函数调用信息将遍历到的原生控件对应的调用函数进行函数映射,得到映射后调用函数,以基于映射后调用函数实现小程序在该第一应用中的运行;
构建子单元,用于基于该原生控件的映射后调用函数,在该第一应用中构建小程序。
在一实施例中,该构建子单元,包括:
筛选模块,用于在该原生控件中确定出用于构建小程序的目标控件,并在该原生控件对应的映射后调用函数中筛选出该目标控件对应的目标调用函数;
函数信息获取模块,用于当接收到针对小程序的自定义功能构建请求时,通过该渲染控制组件获取该自定义功能对应的函数地址以及调用属性信息;
接口关联模块,用于基于该函数地址以及调用属性信息,通过该渲染控制组件将该自定义功能与预设功能桥接接口进行关联,得到目标功能桥接接口;
构建模块,用于根据该目标调用函数以及该目标功能桥接接口,在该第一应用中构建该小程序。
在一实施例中,该转化单元304,包括:
编译子单元,用于基于该数据处理组件,将该目标源代码文件进行编译处理,得到该目标源代码文件对应的目标格式文件;
资源获取子单元,用于获取与该小程序关联的资源文件的资源属性信息,并根据该资源属性信息获取该资源文件;
打包子单元,用于采用包管理框架将该目标格式文件以及该资源文件进行打包处理,得到该小程序对应的框架文件。
在一实施例中,该编译子单元,包括:
文件编译模块,用于基于该数据处理组件,将该目标源代码文件进行编译,得到目标文件;
序列转换模块,用于获取字节码转换信息,基于该字节码转换信息对该目标文件进行序列转换,得到转换后目标文件;
链接模块,用于对该转换后目标文件进行链接处理,得到该目标源代码文件对应的目标格式文件。
在一实施例中,该打包子单元,包括:
存储模块,用于将该资源文件存储至包管理框架中的框架资源文件包中,并将该目标格式文件存储至该包管理框架中的链接地址文件中;
确定模块,用于根据该包管理框架中的框架资源文件包以及链接地址文件,确定该小程序对应的框架文件。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由以上可知,本申请实施例通过构建单元301接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;获取单元302创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息;转换单元303基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,得到小程序的目标源代码文件;转化单元304基于数据处理组件,将小程序的目标源代码文件转化为框架文件;加载单元305通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。以此,通过在第一应用中加载小程序架构,并在加载后小程序架构中创建渲染控制组件,从而根据渲染控制组件构建第一应用的小程序,进而通过基于小程序架构创建的数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息,从而根据应用程序接口信息将小程序对应的源代码文件中的接口调用代码进行接口转换,并将接口转换后的源代码文件以框架文件的形式加载到第二应用的集成开发环境中,以此实现了小程序的跨应用运行,简化了小程序跨应用运行的流程,进而提高了小程序的运行效率。
本申请实施例还提供一种计算机设备,如图7所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,该计算机设备可以是服务器,也可以为终端,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图7中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及小程序运行。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息;基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,得到小程序的目标源代码文件;基于数据处理组件,将小程序的目标源代码文件转化为框架文件;通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。应当说明的是,本申请实施例提供的计算机设备与上文实施例中的适用于小程序运行方法属于同一构思,其具体实现过程详见以上方法实施例,此处不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种小程序运行方法中的步骤。例如,该指令可以执行如下步骤:
接收第一应用发送的小程序架构加载请求,基于小程序架构加载请求将小程序架构加载在第一应用中,并在第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;创建加载后小程序架构对应的数据处理组件,并通过数据处理组件获取待运行小程序的第二应用对应的应用程序接口信息;基于应用程序接口信息,将小程序对应的源代码文件中的接口调用代码进行接口转换,得到小程序的目标源代码文件;基于数据处理组件,将小程序的目标源代码文件转化为框架文件;通过数据处理组件,将携带框架文件的小程序加载请求发送至第二应用的集成开发环境中,以基于框架文件通过小程序加载请求指示集成开发环境在第二应用中运行小程序。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种小程序运行方法中的步骤,因此,可以实现本申请实施例所提供的任一种小程序运行方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
其中,根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的各种可选实现方式中提供的方法。
以上对本申请实施例所提供的一种小程序运行方法、装置和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种小程序运行方法,其特征在于,包括:
接收第一应用发送的小程序架构加载请求,基于所述小程序架构加载请求将小程序架构加载在所述第一应用中,并在所述第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;
创建所述加载后小程序架构对应的数据处理组件,并通过所述数据处理组件获取待运行所述小程序的第二应用对应的应用程序接口信息;
基于所述应用程序接口信息,将所述小程序对应的源代码文件中的接口调用代码进行接口转换,得到所述小程序的目标源代码文件;
基于所述数据处理组件,将所述小程序的目标源代码文件转化为框架文件;
通过所述数据处理组件,将携带所述框架文件的小程序加载请求发送至所述第二应用的集成开发环境中,以基于所述框架文件通过所述小程序加载请求指示所述集成开发环境在所述第二应用中运行所述小程序。
2.如权利要求1所述的小程序运行方法,其特征在于,所述基于所述应用程序接口信息,将所述小程序对应的源代码文件中的接口调用代码进行接口转换,包括:
获取所述小程序对应的源代码文件,并在所述源代码文件中识别出所述小程序对应的接口调用代码;
在所述应用程序接口信息中提取出所述第二应用对应的平台接口信息;
在所述接口调用代码中识别出目标接口信息,并根据所述平台接口信息对所述接口调用代码中的目标接口信息进行转换。
3.如权利要求1所述的小程序运行方法,其特征在于,所述在所述第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序,包括:
在加载后小程序架构中创建渲染控制组件,并通过所述渲染控制组件遍历所述第一应用对应的原生控件;
根据小程序对应的函数调用信息将遍历到的原生控件对应的调用函数进行函数映射,得到映射后调用函数,以基于所述映射后调用函数实现小程序在所述第一应用中的运行;
基于所述原生控件的映射后调用函数,在所述第一应用中构建小程序。
4.如权利要求3所述的小程序运行方法,其特征在于,所述基于所述原生控件的映射后调用函数,在所述第一应用中构建小程序,包括:
在所述原生控件中确定出用于构建小程序的目标控件,并在所述原生控件对应的映射后调用函数中筛选出所述目标控件对应的目标调用函数;
当接收到针对小程序的自定义功能构建请求时,通过所述渲染控制组件获取所述自定义功能对应的函数地址以及调用属性信息;
基于所述函数地址以及调用属性信息,通过所述渲染控制组件将所述自定义功能与预设功能桥接接口进行关联,得到目标功能桥接接口;
根据所述目标调用函数以及所述目标功能桥接接口,在所述第一应用中构建所述小程序。
5.如权利要求1所述的小程序运行方法,其特征在于,所述基于所述数据处理组件,将所述小程序的目标源代码文件转化为框架文件,包括:
基于所述数据处理组件,将所述目标源代码文件进行编译处理,得到所述目标源代码文件对应的目标格式文件;
获取与所述小程序关联的资源文件的资源属性信息,并根据所述资源属性信息获取所述资源文件;
采用包管理框架将所述目标格式文件以及所述资源文件进行打包处理,得到所述小程序对应的框架文件。
6.如权利要求5所述的小程序运行方法,其特征在于,所述基于所述数据处理组件,将所述目标源代码文件进行编译处理,得到所述目标源代码文件对应的目标格式文件,包括:
基于所述数据处理组件,将所述目标源代码文件进行编译,得到目标文件;
获取字节码转换信息,基于所述字节码转换信息对所述目标文件进行序列转换,得到转换后目标文件;
对所述转换后目标文件进行链接处理,得到所述目标源代码文件对应的目标格式文件。
7.如权利要求5所述的小程序运行方法,其特征在于,所述采用包管理框架将所述目标格式文件以及所述资源文件进行打包处理,得到所述小程序对应的框架文件,包括:
将所述资源文件存储至包管理框架中的框架资源文件包中,并将所述目标格式文件存储至所述包管理框架中的链接地址文件中;
根据所述包管理框架中的框架资源文件包以及链接地址文件,确定所述小程序对应的框架文件。
8.一种小程序运行装置,其特征在于,包括:
构建单元,用于接收第一应用发送的小程序架构加载请求,基于所述小程序架构加载请求将小程序架构加载在所述第一应用中,并在所述第一应用中基于加载后小程序架构提供的渲染控制组件构建小程序;
获取单元,用于创建所述加载后小程序架构对应的数据处理组件,并通过所述数据处理组件获取待运行所述小程序的第二应用对应的应用程序接口信息;
转换单元,用于基于所述应用程序接口信息,将所述小程序对应的源代码文件中的接口调用代码进行接口转换,得到所述小程序的目标源代码文件;
转化单元,用于基于所述数据处理组件,将所述小程序的目标源代码文件转化为框架文件;
加载单元,用于通过所述数据处理组件,将携带所述框架文件的小程序加载请求发送至所述第二应用的集成开发环境中,以基于所述框架文件通过所述小程序加载请求指示所述集成开发环境在所述第二应用中运行所述小程序。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的小程序运行方法中的步骤。
10.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的小程序运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211318499.1A CN117971350A (zh) | 2022-10-26 | 2022-10-26 | 小程序运行方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211318499.1A CN117971350A (zh) | 2022-10-26 | 2022-10-26 | 小程序运行方法、装置和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117971350A true CN117971350A (zh) | 2024-05-03 |
Family
ID=90846544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211318499.1A Pending CN117971350A (zh) | 2022-10-26 | 2022-10-26 | 小程序运行方法、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117971350A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118331660A (zh) * | 2024-06-13 | 2024-07-12 | 腾讯科技(深圳)有限公司 | 接口调用方法、装置、设备和存储介质 |
-
2022
- 2022-10-26 CN CN202211318499.1A patent/CN117971350A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118331660A (zh) * | 2024-06-13 | 2024-07-12 | 腾讯科技(深圳)有限公司 | 接口调用方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11409949B2 (en) | Mobile device resource provisioning system and method | |
CN112748908B (zh) | 基于SSM框架的Restful服务开发方法与装置 | |
US8615750B1 (en) | Optimizing application compiling | |
US20060265469A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
CN112733158B (zh) | Android系统漏洞检测方法、电子设备及存储介质 | |
CN106850650B (zh) | 用于游戏客户端访问数据的方法及客户端游戏系统 | |
CN111506314A (zh) | 项目开发的方法、装置、服务器及介质 | |
CN115934093A (zh) | 小程序跨端应用方法、相关装置及计算机存储介质 | |
CN117971350A (zh) | 小程序运行方法、装置和计算机可读存储介质 | |
CN114547604A (zh) | 一种应用检测方法、装置、存储介质及电子设备 | |
CN114115884B (zh) | 一种编程服务的管理方法以及相关装置 | |
CN111309319A (zh) | 可继承的局数据动态页面配置方法和装置 | |
CN116342283A (zh) | 可信智能合约实现方法、装置、设备及可读存储介质 | |
CN113835748B (zh) | 基于html5的应用程序的打包方法、系统和可读介质 | |
CN113626001B (zh) | 一种基于脚本的api动态编排方法及装置 | |
CN115760391A (zh) | 区块链中智能合约更改方法、装置、电子设备及存储介质 | |
CN113342399A (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
CN114064176A (zh) | 一种视图交互方法、装置、电子设备及计算机可读介质 | |
CN117056317B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN117195239A (zh) | 微应用资源包生成方法、装置、计算机设备和存储介质 | |
CN116775099A (zh) | 程序数据处理方法、装置、电子设备、介质及程序产品 | |
CN116166452A (zh) | 一种远程过程调用的白名单处理方法和装置 | |
CN114637680A (zh) | 一种信息采集方法、装置及设备 | |
CN115878282A (zh) | 跨平台交互方法、装置及设备 | |
CN105224293A (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 |