CN117389567A - 多端应用开发方法、装置、介质及设备 - Google Patents
多端应用开发方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN117389567A CN117389567A CN202311290139.XA CN202311290139A CN117389567A CN 117389567 A CN117389567 A CN 117389567A CN 202311290139 A CN202311290139 A CN 202311290139A CN 117389567 A CN117389567 A CN 117389567A
- Authority
- CN
- China
- Prior art keywords
- application
- type
- file
- target
- library file
- 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
- 238000011161 development Methods 0.000 title claims abstract description 136
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000003068 static effect Effects 0.000 claims abstract description 101
- 230000006870 function Effects 0.000 claims description 169
- 230000001419 dependent effect Effects 0.000 claims description 31
- 238000004806 packaging method and process Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 14
- 238000002347 injection Methods 0.000 claims description 13
- 239000007924 injection Substances 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Classifications
-
- 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
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
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)
- Stored Programmes (AREA)
Abstract
本申请公开了多端应用开发方法、装置、介质及设备,涉及软件开发领域,方法包括:将每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;基于工程文件和每一种应用端类型对应的静态库文件,得到每一种应用端类型对应的初始应用程序包;将每一种应用端类型对应的至少一个动态库文件注入至每一种应用端类型对应的初始应用程序包,得到每一种应用端类型对应的目标应用程序包。本申请提供的技术方案可以基于应用的工程文件,开发编译得到多种应用端类型各自对应的目标应用程序包,提高了多端应用开发效率。
Description
技术领域
本申请涉及软件开发领域,具体涉及多端应用开发方法、装置、介质及设备。
背景技术
在当今数字化时代,移动应用和软件已经成为人们生活中不可或缺的一部分。然而,面对不同操作系统、不同的通信设备和不同的屏幕尺寸等的多样化的应用端需求时,开发者需要分别针对不同的应用端开发同一应用的应用程序,导致开发效率低下,同时也难以保持一致的用户体验。
发明内容
为了提高多端应用的开发效率,本申请提供了多端应用开发方法、装置、介质及设备。所述技术方案如下:
第一方面,本申请提供了一种多端应用开发方法,应用于服务侧,所述方法包括:
获取基础配置信息和拓展配置信息;所述基础配置信息指示开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息;所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
获取应用的工程文件;
基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;
基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;
将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
第二方面,本申请提供了一种多端应用开发方法,应用于本地侧,所述方法包括:
在所述本地侧的终端上展示多端应用开发界面,所述多端应用开发界面展示有应用的工程文件;
响应于开发者基于所述多端应用开发界面执行的配置操作,确定基础配置信息和拓展配置信息,所述基础配置信息指示所述开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息,所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
响应于所述开发者基于所述多端应用开发界面执行的云端构建操作,将所述基础配置信息、所述拓展配置信息和所述工程文件发送至多端应用开发平台的服务侧,以使所述多端应用开发平台的服务侧基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
第三方面,本申请提供了一种多端应用开发装置,应用于服务侧,所述装置包括:
第一获取模块,用于获取基础配置信息和拓展配置信息;所述基础配置信息指示开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息;所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
第二获取模块,用于获取应用的工程文件;
编译模块,用于基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;
静态库链接模块,用于基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;
动态库注入模块,用于将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
可选的,所述编译模块包括:
第一获取单元,用于基于所述基础配置信息,获取目标应用端类型对应的基础功能模块的第一描述信息;所述目标应用端类型为所述多种应用端类型中的任一种应用端类型;所述第一描述信息指示所述目标应用端类型对应的基础功能模块中的至少一个第一子功能模块以及至少一个第一子依赖模块;
第二获取单元,用于基于所述拓展配置信息,获取所述目标应用端类型对应的至少一个拓展功能模块的第二描述信息;所述第二描述信息指示所述目标应用端类型对应的至少一个拓展功能模块中的至少一个第二子功能模块以及至少一个第二子依赖模块;
第一文件打包单元,用于根据所述第一描述信息和所述第二描述信息进行文件打包,得到目标文件,所述目标文件包含第一声明信息和第二声明信息,所述第一声明信息指示所述目标应用端类型对应的至少一个拓展功能模块为所述目标应用端类型对应的基础功能模块的依赖模块;所述第二声明信息指示在编译过程中将所述目标应用端类型对应的至少一个拓展功能模块进行单独编译;
第一编译单元,用于基于所述第一声明信息和所述第二声明信息,对所述目标文件进行编译,得到所述目标应用端类型对应的目标静态库文件和所述目标应用端类型对应的至少一个目标动态库文件;
其中,所述目标静态库文件为实现所述至少一个第一子功能模块以及所述至少一个第一子依赖模块的二进制程序文件;所述目标动态库文件为实现所述至少一个第二子功能模块以及至少一个私有子依赖模块的二进制程序文件;所述至少一个私有子依赖模块为所述至少一个第二子依赖模块除至少一个公共子依赖模块之外的部分;所述至少一个公共子依赖模块为所述至少一个第一子依赖模块和所述至少一个第二子依赖模块的共有部分。
可选的,所述第一编译单元包括:
静态库编译子单元,用于基于所述第一声明信息和所述第二声明信息,对所述目标文件进行编译,得到所述目标应用端类型对应的基础功能模块的第一静态库文件,以及所述目标应用端类型对应的至少一个拓展功能模块的至少一个第二静态库文件,并将所述第一静态库文件作为所述目标静态库文件;
动态库编译子单元,用于基于所述至少一个第二静态库文件,生成所述至少一个目标动态库文件,所述至少一个目标动态库文件中包含第三声明信息,所述第三声明信息指示当所述至少一个目标动态库文件被调用时在所述目标应用程序包的命名空间中查找所述至少一个公共依赖子模块。
可选的,所述动态库编译子单元包括:
格式转换子单元,用于对所述至少一个第二静态库文件进行文件格式转换,得到为至少一个初始动态库文件;
声明信息生成子单元,用于生成所述第三声明信息;
文件生成子单元,用于根据所述至少一个初始动态库文件和所述第三声明信息,得到所述至少一个目标动态库文件。
可选的,所述静态库链接模块包括:
第二编译单元,用于对所述工程文件中的源码文件进行编译,得到源码文件对应的可执行程序文件;
静态库链接单元,用于将所述每一种应用端类型对应的静态库文件分别链接至所述可执行程序文件,得到所述每一种应用端类型对应的初始可执行程序文件。
可选的,所述动态库注入模块包括:
指令增加单元,用于在所述每一种应用端类型对应的初始可执行程序文件中增加动态库加载指令,得到所述每一种应用端类型对应的目标可执行程序文件;
第二文件打包单元,用于对所述每一种应用端类型对应的目标可执行程序文件和所述每一种应用端类型对应的至少一个动态库文件进行打包,得到所述每一种应用端类型对应的目标应用程序包;
其中,所述动态库装载指令用于在加载所述每一种应用端类型对应的目标可执行程序文件时将所述每一种应用端类型对应的至少一个动态库文件进行注册和初始化。
可选的,所述动态库注入模块包括:
动态库文件目录确定单元,用于确定所述每一种应用端类型对应的初始应用程序包中的动态库文件目录;
更新单元,用于将所述每一种应用端类型对应的至少一个动态库文件放入对应的初始应用程序包中的动态库文件目录,得到所述每一种应用端类型对应的更新应用程序包;
重签名单元,用于对所述每一种应用端类型对应的更新应用程序包进行重签名,得到所述每一种应用端类型对应的目标应用程序包。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如第一方面或第二方面所述的一种多端应用开发方法。
第五方面,本申请提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行以实现如第一方面或第二方面所述的一种方法。
第六方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令被处理器执行时实现如第一方面所述的一种多端应用开发方法。
本申请提供的多端应用开发方法、装置、介质及设备,具有如下技术效果:
本申请提供的方案可以实现一次编写、多端运行的高效开发效果,也即可以基于开发者编写所得到的工程文件和配置所得到的基础配置信息和拓展配置信息生成每一种应用端类型对应的目标应用程序包,可以减少重复开发、重复发布的步骤,消除不同应用端编程语言之间的准入门槛,并大大提高多端开发的开发效率。在多端应用开发平台的服务侧,首先将基础配置信息指示的每一种应用端类型的基础功能模块编译为对应的静态库文件,将拓展配置信息指示的每一种应用端类型的至少一个拓展功能模块编译为对应的至少一个动态库文件;后将工程文件和每一种应用端类型对应的静态库文件进行编译、链接,得到每一种应用端类型对应的初始应用程序包;最终将每一种应用端类型对应的至少一个动态库文件注入对应的初始应用程序包,得到与每一种应用端类型对应的目标应用程序包括,实现了一次编写、多端运行的效果,提升了多端应用开发的效率,保证了不同应用端类型上用户体验的一致性。此外,每一种应用端类型对应的基础功能模块仅对开发者公开其版本信息而不公开具体内容,同时在服务侧直接将基础功能模块编译为静态库文件并链接至工程文件编译后的二进制可执行程序文件中,并打包为初始应用程序包,从多端应用开发平台的角度,保障了基础功能模块的安全性。多端应用开发平台还提供了功能模块的拓展配置,维护了多端应用开发的可拓展性,提升应用升级速度,也降低了开发者在进行多端应用开发的所需的各端原生知识门槛,拓展功能模块以动态库注入的方式也极大地降低了服务侧实施多端应用云构建方案的成本与难度。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种多端应用开发方法的实施环境示意图;
图2是本申请实施例提供的应用于服务侧的一种多端应用开发方法的流程示意图;
图3是本申请实施例提供的一种功能模块的编译流程示意图;
图4是本申请实施例提供的应用于本地侧的一种多端应用开发方法的流程示意图;
图5是本申请实施例提供的一种多端应用开发界面的示意图;
图6是本申请实施例提供的一种配置拓展功能模块的操作示意图;
图7是本申请实施例提供的一种程序运行测试的操作示意图;
图8是本申请实施例提供的一种多端应用云端构建的操作示意图;
图9是本申请实施例提供的应用于服务侧的一种多端应用开发装置的示意图;
图10是本申请实施例提供的应用于本地侧的一种多端应用开发装置的示意图;
图11是本申请实施例提供的用于实现一种多端应用开发方法的设备的硬件结构示意图。
具体实施方式
为了提高多端应用的开发效率,本申请实施例提供了多端应用开发方法、装置、介质及设备。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
可以理解的是,在本申请的具体实施方式中,涉及到工程文件等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
请参阅图1,其为本申请实施例提供的一种多端应用开发方法的实施环境示意图,如图1所示,该实施环境可以至少包括本地侧的客户端01和服务侧的服务器02。
具体的,所述客户端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、车载终端、数字助理、智能可穿戴设备及语音交互设备等类型的设备,也可以包括运行于设备中的软体,例如一些服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用。具体的,所述客户端01为多端应用开发平台的本地侧,可以用于实现开发者对应用的开发,开发者只需要针对应用进行一次编写,同时开发者基于所述客户端01进行针对多端应用开发的配置操作,编写所得到的工程文件和配置所得到的基础配置信息和拓展配置信息被所述客户端01发送至所述服务器02进行多端应用开发,得到多个目标应用程序包。
具体的,所述服务器02可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。所述服务器02可以包括有网络通信单元、处理器和存储器等等。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。具体的,所述服务器02可以为多端应用开发平台的服务侧,可以用于基于开发者编写所得到的工程文件和配置所得到的基础配置信息和拓展配置信息生成每一种应用端类型对应的目标应用程序包。首先将基础配置信息指示的每一种应用端类型的基础功能模块编译为对应的静态库文件,将拓展配置信息指示的每一种应用端类型的至少一个拓展功能模块编译为对应的至少一个动态库文件;后将工程文件和每一种应用端类型对应的静态库文件进行编译、链接,得到每一种应用端类型对应的初始应用程序包;最终将每一种应用端类型对应的至少一个动态库文件注入对应的初始应用程序包,得到与每一种应用端类型对应的目标应用程序包括,实现了一次编写、多端开发的效果,提升了多端应用开发的效率,保证了不同应用端类型上用户体验的一致性。此外,每一种应用端类型对应的基础功能模块仅对开发者公开其版本信息而不公开具体内容,同时在服务侧直接将基础功能模块编译为静态库文件并链接至工程文件编译后的二进制可执行程序文件中,并打包为初始应用程序包,从多端应用开发平台的角度,保障了基础功能模块的安全性。多端应用开发平台还提供了功能模块的拓展配置,维护了多端应用开发的可拓展性,也降低了开发者在进行多端应用开发的所需的各端原生知识门槛,拓展功能模块以动态库注入的方式也极大地降低了服务侧实施多端应用云构建方案的成本与难度。
在本申请实施例的另一种可行的实施方式中,工程文件可以在所述客户端01上被编写以及被编译为二进制可执行文件,所述服务器02直接将静态库文件链接至由工程文件编译得到的二进制可执行文件中。
本申请实施例还可以结合云技术实现,云技术(Cloudtechnology)是指在广域网或局域网内将硬件、软件及网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术,也可理解为基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术及应用技术等的总称。云技术需要以云计算作为支撑。云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。具体地,所述服务器02和数据库位于云端,所述服务器02可以是实体机器,也可以是虚拟化机器。
以下介绍本申请提供的一种多端应用开发方法。图2是本申请实施例提供的一种多端应用开发方法的流程图,本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。请参照图2,本申请实施例提供的一种多端应用开发方法,应用于服务侧,可以包括如下步骤:
S210:获取基础配置信息和拓展配置信息;基础配置信息指示开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息;拓展配置信息指示开发者针对每一种应用端类型所配置的至少一个拓展功能模块。
在本申请实施例中,开发者可以基于多端应用开发平台的本地侧设备对每一种应用端类型对应的基础功能模块的版本信息和每一种应用端类型对应的扩展功能模块进行配置。具体操作可以参考本申请提供的应用于本地侧的方法实施例,此处不做赘述。
在本申请实施例中,应用可以按应用终端所运行的操作系统分为多个类型,操作系统可以包括MacOS、Windows、Linux、iOS、Android等,相应地应用可以为iOS应用、Android应用等;应用也可以按照应用程序在应用终端上的运行形态分为多个类型,应用程序在应用终端上的运行形态可以包括独立的移动应用程序、小程序(小程序是一种不需要下载安装即可使用的应用)、浏览器应用程序等。
在本申请实施例中,基础功能模块为多端应用开发平台为应用开发提供的核心SDK(Software Development Kit,软件开发工具包;SDK一般是软件工程师为特定的软件包、软件框架、硬件平台、操作系统等构建应用软件时的开发工具的集合),核心SDK集成了丰富的应用程序接口(ApplicationProgramming Interface,简称API,又称应用编程接口)和相关组件,应用程序接口和相关组件所能实现的功能构成了应用在对应的应用端类型上运行的基础框架。不同应用端类型的基础功能模块可以存在差异,同一应用端类型不同版本的基础功能模块也可以存在差异。在本申请实施例中,应用的开发者可以从多端应用开发平台所提供的各应用端类型对应的各个版本的基础功能模块中进行自主选择配置,无需单独针对每个应用端类型对应的基础功能模块进行开发实现,降低了开发门槛,也提高了开发效率;同时应用的开发者仅可以通过版本信息选择所需的基础功能模块,而无法对基础功能模块的实质性内容进行查看和修改,可以有效保护多端应用开发平台的开发资源,保障基础功能模块的稳定性和安全性。
在本申请实施例中,拓展功能模块是为应用开发所提供的除基础功能模块之外的拓展SDK,拓展功能模块可以为蓝牙连接功能模块、网络拓展连接模块、地图功能模块、支付功能模块等,拓展功能模块中也集成了实现相应功能所需的应用程序接口和相关组件。不同应用端类型对应的可选的拓展功能模块可以不相同。在本申请实施例中,应用的开发者可以基于多端应用开发平台的本地侧设备从多端应用开发平台所提供的各应用端类型对应的至少一个拓展功能模块中进行自主配置,实现了应用功能的可拓展性,也降低了开发门槛,也提高了开发效率;应用的开发者还可以将自行编写的拓展功能模块上传至多端应用开发平台以进行配置。
S220:获取应用的工程文件。
在本申请实施例中,应用的工程文件可以包括开发者针对该应用所编写的源码文件、运行该应用所需要的资源文件等。工程文件可以利用任一应用端类型对应的原生语言进行编写得到。
不同的应用端类型可能会使用不同的通信协议、需要适配不同的屏幕尺寸等,如果针对每一种应用端类型单独开该应用,对开发者所需具备的各端应用开发知识的要求也高,开发过程中会存在重复开发、重复发布的问题,降低了多端应用开发的效率,也会导致用户体验不一致。而本申请实施例所提供的多端应用开发平台,可以基于通用的工程文件分别生成与各应用端类型适配的目标应用程序包,从而使应用可以在多个不同的操作系统和设备上运行。
S230:基于基础配置信息和拓展配置信息,将每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件。
可以理解的是,静态库文件和动态库文件都是程序代码的集合,静态库文件和动态库文件中将实现功能模块的程序代码编写成二进制的形式从而达到保护代码的目的,同时通过封装代码、开放应用程序接口实现将功能模块提供给应用程序使用。静态库文件是一种在编译时链接到应用程序(也即应用的可执行文件)中的代码库文件,它使得应用程序包含了完整的库代码而可以独立运行。动态库文件是一种在应用程序运行时动态加载的代码库文件,可以减少程序运行时的资源占用,也可以更灵活地管理动态库文件的版本和更新。
在本申请的一个实施例中,若同一应用端类型对应的基础功能模块与该应用端类型对应的至少一个拓展功能模块之间不存在公共依赖,则可以直接将每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件,拓展功能模块与动态库文件一一对应。
在本申请的一个实施例中,考虑到基础功能模块与至少一个拓展功能模块之间会存在公共依赖,为了将公共依赖导入至基础功能模块对应的静态库文件中而不导入至少一个拓展功能模块对应的至少一个动态库文件,以保护基础功能模块中的公共依赖部分,以任一应用端类型为例,如图3所示,可以将步骤S230实施为:
S231:基于基础配置信息,获取目标应用端类型对应的基础功能模块的第一描述信息;目标应用端类型为多种应用端类型中的任一种应用端类型;第一描述信息指示目标应用端类型对应的基础功能模块中的至少一个第一子功能模块以及至少一个第一子依赖模块。
在多端应用开发平台中,可以采用Cocoapods等工具对功能模块(SDK)以及功能模块之间的依赖关系进行管理和维护。第一描述信息可以包括但不限于{moduleName}.podspec和{moduleName}API.podspec。其中moduleName为具体的基础功能模块的命名名称,{moduleName}.podspec定义了基础功能模块的源码和其依赖等,源码用于实现目标应用端类型对应的基础功能模块中的至少一个第一子功能模块,{moduleName}.podspec中定义的依赖关系指示目标应用端类型对应的基础功能模块中的至少一个第一子依赖模块。其中{moduleName}API.podspec和其API代码是基础功能模块对外暴露的应用程序接口的声明。
S232:基于拓展配置信息,获取目标应用端类型对应的至少一个拓展功能模块的第二描述信息;第二描述信息指示目标应用端类型对应的至少一个拓展功能模块中的至少一个第二子功能模块以及至少一个第二子依赖模块。
第二描述信息也可以包括但不限于{moduleName}.podspec和{moduleName}API.podspec。此外,第二描述信息还可以包括模块协议,该模块协议用于组织拓展功能模块在基础功能模块内的注册、初始化、调用时机等。
基础功能模块内部还维护了一个模块中心,拓展功能模块通过宏函数,会在应用程序装载时往基础功能模块模块的模块中心进行注册,之后模块中心会按照模块协议在不同的阶段调用不同的方法进行初始化,也会按照{moduleName}API.podspec声明的应用程序接口去调用拓展功能模块等。
S233:根据第一描述信息和第二描述信息进行文件打包,得到目标文件,目标文件包含第一声明信息和第二声明信息,第一声明信息指示目标应用端类型对应的至少一个拓展功能模块为目标应用端类型对应的基础功能模块的依赖模块;第二声明信息指示在编译过程中将目标应用端类型对应的至少一个拓展功能模块进行单独编译。
根据第一描述信息和第二描述信息进行文件打包,也即是将实现目应用端类型对应的基础功能模块和对应的至少一个拓展功能模块的源文件、资源文件、头文件等进行打包合并,得到目标文件,同时生成第一声明信息和第二声明信息。
可以理解的是,在基础功能模块与至少一个拓展功能模块之间存在公共依赖的情况下,直接对基础功能模块和至少一个拓展功能模块进行单独编译,都会将公共依赖部分以头文件等形式导入到库文件中,由于拓展功能模块对应的动态库文件会对开发者公开,也即会将基础功能模块中的部分对外公开,不利于保护多端应用开发平台的核心开发资源。故在本申请的实施例中,先进行整体的文件打包,以保证公共依赖部分会和基础功能模块的其他内容一起被编译,同时利用第一声明信息将每个拓展功能模块声明为基础功能模块的依赖(但实际情况是拓展功能模块依赖了基础功能模块中的公共依赖部分),利用第二声明信息声明在编译时要将各拓展功能模块从目标文件中剔除出来单独打包编译为独立的动态库文件,以及各拓展功能模块独自依赖的子依赖模块(也即后续的私有子依赖模块)也需要从目标文件中剔除出来打包至对应的拓展功能模块中。
S234:基于第一声明信息和第二声明信息,对目标文件进行编译,得到目标应用端类型对应的目标静态库文件和目标应用端类型对应的至少一个目标动态库文件。
其中,目标静态库文件为实现至少一个第一子功能模块以及至少一个第一子依赖模块的二进制程序文件;目标动态库文件为实现至少一个第二子功能模块以及至少一个私有子依赖模块的二进制程序文件;至少一个私有子依赖模块为至少一个第二子依赖模块除至少一个公共子依赖模块之外的部分;至少一个公共子依赖模块为至少一个第一子依赖模块和至少一个第二子依赖模块的共有部分。
公共子依赖模块是基础功能模块与至少一个拓展功能模块之间共享的工具类、配置类、异常类、全局异常处理、全局返回值对象等。编译后,公共子依赖模块会被编译至基础功能模块对应的目标静态库文件中,同时对外暴露名称符号,以便拓展功能模块被调用运行时可以访问到基础功能模块内的公共子依赖模块。
上述实施例中,将公共依赖子模块导入至基础功能模块对应的静态库文件中而不导入拓展功能模块对应的动态库文件中,而静态库文件会在工程文件编译的过程中直接链接至可执行程序文件中,从而可以保护基础功能模块中的公共依赖子模块,使其避免直接暴露于开发者。
在本申请的一个实施例中,具体地,步骤S234可以实施为:
S2341:基于第一声明信息和第二声明信息,对目标文件进行编译,得到目标应用端类型对应的基础功能模块的第一静态库文件,以及目标应用端类型对应的至少一个拓展功能模块的至少一个第二静态库文件,并将第一静态库文件作为目标静态库文件。
S2342:基于至少一个第二静态库文件,生成至少一个目标动态库文件,至少一个目标动态库文件中包含第三声明信息,第三声明信息指示当至少一个目标动态库文件被调用时在目标应用程序包的命名空间中查找至少一个公共依赖子模块。
可行地,先对至少一个第二静态库文件进行文件格式转换,得到为至少一个初始动态库文件;以及生成第三声明信息。最后根据至少一个初始动态库文件和第三声明信息,得到至少一个目标动态库文件。可以理解的是,静态库文件的格式一般可以为.lib、.a,动态库文件的格式一般可以为.dylib、.framework,其都是二进制程序文件,可以直接文件格式的转换,针对公共子依赖模块查找不到的问题,利用第三声明信息忽略报错而指示在查找不到时在目标应用程序包的命名空间中查找响应的符号。目标动态库文件中包含对应的初始动态库文件和第三声明信息。上述实施例中,实现了在查找不到公共子依赖模块情况下将拓展功能模块编译为动态库文件。
在本申请的一个实施例中,先将目标应用端类型对应的基础功能模块和对应的至少一个拓展功能模块分别编译成了各自对应的静态库文件。之所以无法将拓展功能模块直接编译成动态库文件,是因为单独将拓展功能模块编译成动态库文件时会出现找不到公共依赖子模块的问题,公共依赖子模块已经被编译到基础功能模块对应的静态库文件,拓展功能模块中不再有公共依赖子模块的空间名。所以需要先编译成静态库,之后再转为动态库。同时利用第三声明信息指示当至少一个目标动态库文件被调用时在目标应用程序包的命名空间中查找至少一个公共依赖子模块。上述实施例中,针对公共依赖子模块被编译至基础功能模块对应的静态库文件中的情况,适应性地将拓展功能模块先编译为静态库文件再转换为动态库文件,实现两类功能模块各自的编译结果。
S240:基于工程文件和每一种应用端类型对应的静态库文件,得到每一种应用端类型对应的初始应用程序包。
在本申请实施例中,为了进一步保护基础功能模块,可以直接将编译后的工程文件和每一种应用端类型对应的基础功能模块编译后得到的静态库文件打包为各应用端类型对应的初始应用程序包,例如编译后的工程文件和iOS应用对应的基础功能模块编译后得到的静态库文件打包得到对应的IPA(是Apple程序应用文件iPhoneApplication的缩写)、编译后的工程文件和Android应用对应的基础功能模块编译后得到的静态库文件打包得到对应的APK(Android applicationpackage,Android应用程序包)。
在本申请的一个实施例中,每一种应用端类型对应的初始应用程序包包括每一种应用端类型对应的初始可执行程序文件,
S241:对工程文件中的源码文件进行编译,得到源码文件对应的可执行程序文件。
S242:将每一种应用端类型对应的静态库文件分别链接至可执行程序文件,得到每一种应用端类型对应的初始可执行程序文件。
源码文件的文件格式可以为但不限于.h、.c、.cpp等,将源码文件先编译为对应的二进制的可执行程序文件。将每一种应用端类型对应的静态库文件分别链接至可执行程序文件,也即是将静态库文件中的二进制代码程序合并至可执行程序文件中,以使所得到的初始可执行程序文件包含完整的代码。
此外,初始应用程序包还可以包括编译后的资源文件等。
上述实施例中,针对每一种应用端类型,将应用端类型对应的静态库文件链接至源码文件编译后的可执行程序文件,得到初始可执行程序文件,更好地保护基础功能模块不被暴露,并可以将初始可执行程序文件和其他编译后的资源文件等打包为初始应用程序包。
S250:将每一种应用端类型对应的至少一个动态库文件注入至每一种应用端类型对应的初始应用程序包,得到每一种应用端类型对应的目标应用程序包。
相关技术中,拓展功能模块的引入依赖应用的开发者了解各应用端类型相关的原生工程,手动去完成拓展功能模块的原生配置、初始化流程等,对应用的开发者要求高,也容易造成不同应用端类型之间使用体验不一致。
在本申请实施例中,应用的开发者仅需选择所需配置的至少一个拓展功能模块,而不需自行编写、配置和引入,降低了开发门槛,能有效提升开发效率。同时,拓展功能模块以动态库文件的形式注入至初始应用程序包的方式也极大地降低了服务侧实施多端应用云构建方案的成本与难度,同时也方便了拓展功能模块的管理和维护。
在本申请的一个实施例中,动态库文件注入的方式可以被实施为:
S251:在每一种应用端类型对应的初始可执行程序文件中增加动态库加载指令,得到每一种应用端类型对应的目标可执行程序文件。
S253:对每一种应用端类型对应的目标可执行程序文件和每一种应用端类型对应的至少一个动态库文件进行打包,得到每一种应用端类型对应的目标应用程序包。
其中,动态库装载指令用于在加载每一种应用端类型对应的目标可执行程序文件时将每一种应用端类型对应的至少一个动态库文件进行注册和初始化。动态库装载指令可以基于前述实施例中所述的模块协议生成。
上述实施例中,动态库文件注入的方式为修改初始可执行程序文件,在初始可执行程序文件中增加一条动态库加载指令,并将路径执行对应的至少一个动态库文件,即可在安装了目标应用程序包后以应用程序运行时调用动态库文件中的程序,以及利用前述的第三声明信息指示动态库文件被调用时在目标应用程序包的命名空间中查找公共依赖部分。
在本申请的另一个实施例中,动态库文件注入的方式可以被实施为:
S252:确定每一种应用端类型对应的初始应用程序包中的动态库文件目录。
S254:将每一种应用端类型对应的至少一个动态库文件放入对应的初始应用程序包中的动态库文件目录,得到每一种应用端类型对应的更新应用程序包。
S256:对每一种应用端类型对应的更新应用程序包进行重签名,得到每一种应用端类型对应的目标应用程序包。
上述实施例中,将应用端类型对应的至少一个动态库文件放入对应的初始应用程序包中的动态库文件目录中。此外,针对各应用端类型对应的更新应用程序包进行重签名处理,以便能将目标应用程序包进行发布。
此外,还可以通过环境变量进行动态库文件的注入。
请参照图4,本申请实施例提供的一种多端应用开发方法,应用于本地侧,可以包括如下步骤:
S310:在本地侧的终端上展示多端应用开发界面,多端应用开发界面展示有应用的工程文件。
如图5所示,多端应用开发平台的本地侧运行开发者工具,并在开发者工具中展示多端应用开发界面,其中多端应用开发界面展示有应用的工程文件,图5中的project.miniapp.json为工程文件中的源码文件,是基于小程序原生语言编写的,本申请实施例可以基于小程序的源码文件生成IPA或APK。
S320:响应于开发者基于多端应用开发界面执行的配置操作,确定基础配置信息和拓展配置信息,基础配置信息指示开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息,拓展配置信息指示开发者针对每一种应用端类型所配置的至少一个拓展功能模块。
如图5所示,开发者可以基于多端应用开发界面配置多种应用端类型中每一种应用端类型中基础功能模块的版本信息,也即是图5中的“SDK版本”。
如图6所示,开发者可以基于多端应用开发界面配置每一种应用端类型的至少一个拓展功能模块,也即扩展SDK配置,拓展功能模块可以为蓝牙相关功能Bluetooth SDK、网络功能Network SDK、支付功能OpenFuns SDK、媒体功能Media SDK等。
如图7所示,在本地侧,开发者还可以进行源码文件的编译、调试或运行,如在基于Android操作系统的模拟器上运行测试。
S330:响应于开发者基于多端应用开发界面执行的云端构建操作,将基础配置信息、拓展配置信息和工程文件发送至多端应用开发平台的服务侧,以使多端应用开发平台的服务侧基于基础配置信息和拓展配置信息,将每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;基于工程文件和每一种应用端类型对应的静态库文件,得到每一种应用端类型对应的初始应用程序包;将每一种应用端类型对应的至少一个动态库文件注入至每一种应用端类型对应的初始应用程序包,得到每一种应用端类型对应的目标应用程序包。
响应于开发者执行的云端构建操作,例如如图8所示的打包生成APK或打包生成IPA操作,将上述所需的文件和信息发送至服务侧,进行前述实施例所提供的多端应用开发处理,得到各种应用端类型对应的目标应用程序包,如IPA或APK。
上述实施例,通过本地侧的图形界面实现对基础功能模块版本信息和拓展功能模块的配置,开发者无需单独针对每个应用端类型进行开发实现,降低了开发门槛,也提高了开发效率。
综上,本申请提供的一种多端应用开发方法可以实现一次编写、多端运行的高效开发效果,也即可以基于开发者编写所得到的工程文件和配置所得到的基础配置信息和拓展配置信息生成每一种应用端类型对应的目标应用程序包,可以减少重复开发、重复发布的步骤,消除不同应用端编程语言之间的准入门槛,并大大提高多端开发的开发效率。在多端应用开发平台的服务侧,首先将基础配置信息指示的每一种应用端类型的基础功能模块编译为对应的静态库文件,将拓展配置信息指示的每一种应用端类型的至少一个拓展功能模块编译为对应的至少一个动态库文件;后将工程文件和每一种应用端类型对应的静态库文件进行编译、链接,得到每一种应用端类型对应的初始应用程序包;最终将每一种应用端类型对应的至少一个动态库文件注入对应的初始应用程序包,得到与每一种应用端类型对应的目标应用程序包括,实现了一次编写、多端运行的效果,提升了多端应用开发的效率,保证了不同应用端类型上用户体验的一致性。此外,每一种应用端类型对应的基础功能模块仅对开发者公开其版本信息而不公开具体内容,同时在服务侧直接将基础功能模块编译为静态库文件并链接至工程文件编译后的二进制可执行程序文件中,并打包为初始应用程序包,从多端应用开发平台的角度,保障了基础功能模块的安全性。多端应用开发平台还提供了功能模块的拓展配置,维护了多端应用开发的可拓展性,提升应用升级速度,也降低了开发者在进行多端应用开发的所需的各端原生知识门槛,拓展功能模块以动态库注入的方式也极大地降低了服务侧实施多端应用云构建方案的成本与难度。
本申请实施例还提供了一种多端应用开发装置900,应用于服务侧,如图9所示,所述装置可以包括:
第一获取模块910,用于获取基础配置信息和拓展配置信息;所述基础配置信息指示开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息;所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
第二获取模块920,用于获取应用的工程文件;
编译模块930,用于基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;
静态库链接模块940,用于基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;
动态库注入模块950,用于将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
可选的,所述编译模块930包括:
第一获取单元,用于基于所述基础配置信息,获取目标应用端类型对应的基础功能模块的第一描述信息;所述目标应用端类型为所述多种应用端类型中的任一种应用端类型;所述第一描述信息指示所述目标应用端类型对应的基础功能模块中的至少一个第一子功能模块以及至少一个第一子依赖模块;
第二获取单元,用于基于所述拓展配置信息,获取所述目标应用端类型对应的至少一个拓展功能模块的第二描述信息;所述第二描述信息指示所述目标应用端类型对应的至少一个拓展功能模块中的至少一个第二子功能模块以及至少一个第二子依赖模块;
第一文件打包单元,用于根据所述第一描述信息和所述第二描述信息进行文件打包,得到目标文件,所述目标文件包含第一声明信息和第二声明信息,所述第一声明信息指示所述目标应用端类型对应的至少一个拓展功能模块为所述目标应用端类型对应的基础功能模块的依赖模块;所述第二声明信息指示在编译过程中将所述目标应用端类型对应的至少一个拓展功能模块进行单独编译;
第一编译单元,用于基于所述第一声明信息和所述第二声明信息,对所述目标文件进行编译,得到所述目标应用端类型对应的目标静态库文件和所述目标应用端类型对应的至少一个目标动态库文件;
其中,所述目标静态库文件为实现所述至少一个第一子功能模块以及所述至少一个第一子依赖模块的二进制程序文件;所述目标动态库文件为实现所述至少一个第二子功能模块以及至少一个私有子依赖模块的二进制程序文件;所述至少一个私有子依赖模块为所述至少一个第二子依赖模块除至少一个公共子依赖模块之外的部分;所述至少一个公共子依赖模块为所述至少一个第一子依赖模块和所述至少一个第二子依赖模块的共有部分。
可选的,所述第一编译单元包括:
静态库编译子单元,用于基于所述第一声明信息和所述第二声明信息,对所述目标文件进行编译,得到所述目标应用端类型对应的基础功能模块的第一静态库文件,以及所述目标应用端类型对应的至少一个拓展功能模块的至少一个第二静态库文件,并将所述第一静态库文件作为所述目标静态库文件;
动态库编译子单元,用于基于所述至少一个第二静态库文件,生成所述至少一个目标动态库文件,所述至少一个目标动态库文件中包含第三声明信息,所述第三声明信息指示当所述至少一个目标动态库文件被调用时在所述目标应用程序包的命名空间中查找所述至少一个公共依赖子模块。
可选的,所述动态库编译子单元包括:
格式转换子单元,用于对所述至少一个第二静态库文件进行文件格式转换,得到为至少一个初始动态库文件;
声明信息生成子单元,用于生成所述第三声明信息;
文件生成子单元,用于根据所述至少一个初始动态库文件和所述第三声明信息,得到所述至少一个目标动态库文件。
可选的,所述静态库链接模块950包括:
第二编译单元,用于对所述工程文件中的源码文件进行编译,得到源码文件对应的可执行程序文件;
静态库链接单元,用于将所述每一种应用端类型对应的静态库文件分别链接至所述可执行程序文件,得到所述每一种应用端类型对应的初始可执行程序文件。
可选的,所述动态库注入模块960包括:
指令增加单元,用于在所述每一种应用端类型对应的初始可执行程序文件中增加动态库加载指令,得到所述每一种应用端类型对应的目标可执行程序文件;
第二文件打包单元,用于对所述每一种应用端类型对应的目标可执行程序文件和所述每一种应用端类型对应的至少一个动态库文件进行打包,得到所述每一种应用端类型对应的目标应用程序包;
其中,所述动态库装载指令用于在加载所述每一种应用端类型对应的目标可执行程序文件时将所述每一种应用端类型对应的至少一个动态库文件进行注册和初始化。
可选的,所述动态库注入模块960包括:
动态库文件目录确定单元,用于确定所述每一种应用端类型对应的初始应用程序包中的动态库文件目录;
更新单元,用于将所述每一种应用端类型对应的至少一个动态库文件放入对应的初始应用程序包中的动态库文件目录,得到所述每一种应用端类型对应的更新应用程序包;
重签名单元,用于对所述每一种应用端类型对应的更新应用程序包进行重签名,得到所述每一种应用端类型对应的目标应用程序包。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种多端应用开发装置1000,应用于本地侧,如图10所示,所述装置1000可以包括:
多端应用开发界面展示模块1010,用于在所述本地侧的终端上展示多端应用开发界面,所述多端应用开发界面展示有应用的工程文件;
配置模块1020,用于响应于开发者基于所述多端应用开发界面执行的配置操作,确定基础配置信息和拓展配置信息,所述基础配置信息指示所述开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息,所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
构建模块1030,用于响应于所述开发者基于所述多端应用开发界面执行的云端构建操作,将所述基础配置信息、所述拓展配置信息和所述工程文件发送至多端应用开发平台的服务侧,以使所述多端应用开发平台的服务侧基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
本申请实施例提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的一种多端应用开发方法。
图11示出了一种用于实现本申请实施例所提供的一种多端应用开发方法的设备的硬件结构示意图,所述设备可以参与构成或包含本申请实施例所提供的装置或系统。如图11所示,设备10可以包括一个或多个(图中采用1002a、1002b,……,1002n来示出)处理器1002(处理器1002可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1004、以及用于通信功能的传输装置1006。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备10还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
应当注意到的是上述一个或多个处理器1002和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器1004可用于存储应用软件的软件程序以及模块,如本申请实施例中所述的方法对应的程序指令/数据存储装置,处理器1002通过运行存储在存储器1004内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种多端应用开发方法。存储器1004可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1004可进一步包括相对于处理器1002远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备10的通信供应商提供的无线网络。在一个实例中,传输装置1006包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置1006可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与设备10(或移动设备)的用户界面进行交互。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于服务器之中以保存用于实现方法实施例中一种多端应用开发方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的一种多端应用开发方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施方式中提供的一种多端应用开发方法。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种多端应用开发方法,其特征在于,应用于服务侧,所述方法包括:
获取基础配置信息和拓展配置信息;所述基础配置信息指示开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息;所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
获取应用的工程文件;
基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;
基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;
将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
2.根据权利要求1所述的方法,其特征在于,所述基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件,包括:
基于所述基础配置信息,获取目标应用端类型对应的基础功能模块的第一描述信息;所述目标应用端类型为所述多种应用端类型中的任一种应用端类型;所述第一描述信息指示所述目标应用端类型对应的基础功能模块中的至少一个第一子功能模块以及至少一个第一子依赖模块;
基于所述拓展配置信息,获取所述目标应用端类型对应的至少一个拓展功能模块的第二描述信息;所述第二描述信息指示所述目标应用端类型对应的至少一个拓展功能模块中的至少一个第二子功能模块以及至少一个第二子依赖模块;
根据所述第一描述信息和所述第二描述信息进行文件打包,得到目标文件,所述目标文件包含第一声明信息和第二声明信息,所述第一声明信息指示所述目标应用端类型对应的至少一个拓展功能模块为所述目标应用端类型对应的基础功能模块的依赖模块;所述第二声明信息指示在编译过程中将所述目标应用端类型对应的至少一个拓展功能模块进行单独编译;
基于所述第一声明信息和所述第二声明信息,对所述目标文件进行编译,得到所述目标应用端类型对应的目标静态库文件和所述目标应用端类型对应的至少一个目标动态库文件;
其中,所述目标静态库文件为实现所述至少一个第一子功能模块以及所述至少一个第一子依赖模块的二进制程序文件;所述目标动态库文件为实现所述至少一个第二子功能模块以及至少一个私有子依赖模块的二进制程序文件;所述至少一个私有子依赖模块为所述至少一个第二子依赖模块除至少一个公共子依赖模块之外的部分;所述至少一个公共子依赖模块为所述至少一个第一子依赖模块和所述至少一个第二子依赖模块的共有部分。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一声明信息和所述第二声明信息,对所述目标文件进行编译,得到所述目标应用端类型对应的目标静态库文件和所述目标应用端类型对应的至少一个目标动态库文件,包括:
基于所述第一声明信息和所述第二声明信息,对所述目标文件进行编译,得到所述目标应用端类型对应的基础功能模块的第一静态库文件,以及所述目标应用端类型对应的至少一个拓展功能模块的至少一个第二静态库文件,并将所述第一静态库文件作为所述目标静态库文件;
基于所述至少一个第二静态库文件,生成所述至少一个目标动态库文件,所述至少一个目标动态库文件中包含第三声明信息,所述第三声明信息指示当所述至少一个目标动态库文件被调用时在所述目标应用程序包的命名空间中查找所述至少一个公共依赖子模块。
4.根据权利要求3所述的方法,其特征在于,所述基于所述至少一个第二静态库文件,生成所述至少一个目标动态库文件包括:
对所述至少一个第二静态库文件进行文件格式转换,得到为至少一个初始动态库文件;
生成所述第三声明信息;
根据所述至少一个初始动态库文件和所述第三声明信息,得到所述至少一个目标动态库文件。
5.根据权利要求1至4任一所述的方法,其特征在于,所述每一种应用端类型对应的初始应用程序包包括所述每一种应用端类型对应的初始可执行程序文件;所述基于所述工程文件和每一种应用端类型对应的静态库文件,得到每一种应用端类型对应的初始应用程序包,包括:
对所述工程文件中的源码文件进行编译,得到源码文件对应的可执行程序文件;
将所述每一种应用端类型对应的静态库文件分别链接至所述可执行程序文件,得到所述每一种应用端类型对应的初始可执行程序文件。
6.根据权利要求1至4任一所所述的方法,其特征在于,所述将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到每一种应用端类型对应的目标应用程序包,包括:
在所述每一种应用端类型对应的初始可执行程序文件中增加动态库加载指令,得到所述每一种应用端类型对应的目标可执行程序文件;
对所述每一种应用端类型对应的目标可执行程序文件和所述每一种应用端类型对应的至少一个动态库文件进行打包,得到所述每一种应用端类型对应的目标应用程序包;
其中,所述动态库装载指令用于在加载所述每一种应用端类型对应的目标可执行程序文件时将所述每一种应用端类型对应的至少一个动态库文件进行注册和初始化。
7.根据权利要求1至4任一所述的方法,其特征在于,所述将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包,包括:
确定所述每一种应用端类型对应的初始应用程序包中的动态库文件目录;
将所述每一种应用端类型对应的至少一个动态库文件放入对应的初始应用程序包中的动态库文件目录,得到所述每一种应用端类型对应的更新应用程序包;
对所述每一种应用端类型对应的更新应用程序包进行重签名,得到所述每一种应用端类型对应的目标应用程序包。
8.一种多端应用开发方法,其特征在于,应用于本地侧,所述方法包括:
在所述本地侧的终端上展示多端应用开发界面,所述多端应用开发界面展示有应用的工程文件;
响应于开发者基于所述多端应用开发界面执行的配置操作,确定基础配置信息和拓展配置信息,所述基础配置信息指示所述开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息,所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
响应于所述开发者基于所述多端应用开发界面执行的云端构建操作,将所述基础配置信息、所述拓展配置信息和所述工程文件发送至多端应用开发平台的服务侧,以使所述多端应用开发平台的服务侧基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
9.一种多端应用开发装置,其特征在于,应用于服务侧,所述装置包括:
第一获取模块,用于获取基础配置信息和拓展配置信息;所述基础配置信息指示开发者针对多种应用端类型中每一种应用端类型配置的基础功能模块的版本信息;所述拓展配置信息指示所述开发者针对所述每一种应用端类型所配置的至少一个拓展功能模块;
第二获取模块,用于获取应用的工程文件;
编译模块,用于基于所述基础配置信息和所述拓展配置信息,将所述每一种应用端类型对应的基础功能模块编译为对应的静态库文件,将所述每一种应用端类型对应的至少一个拓展功能模块编译为对应的至少一个动态库文件;
静态库链接模块,用于基于所述工程文件和所述每一种应用端类型对应的静态库文件,得到所述每一种应用端类型对应的初始应用程序包;
动态库注入模块,用于将所述每一种应用端类型对应的至少一个动态库文件注入至所述每一种应用端类型对应的初始应用程序包,得到所述每一种应用端类型对应的目标应用程序包。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1至8中任一项所述的一种多端应用开发方法。
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行以实现如权利要求1至8中任一项所述的一种多端应用开发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311290139.XA CN117389567A (zh) | 2023-10-08 | 2023-10-08 | 多端应用开发方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311290139.XA CN117389567A (zh) | 2023-10-08 | 2023-10-08 | 多端应用开发方法、装置、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117389567A true CN117389567A (zh) | 2024-01-12 |
Family
ID=89440131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311290139.XA Pending CN117389567A (zh) | 2023-10-08 | 2023-10-08 | 多端应用开发方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117389567A (zh) |
-
2023
- 2023-10-08 CN CN202311290139.XA patent/CN117389567A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11409949B2 (en) | Mobile device resource provisioning system and method | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN112083968A (zh) | 一种宿主中插件加载方法及装置 | |
CN111338666A (zh) | 一种实现应用程序升级的方法、装置、介质和电子设备 | |
US11275567B1 (en) | Making communication interfaces pluggable by using mechanisms comprising of exchange/broker for communication interfaces | |
CN106775916B (zh) | 减小应用安装包的方法、装置及电子设备 | |
CN110941443B (zh) | 修改sdk中文件名的方法、装置及电子设备 | |
CN110955415A (zh) | 一种投影多平台服务适配的方法 | |
CN113157274B (zh) | 基于微前端的软件开发方法、装置、电子设备及存储介质 | |
CN117389567A (zh) | 多端应用开发方法、装置、介质及设备 | |
CN109388401B (zh) | 一种服务分发方法及系统 | |
CN112306539A (zh) | 一种单片机应用层开发方法、系统、终端及介质 | |
CN112068814A (zh) | 可执行文件的生成方法、装置、系统及介质 | |
CN117056317B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN117093286B (zh) | 插件生成方法、装置、设备及计算机可读存储介质 | |
CN113467861A (zh) | 文件调用方法和装置、存储介质及电子设备 | |
CN115934123A (zh) | 一种客户端逻辑更新方法、装置、电子设备及存储介质 | |
CN115421772A (zh) | 多渠道发布的应用程序的生成方法、装置、设备及介质 | |
CN117055913A (zh) | 一种感知系统环境搭建方法、装置、设备及介质 | |
CN116627535A (zh) | 基于规则引擎的任务执行方法、计算机设备和存储介质 | |
CN117149162A (zh) | 一种sdk自动生成方法、装置、电子设备及存储介质 | |
CN116561457A (zh) | 页面加载方法、装置、终端及存储介质 | |
CN113849242A (zh) | 生成、注册ui服务包、以及加载ui服务的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |