CN116991380B - 一种应用程序的构建方法、装置、电子设备及存储介质 - Google Patents

一种应用程序的构建方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116991380B
CN116991380B CN202311222765.5A CN202311222765A CN116991380B CN 116991380 B CN116991380 B CN 116991380B CN 202311222765 A CN202311222765 A CN 202311222765A CN 116991380 B CN116991380 B CN 116991380B
Authority
CN
China
Prior art keywords
function
code
target
construction information
subset
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
CN202311222765.5A
Other languages
English (en)
Other versions
CN116991380A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311222765.5A priority Critical patent/CN116991380B/zh
Publication of CN116991380A publication Critical patent/CN116991380A/zh
Application granted granted Critical
Publication of CN116991380B publication Critical patent/CN116991380B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

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

Landscapes

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

Abstract

本申请涉及计算机技术领域,尤其涉及一种应用程序的构建方法、装置、电子设备及存储介质,用以提高应用程序的开发效率。其中,方法包括:响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对功能源代码进行解析,获得目标功能的功能构建信息;对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息;当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中,功能组件包与目标功能代码子集之间配置有依赖关系;基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序。

Description

一种应用程序的构建方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用程序的构建方法、装置、电子设备及存储介质。
背景技术
随着移动终端的普及和移动互联网的不断发展,应用程序充斥着当代人们的生活,社交、娱乐、购物、导航以及企业应用越来越多的领域需要应用程序,人们对应用程序的需求也越来越多变。由于使用对象的需求日益增多,为了满足使用对象的需求,需要进一步升级应用程序,以使应用程序实现目标业务功能。
现有技术,在对应用程序添加目标业务功能时,通常是第三方开发目标业务功能对应的开发工具包(Software Development Kit,SDK),在开发SDK时,编写一个测试工程调试SDK的功能,SDK开发完成后,再在应用程序中配置SDK的依赖环境,调用SDK提供的接口,获得实现目标业务功能的应用程序。
例如,在即时通讯类的应用程序中添加定位功能,调用地图SDK提供的接口,实现定位功能。
然而,若需要更改应用程序中的目标业务功能,则需要先通过第三方修改原版本SDK的代码,编写一个新的测试工程调试修改后的SDK的功能,调试完成后,生成新版本SDK,再在旧版本应用程序中,配置新版本SDK的依赖环境,然后调用新版本SDK提供的新接口,加载新版本SDK,获得新版本应用程序,实现更改后的目标业务功能。
这样,每次需要更改目标业务功能时,都需要重复上述复杂繁琐的步骤,需要消耗大量的时间,导致开发效率低。
因此,如何提高应用程序的开发效率,是目前需要解决的技术问题。
发明内容
本申请实施例提供一种应用程序的构建方法、装置、电子设备及存储介质,以提高应用程序的开发效率。
本申请实施例提供的具体技术方案如下:
第一方面,本申请实施例提供了一种应用程序的构建方法,该方法包括:
响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对功能源代码进行解析,获得目标功能的功能构建信息,功能构建信息表征:目标功能的功能技术栈;
对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息;其中,第一代码子集包含:原始应用程序的各业务功能的通用基础代码;每个第二代码子集包含:一种业务功能的专属代码;参考构建信息表征:原始应用程序的程序技术栈;
当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中,功能组件包与目标功能代码子集之间配置有依赖关系;
基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序。
第二方面,本申请实施例还提供了一种应用程序的构建装置,该装置包括:
获取模块,用于响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对功能源代码进行解析,获得目标功能的功能构建信息,功能构建信息表征:目标功能的功能技术栈;
第一处理模块,用于对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息;其中,第一代码子集包含:原始应用程序的各业务功能的通用基础代码;每个第二代码子集包含:一种业务功能的专属代码;参考构建信息表征:原始应用程序的程序技术栈;
第二处理模块,用于当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中,功能组件包与目标功能代码子集之间配置有依赖关系;
构建模块,用于基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序。
在一种可能的实现方式,对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息时,第一处理模块还用于:
解析原始源代码,获得参考构建信息和原始源代码中包含的各子代码各自的代码功能特征;
基于获得的各代码功能特征,将原始源代码拆分成第一代码子集和第二代码子集。
在一种可能的实现方式,当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中时,第二处理模块还用于:
对比功能构建信息和参考构建信息,获得功能构建信息和参考构建信息之间的对比结果;
当对比结果表征功能构建信息与参考构建信息之间存在差异时,建立目标功能代码子集;
对功能源代码进行编译,获得功能源代码对应的功能组件包,并将功能组件包发布至依赖库,以及在依赖库中,配置功能组件包与目标功能代码子集之间的依赖关系;
从依赖库中调用功能组件包,将功能组件包加载到目标功能代码子集中。
在一种可能的实现方式,第二处理模块还用于:
当功能构建信息与参考构建信息之间不存在差异时,建立目标功能代码子集;
将功能源代码直接引入目标功能代码子集。
在一种可能的实现方式,基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序时,构建模块还用于:
对目标功能代码子集进行编译,生成相应的目标功能程序包;
对第一代码子集进行编译,生成相应的功能基础程序包;
分别对第二代码子集进行编译,生成相应的功能专属程序包;
合并安装目标功能程序包、功能基础程序包和各功能专属程序包,获得目标应用程序。
在一种可能的实现方式,基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序之后,装置还包括更新模块,更新模块用于:
响应于针对目标功能的功能更新请求,获取目标功能的更新源代码,并对更新源代码进行解析,获得目标功能的更新构建信息,更新构建信息表征:目标功能的更新技术栈;
当更新构建信息与参考构建信息之间存在差异时,建立更新源代码对应的更新组件包,并将目标功能代码子集中的功能组件包替换为更新组件包,更新组件包与目标功能代码子集之间配置有依赖关系;
基于更新后的目标功能代码子集、第一代码子集和第二代码子集,构建更新应用程序。
第三方面,本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一种应用程序的构建方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种应用程序的构建方法的步骤。
第五方面,本申请实施例还提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行上述任意一种应用程序的构建方法的步骤。
本申请有益效果如下:
本申请实施例中,服务器响应于针对原始应用程序触发的功能添加请求,对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息,当目标功能的功能构建信息与参考构建信息之间存在差异时,建立目标功能的功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中,最后基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序。
这样,将原始应用程序拆分成第一代码子集和第二代码子集,并生成目标功能对应的目标功能代码子集,解耦业务功能,将各业务功能独立打包,安装运行时合并特性,隔离了编译环境,添加目标功能只需要建立目标功能代码子集,不需要修改原始源代码,避免了繁琐的开发流程,提高了开发效率。并且,当功能构建信息与参考构建信息之间存在差异时,通过建立功能源代码对应的功能组件包,解决功能构建信息与参考构建信息的差异问题,实现了异构工程的融合,避免了对功能构建信息进行改造,进一步提高了开发效率。
附图说明
图1为本申请实施例中的应用场景示意图;
图2为本申请实施例中提供的一种应用程序的构建方法的第一实施流程图;
图3为本申请实施例中触发的功能添加请求的示意图;
图4为本申请实施例中解析原始源代码的流程示意图;
图5为本申请实施例中第一代码子集和第二代码子集的示意图;
图6为本申请实施例中获得目标功能代码子集的第一流程示意图;
图7为本申请实施例中目标功能代码子集的第一示意图;
图8为本申请实施例中获得目标功能代码子集的第二流程示意图;
图9为本申请实施例中目标功能代码子集的第二示意图;
图10为本申请实施例中获得构建目标应用程序的流程示意图;
图11为本申请实施例中构建目标应用程序的示意图;
图12为本申请实施例中更新目标功能的流程示意图;
图13为本申请实施例中更新目标功能代码子集的示意图;
图14为本申请实施例中构建更新应用程序的示意图;
图15为本申请实施例中一种应用程序的构建方法的第二流程示意图;
图16为本申请实施例中提供的一种应用程序的构建装置;
图17为本申请实施例中一种计算机设备的一个硬件组成结构示意图;
图18为本申请实施例中另一种计算机设备的一个硬件组成结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解本申请实施例提供的技术方案,这里先对本申请实施例使用的一些关键名词进行解释:
应用程序捆绑包文件(Android APP Bundle,AAB):是一种发布格式。它包含应用程序支持的所有设备的代码和资源,例如可执行文件、本地代码库、清单文件、各种资源文件等。可将应用的代码和资源整理到模块中。
安卓档案(Android Archive,AAR)包:是一个安卓库项目的二进制归档文件,文件扩展名是.aar,既可以打包代码,又可以打包资源文件。
项目管理工具软件(Maven)仓库:是项目中依赖的第三方库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件,Maven 仓库能帮助我们管理构件。
安卓应用程序包(Android application package,APK):是安卓操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个安卓应用程序的代码想要在安卓设备上运行,必须先进行编译,然后被打包成为一个被安卓系统所能识别的文件才可以被运行,而这种能被安卓系统识别并运行的文件格式便是“APK”。
下面对本申请实施例的设计思想进行简要介绍:
目前,随着移动终端的普及和移动互联网的不断发展,应用程序充斥着当代人们的生活,社交、娱乐、购物、导航以及企业应用越来越多的领域需要应用程序,人们对应用程序的需求也越来越多变。由于使用对象的需求日益增多,为了满足使用对象的需求,需要进一步升级应用程序,以使应用程序实现目标业务功能。
现有技术,在对应用程序添加目标业务功能时,通常是第三方开发目标业务功能对应的SDK,在开发SDK时,编写一个测试工程调试SDK的功能,SDK开发完成后,再在应用程序中配置SDK的依赖环境,调用SDK提供的接口,获得实现目标业务功能的应用程序。
例如,在即时通讯类的应用程序中添加定位功能,调用地图SDK提供的接口,实现定位功能。
然而,若需要更改应用程序中的目标业务功能,则需要先通过第三方修改原版本SDK的代码,编写一个新的测试工程调试修改后的SDK的功能,调试完成后,生成新版本SDK,再在旧版本应用程序中,配置新版本SDK的依赖环境,然后调用新版本SDK提供的新接口,加载新版本SDK,获得新版本应用程序,实现更改后的目标业务功能。
这样,每次需要更改目标业务功能时,都需要重复上述复杂繁琐的步骤,需要消耗大量的时间,导致开发效率低。
另外,对于需要进行深度业务融合和定制化开发的目标业务功能,需要使用应用程序的数据对目标业务功能进行调试,难以编写一个测试工程模拟联调环境,来调试SDK的功能,导致开发效率低,并且可能使构建的应用程序,无法实现目标业务功能。
有鉴于此,本申请实施例中,提供一种应用程序的构建方法及相关装置,响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对功能源代码进行解析,获得目标功能的功能构建信息,功能构建信息表征:目标功能的功能技术栈;再对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息;其中,第一代码子集包含:原始应用程序的各业务功能的通用基础代码;每个第二代码子集包含:一种业务功能的专属代码;参考构建信息表征:原始应用程序的程序技术栈;然后当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中,功能组件包与目标功能代码子集之间配置有依赖关系;从而基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序。
这样,将原始应用程序拆分成第一代码子集和第二代码子集,并生成目标功能对应的目标功能代码子集,解耦业务功能,将各业务功能独立打包,安装运行时合并特性,隔离了编译环境,实现了开发、联调环境的统一,当目标功能需要更改时,直接修改目标功能代码子集,不需要考虑原始源代码,基于修改后的目标功能代码子集、第一代码子集和第二代码子集,构建新版本的应用程序,提高了开发效率。并且,当功能构建信息与参考构建信息之间存在差异时,通过建立功能源代码对应的功能组件包,克服功能构建信息与参考构建信息的差异问题,实现了异构工程的融合,避免了对功能构建信息进行改造,进一步提高了开发效率。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请实施例及实施例中的特征可以相互组合。
参阅图1所示,为本申请实施例中可能的应用场景示意图。该应用场景图中,包括服务器110,以及终端设备120(包括终端设备1201、终端设备1202…终端设备120n)。
服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备120与服务器110可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
终端设备120包括但不限于手机、平板电脑、笔记本电脑、台式电脑、电子书阅读器、智能语音交互设备、智能家电、车载终端等设备;终端设备上可以安装各种软件,比如应用程序和小程序等。
需要说明的是,图1所示只是举例说明,实际上终端设备120和服务器110的数量不受限制,在本申请实施例中不做具体限定。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的应用程序的构建方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
参阅图2所示,为本申请实施例提供的一种应用程序的构建方法的第一实施流程图,这里是以服务器为执行主体为例进行介绍的,该方法的具体实施流程如下:
步骤20:响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对功能源代码进行解析,获得目标功能的功能构建信息。
其中,功能构建信息表征:目标功能的功能技术栈。
本申请实施例中,当接收到针对原始应用程序的功能添加指令时,触发功能添加请求,获取待添加的目标功能的功能源代码,然后对获得的功能源代码进行解析,获得目标功能的功能构建信息。
其中,目标功能可以为会议功能、邮件功能和文档功能等业务功能,原始应用程序可以为即时通讯类的平台型应用程序,目标功能的功能技术栈至少包括:技术架构、跨平台模式、数据协议、构建工具、持续集成工具、分布式版本控制系统(Git)仓库等,本申请实施例中对此并不进行限制。
例如,参阅图3所示,为本申请实施例中触发的功能添加请求的示意图,假设开发对象需要对原始应用程序添加的目标功能为会议功能,向服务器发送针对原始应用程序的功能添加请求,服务器响应于功能添加请求,获取会议功能的功能源代码,解析会议功能的功能源代码,获得会议功能的功能构建信息包括:技术架构为软件设计模式(Model-View-ViewModel,MVVM),跨平台模式为用户交互、业务逻辑和数据,数据协议为可扩展通讯和表示协议(Extensible Messaging and Presence Protocol,XMPP),构建工具为运行于服务端的计算机编程语言(JavaScript)解释器,持续集成工具为一站式软件研发管理平台(Coding),Git仓库为单仓库。
另外,值得说明的是,目标功能的功能源代码可以是目标功能对应的已生成应用程序的源代码,也可以是针对目标功能开发的源代码,本申请实施例对此并不进行限制。
例如,假设目标功能为会议功能,目标功能对应的已生成应用程序为会议类应用程序A,目标功能的功能源代码可以是会议类应用程序A的源代码。
步骤21:对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息。
其中,第一代码子集包含:原始应用程序的各业务功能的通用基础代码;第二代码子集包含:各业务功能各自的专属代码;参考构建信息表征:原始应用程序的程序技术栈。
具体的,在执行步骤21,服务器具体执行以下操作。参阅图4所示,其为本申请实施例中解析原始源代码的流程示意图,下面结合附图4,对具体执行的操作进行详细说明:
步骤210:解析原始源代码,获得参考构建信息和原始源代码中包含的各子代码各自的代码功能特征。
其中,代码功能特征表征相应子代码所属的功能类型。
本申请实施例中,获得原始源代码之后,对原始源代码进行解析,获得参考构建信息和原始源代码中包含的各子代码各自的代码功能特征。
例如,假设原始应用程序为即时通讯类的平台型应用程序,对原始源代码进行解析,获得参考构建信息包括:技术架构为MVVM,跨平台模式为业务逻辑和数据,数据协议为独立的数据交换格式(Protocol Buffer,ProtoBuf),构建工具为项目自动化构建开源工具(Gradle),持续集成工具为蓝盾,Git仓库为多仓库。
步骤211:基于获得的各代码功能特征,将原始源代码拆分成第一代码子集和第二代码子集。
本申请实施例中,根据各子代码各自的代码功能特征,对原始源代码进行拆分,获得包含各业务功能的通用基础代码的第一代码子集,以及包含各业务功能各自的专属代码的第二代码子集。
例如,参阅图5所示,为本申请实施例中第一代码子集和第二代码子集的示意图,假设原始应用程序的各业务功能包括:定位功能、分享功能、消息功能,则将原始源代码拆分成包含三个业务功能的通用基础代码的第一代码子集,包含定位功能的专属代码,包含分享功能的专属代码,以及包含消息功能的专属代码的第二代码子集。
具体的,可以对原始源代码进行AAB编译,获得AAB文件,然后采用资源混淆工具,对AAB文件进行资源混淆,获得第一代码子集和第二代码子集。
这样,将原始应用程序拆分成第一代码子集和第二代码子集,解耦业务功能,将各业务功能独立打包,便于引入目标功能,隔离了编译环境,提高了开发效率。
步骤22:当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中。
其中,组件包与目标功能代码子集之间配置有依赖关系。
具体的,在执行步骤22,服务器具体执行以下操作。参阅图6所示,其为本申请实施例中获得目标功能代码子集的第一流程示意图,下面结合附图6,对具体执行的操作进行详细说明:
步骤220:对比功能构建信息和参考构建信息,获得功能构建信息和参考构建信息之间的对比结果。
其中,功能构建信息下的各子功能构建信息至少包括:功能技术架构信息、功能跨平台模式信息、功能数据协议信息、功能构建工具信息、功能持续集成工具信息、功能Git仓库信息,参考构建信息下的各子参考构建信息至少包括:参考技术架构信息、参考跨平台模式信息、参考协议信息、参考构建工具信息、参考持续集成工具信息、参考Git仓库信息。
本申请实施例中,对比功能构建信息下的各子功能构建信息和参考构建信息下的各子参考构建信息,若存在一个子功能构建信息与各子参考构建信息不同时,确定功能构建信息与参考构建信息之间存在差异,若各子功能构建信息与各子参考构建信息相同时,确定功能构建信息与参考构建信息之间不存在差异。
例如,假设目标功能A的功能构建信息下的各子功能构建信息包括:技术架构为MVVM,跨平台模式为用户交互、业务逻辑和数据,数据协议为XMPP,构建工具为运行于服务端的JavaScript解释器,持续集成工具为Coding,Git仓库为单仓库,原始应用程序的程序构建信息下的各子程序构建信息包括:技术架构为MVVM,跨平台模式为业务逻辑和数据,数据协议为ProtoBuf,构建工具为Gradle,持续集成工具为蓝盾,Git仓库为多仓库,则存在一个子功能构建信息与各子参考构建信息不同,确定目标功能A的功能构建信息与参考构建信息之间存在差异。
又例如,假设目标功能B的功能构建信息下的各子功能构建信息包括:技术架构为MVVM,跨平台模式为业务逻辑和数据,数据协议为ProtoBuf,构建工具为Gradle,持续集成工具为蓝盾,Git仓库为多仓库,原始应用程序的程序构建信息下的各子程序构建信息包括:技术架构为MVVM,跨平台模式为业务逻辑和数据,数据协议为ProtoBuf,构建工具为Gradle,持续集成工具为蓝盾,Git仓库为多仓库,则各子功能构建信息与各子参考构建信息相同时,确定标功能B的功能构建信息与参考构建信息之间不存在差异。
步骤221:当对比结果表征功能构建信息与参考构建信息之间存在差异时,建立目标功能代码子集。
步骤222:对功能源代码进行编译,获得功能源代码对应的功能组件包,并将功能组件包发布至依赖库,以及在依赖库中,配置功能组件包与目标功能代码子集之间的依赖关系。
本申请实施例中,获得对比结果之后,当对比结果表征功能构建信息与参考构建信息之间存在差异时,建立目标功能代码子集,然后编译功能源代码,获得功能源代码对应的功能组件包,并将功能组件包发布至依赖库,以及在依赖库中,配置功能组件包与目标功能代码子集之间的依赖关系,以使目标功能代码子集能够调用功能组件包。
例如,参阅图7所示,为本申请实施例中目标功能代码子集的第一示意图,假设功能源代码包括接口层代码、平台层代码、跨平台层代码和基础库代码,编译功能源代码,获得功能源代码对应的AAR包,作为功能源代码对应的功能组件包,将AAR包发布至本地的Maven仓库进行存储,以及在本地的Maven仓库中,配置AAR包目标功能代码子集之间的依赖关系。
步骤223:从依赖库中调用功能组件包,将功能组件包加载到目标功能代码子集中。
本申请实施例中,功能组件包发布至依赖库之后,从依赖库中调用功能组件包,将功能组件包注入到目标功能代码子集中。
例如,如图7所示,从在本地的Maven仓库中调用功能源代码对应的AAR包,将该AAR包引入到目标功能代码子集中。
这样,当功能构建信息与参考构建信息之间存在差异时,通过建立功能源代码对应的功能组件包和依赖库,解决了功能构建信息与参考构建信息的差异问题,实现了异构工程的融合,避免了对功能构建信息进行改造的复杂操作,提高了开发效率。
进一步地,当对比结果表征功能构建信息与参考构建信息之间不存在差异时,服务器具体执行以下操作。参阅图8所示,其为本申请实施例中获得目标功能代码子集的第二流程示意图,下面结合附图8,对具体执行的操作进行详细说明:
步骤80:当功能构建信息与参考构建信息之间不存在差异时,建立目标功能代码子集。
步骤81:将功能源代码直接引入目标功能代码子集。
本申请实施例中,获得对比结果之后,当对比结果表征功能构建信息与参考构建信息之间存在差异时,建立目标功能代码子集,然后将功能源代码直接引入目标功能代码子集。
例如,参阅图9所示,为本申请实施例中目标功能代码子集的第二示意图,获取功能源代码,将获得的功能源代码注入到目标功能代码子集中。
步骤23:基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序。
具体的,在执行步骤23,服务器具体执行以下操作。参阅图10所示,其为本申请实施例中获得构建目标应用程序的流程示意图,下面结合附图10对具体执行的操作进行详细说明:
步骤230:对目标功能代码子集进行编译,生成相应的目标功能程序包。
本申请实施例中,获得目标功能代码子集之后,对目标功能代码子集进行编译,生成目标功能代码子集对应的目标功能程序包。
例如,参阅图11所示,为本申请实施例中构建目标应用程序的示意图,假设目标功能为会议功能,本地编译目标功能代码子集,获得会议功能APK。
步骤231:对第一代码子集进行编译,生成相应的功能基础程序包。
本申请实施例中,对第一代码子集进行编译,生成第一代码子集对应的功能基础程序包。
例如,如图11所示,流水线编译第一代码子集,获得通用基础APK。
步骤232:分别对第二代码子集中的各专属代码子集进行编译,生成相应的功能专属程序包。
其中,每个专属代码子集包含:相应业务功能的专属代码。
本申请实施例中,针对第二代码子集中的各专属代码子集,分别执行以下操作:对一个专属代码子集进行编译,生成该专属代码子集对应的功能专属程序包。
例如,如图11所示,假设第二代码子集包括:定位功能对应的专属代码子集A、分享功能对应的专属代码子集B、消息功能对应的专属代码子集C,则流水线编译第二代码子集,获得专属代码子集A对应的定位功能专属APK,专属代码子集B对应的分享功能专属APK,专属代码子集C对应的消息功能专属APK。
步骤233:合并安装目标功能程序包、功能基础程序包和各功能专属程序包,获得目标应用程序。
本申请实施例中,在相应的终端设备上,合并安装目标功能程序包、功能基础程序包和各功能专属程序包,集成获得目标应用程序。
例如,如图11所示,将会议功能APK、通用基础APK、定位功能专属APK,分享功能专属APK、消息功能专属APK,合并安装至终端设备上,获得目标应用程序,使目标应用程序能够实现会议功能。
另外,可以建立虚拟功能基础程序包,再将虚拟功能基础程序包替换为功能基础程序包,合并安装目标功能程序包、虚拟功能基础程序包,获得子目标应用程序,其中,虚拟功能基础程序包为空,且与功能基础程序包的文件名一致,子目标应用程序实现的业务功能只有目标功能。
具体的,合并安装目标功能程序包、功能基础程序包和各功能专属程序包时,可以采用以下方式中的任意一种:
方式一:同步安装目标功能程序包、功能基础程序包和各功能专属程序包,获得目标应用程序。
本申请实施例中,采用同步安装指令,同步安装目标功能程序包、功能基础程序包和各功能专属程序包,获得目标应用程序。
例如,采用指令“adb install -multiple”,同步安装目标功能程序包、功能基础程序包和各功能专属程序包,获得目标应用程序。
方式二:按照预设的安装顺序,对目标功能程序包、功能基础程序包和各功能专属程序包进行依次安装,获得目标应用程序。
本申请实施例中,采用单个安装指令,按照预设的安装顺序,对目标功能程序包、功能基础程序包和各功能专属程序包进行依次安装,获得目标应用程序。
其中,预设的安装顺序可以为先安装功能基础程序包,再安装各功能专属程序包,最后安装目标功能程序包,本申请实施例中对安装顺序并不进行限制。
例如,假设安装顺序为先安装功能基础程序包,再安装各功能专属程序包,最后安装目标功能程序包,采用单个安装指令安装功能基础程序包,再采用单个安装指令安装各功能专属程序包,最后采用单个安装指令安装目标功能程序包,集成目标应用程序。
进一步地,在获得目标应用程序之后,可以对目标应用程序中的目标功能进行更新,获得更新应用程序,参阅图12所示,其为本申请实施例中更新目标功能的流程示意图,下面结合附图12对具体执行的操作进行详细说明:
步骤1201:响应于针对目标功能的功能更新请求,获取目标功能的更新源代码,并对更新源代码进行解析,获得目标功能的更新构建信息。
其中,更新构建信息表征:目标功能的更新技术栈。
本申请实施例中,触发针对目标功能的功能更新请求,服务器响应于针对目标功能的功能更新请求,获取目标功能的更新源代码,并对更新源代码进行解析,获得目标功能的更新构建信息。
具体的,触发针对目标功能的功能更新请求,包括但不限于以下任意一种方式:
方式一:接收到针对目标功能的功能更新指令,触发针对目标功能的功能更新请求。
其中,功能更新指令可以是开发对象通过点击终端设备发送的,本申请实施例对此并不进行限制。
方式二:当当前时刻满足预设的周期条件,且检测到目标功能的功能源代码有更新时,触发针对目标功能的功能更新请求。
其中,周期条件为预设的更新间隔时间段。
本申请实施例中,判断当前时刻是否满足预设的周期条件,若当前时刻满足预设的周期条件,则检测目标功能的功能源代码是否更新,若更新,则触发针对目标功能的功能更新请求。
例如,假设检测间隔时间段为1个月,起始时间为2027.6.1,当前时刻为2027.7.1,则当前时刻满足预设的周期条件,检测目标功能的功能源代码是否更新,若更新,则触发针对目标功能的功能更新请求。
步骤1202:当更新构建信息与参考构建信息之间存在差异时,建立更新源代码对应的更新组件包,并将目标功能代码子集中的功能组件包替换为更新组件包。
其中,更新组件包与目标功能代码子集之间配置有依赖关系。
具体的,在执行步骤1202,服务器具体执行以下操作:
步骤1202-1:对比更新构建信息和参考构建信息,获得更新构建信息和参考构建信息之间的对比结果。
其中,更新构建信息下的各子更新构建信息至少包括:更新技术架构信息、更新跨平台模式信息、更新数据协议信息、更新构建工具信息、更新持续集成工具信息、更新Git仓库信息。
本申请实施例中,对比更新构建信息下的各子更新构建信息和参考构建信息下的各子参考构建信息,若存在一个子更新构建信息与各子参考构建信息不同时,确定更新构建信息与参考构建信息之间存在差异,若各子更新构建信息与各子参考构建信息相同时,确定更新构建信息与参考构建信息之间不存在差异。
步骤1202-2:当对比结果表征更新构建信息与参考构建信息之间存在差异时,对更新源代码进行编译,获得更新源代码对应的更新组件包,并将更新组件包发布至依赖库,以及在依赖库中,配置更新组件包与目标功能代码子集之间的依赖关系。
本申请实施例中,获得对比结果之后,当对比结果表征更新构建信息与参考构建信息之间存在差异时,编译更新源代码,获得更新源代码对应的更新组件包,并将更新组件包发布至依赖库,以及在依赖库中,配置更新组件包与目标更新代码子集之间的依赖关系,以使目标功能代码子集能够调用更新组件包。
例如,参阅图13所示,为本申请实施例中更新目标功能代码子集的示意图,编译更新源代码,获得更新源代码对应的AAR包,作为更新源代码对应的更新组件包,将该AAR包发布至本地的Maven仓库进行存储,以及在本地的Maven仓库中,配置该AAR包与目标功能代码子集之间的依赖关系。
步骤1202-3:从依赖库中调用更新组件包,将更新组件包加载到目标功能代码子集中,并替换功能组件包,获得更新后的目标功能代码子集。
例如,如图13所示,从在本地的Maven仓库中调用更新源代码对应的AAR包,将该AAR包引入到目标功能代码子集中,并替换目标功能代码子集中的功能源代码对应的AAR包,获得更新后的目标功能代码子集。
步骤1203:基于更新后的目标功能代码子集、第一代码子集和第二代码子集,构建更新应用程序。
具体的,在执行步骤1203时,服务器具体执行以下操作:
步骤1203-1:对更新后的目标功能代码子集进行编译,生成更新后的目标功能代码子集对应的更新功能程序包。
本申请实施例中,获得更新后的目标功能代码子集之后,对更新后的目标功能代码子集进行编译,生成更新后的目标功能代码子集对应的更新功能程序包。
例如,参阅图14所示,为本申请实施例中构建更新应用程序的示意图,假设目标功能为会议功能,本地编译更新后的目标功能代码子集,获得更新会议功能APK。
步骤1203-2:合并安装目标更新程序包、第一代码子集对应的功能基础程序包和第二代码子集各自对应的功能专属程序包,获得更新应用程序。
本申请实施例中,在相应的终端设备上,合并安装目标更新程序包、功能基础程序包和各功能专属程序包,集成获得目标应用程序。
例如,如图14所示,假设目标更新程序包为更新会议功能APK,第一代码子集对应的功能基础程序包为通用基础APK,第二代码子集各自对应的功能专属程序分别为定位功能专属APK、分享功能专属APK和消息功能专属APK,则将更新会议功能APK、通用基础APK、定位功能专属APK、分享功能专属APK,消息功能专属APK,合并安装至终端设备上,获得更新应用程序,使更新应用程序能够实现更新后的会议功能。
这样,当目标功能需要更新时,直接基于目标功能的更新源代码,更新目标功能代码子集,不需要考虑原始源代码,基于更新后目标功能代码子集、第一代码子集和第二代码子集,构建更新应用程序,提高了开发效率。
基于上述实施例,参阅图15所示,为本申请实施例中一种应用程序的构建方法的第二流程示意图,具体包括:
步骤1501:响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对功能源代码进行解析,获得目标功能的功能构建信息。
步骤1502:对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息。
步骤1503:对比功能构建信息和参考构建信息,获得功能构建信息和参考构建信息之间的对比结果。
步骤1504:判断对比结果是否表征功能构建信息与参考构建信息之间存在差异,若是,则执行步骤1505,否则,则执行步骤1507。
步骤1505:建立目标功能代码子集,并对功能源代码进行编译,获得功能源代码对应的功能组件包,以及将功能组件包发布至依赖库,在依赖库中,配置功能组件包与目标功能代码子集之间的依赖关系。
步骤1506:从依赖库中调用功能组件包,将功能组件包加载到目标功能代码子集中。
步骤1507:建立目标功能代码子集,并将功能源代码直接引入目标功能代码子集。
步骤1508:对目标功能代码子集进行编译,生成相应的目标功能程序包,并对第一代码子集进行编译,生成相应的功能基础程序包,以及分别对第二代码子集进行编译,生成相应的功能专属程序包。
步骤1509:合并安装目标功能程序包、功能基础程序包和各功能专属程序包,获得目标应用程序。
与上述方法实施例基于同一发明构思,本申请实施例还提供了一种应用程序的构建装置,参阅图16所示,为本申请实施例提供的一种应用程序的构建装置的结构示意图,该装置1600包括:
获取模块1601,用于响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对功能源代码进行解析,获得目标功能的功能构建信息,功能构建信息表征:目标功能的功能技术栈;
第一处理模块1602,用于对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息;其中,第一代码子集包含:原始应用程序的各业务功能的通用基础代码;每个第二代码子集包含:一种业务功能的专属代码;参考构建信息表征:原始应用程序的程序技术栈;
第二处理模块1603,用于当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中,功能组件包与目标功能代码子集之间配置有依赖关系;
构建模块1604,用于基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序。
在一种可能的实现方式,对原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息时,第一处理模块1602还用于:
解析原始源代码,获得参考构建信息和原始源代码中包含的各子代码各自的代码功能特征;
基于获得的各代码功能特征,将原始源代码拆分成第一代码子集和第二代码子集。
在一种可能的实现方式,当功能构建信息与参考构建信息之间存在差异时,建立功能源代码对应的功能组件包,并将功能组件包引入预分配的目标功能代码子集中时,第二处理模块1603还用于:
对比功能构建信息和参考构建信息,获得功能构建信息和参考构建信息之间的对比结果;
当对比结果表征功能构建信息与参考构建信息之间存在差异时,建立目标功能代码子集;
对功能源代码进行编译,获得功能源代码对应的功能组件包,并将功能组件包发布至依赖库,以及在依赖库中,配置功能组件包与目标功能代码子集之间的依赖关系;
从依赖库中调用功能组件包,将功能组件包加载到目标功能代码子集中。
在一种可能的实现方式,第二处理模块1603还用于:
当功能构建信息与参考构建信息之间不存在差异时,建立目标功能代码子集;
将功能源代码直接引入目标功能代码子集。
在一种可能的实现方式,基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序时,构建模块1604还用于:
对目标功能代码子集进行编译,生成相应的目标功能程序包;
对第一代码子集进行编译,生成相应的功能基础程序包;
分别对第二代码子集进行编译,生成相应的功能专属程序包;
合并安装目标功能程序包、功能基础程序包和各功能专属程序包,获得目标应用程序。
在一种可能的实现方式,基于目标功能代码子集、第一代码子集和第二代码子集,构建目标应用程序之后,装置还包括更新模块1605,更新模块1605用于:
响应于针对目标功能的功能更新请求,获取目标功能的更新源代码,并对更新源代码进行解析,获得目标功能的更新构建信息,更新构建信息表征:目标功能的更新技术栈;
当更新构建信息与参考构建信息之间存在差异时,建立更新源代码对应的更新组件包,并将目标功能代码子集中的功能组件包替换为更新组件包,更新组件包与目标功能代码子集之间配置有依赖关系;
基于更新后的目标功能代码子集、第一代码子集和第二代码子集,构建更新应用程序。
与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种计算设备。在一种实施例中,该计算设备可以是服务器,如图1所示的服务器110。在该实施例中,计算机设备1700的结构如图17所示,可以至少包括存储器1701、通讯模块1703,以及至少一个处理器1702。
存储器1701,用于存储处理器1702执行的计算机程序。存储器1701可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1701可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1701也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1701是能够用于携带或存储具有指令或数据结构形式的期望的计算机程序并能够由计算机存取的任何其他介质,但不限于此。存储器1701可以是上述存储器的组合。
处理器1702,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1702,用于调用存储器1701中存储的计算机程序时实现上述应用程序的构建方法。
通讯模块1703用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器1701、通讯模块1703和处理器1702之间的具体连接介质。本申请实施例在图17中以存储器1701和处理器1702之间通过总线1704连接,总线1704在图17中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1704可以分为地址总线、数据总线、控制总线等。为便于描述,图17中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。
存储器1701中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的应用程序的构建方法。处理器1702用于执行上述的应用程序的构建方法。
在另一种实施例中,计算设备也可以是其他计算设备,如图1所示的终端设备120。在该实施例中,计算设备的结构可以如图18所示,包括:通信组件1810、存储器1820、显示单元1830、摄像头1840、传感器1850、音频电路1860、蓝牙模块1870、处理器1880等部件。
通信组件1810用于与服务器进行通信。在一些实施例中,可以包括电路无线保真(Wireless Fidelity,WiFi)模块,WiFi模块属于短距离无线传输技术,电子设备通过WiFi模块可以帮助对象收发信息。
存储器1820可用于存储软件程序及数据。处理器1880通过运行存储在存储器1820的软件程序或数据,从而执行终端设备180的各种功能以及数据处理。存储器1820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器1820存储有使得终端设备120能运行的操作系统。本申请中存储器1820可以存储操作系统及各种应用程序,还可以存储执行本申请实施例应用程序的构建方法的计算机程序。
显示单元1830还可用于显示由对象输入的信息或提供给对象的信息以及终端设备120的各种菜单的图形用户界面(graphical user interface,GUI)。具体地,显示单元1830可以包括设置在终端设备120正面的显示屏1832。其中,显示屏1832可以采用液晶显示器、发光二极管等形式来配置。显示单元1830可以用于显示本申请实施例中的连续任务完成界面、输出各完成次数界面等。
显示单元1830还可用于接收输入的数字或字符信息,产生与终端设备120的对象设置以及功能控制有关的信号输入,具体地,显示单元1830可以包括设置在终端设备210正面的触控屏1831,可收集对象在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。
其中,触控屏1831可以覆盖在显示屏1832之上,也可以将触控屏1831与显示屏1832集成而实现物理终端设备210的输入和输出功能,集成后可以简称触摸显示屏。本申请中显示单元1830可以显示目标应用程序以及对应的操作步骤。
摄像头1840可用于捕获静态图像,对象可以将摄像头1840拍摄的图像通过应用发布。摄像头1840可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器1880转换成数字图像信号。
物理终端设备还可以包括至少一种传感器1850,比如加速度传感器1851、距离传感器1852、指纹传感器1853、温度传感器1854。终端设备还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。
音频电路1860、扬声器1861、传声器1862可提供对象与终端设备120之间的音频接口。音频电路1860可将接收到的音频数据转换后的电信号,传输到扬声器1861,由扬声器1861转换为声音信号输出。物理终端设备120还可配置音量按钮,用于调节声音信号的音量。另一方面,传声器1862将收集的声音信号转换为电信号,由音频电路1860接收后转换为音频数据,再将音频数据输出至通信组件1810以发送给比如另一物理终端设备120,或者将音频数据输出至存储器1820以便进一步处理。
蓝牙模块1870用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,物理终端设备可以通过蓝牙模块1870与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。
处理器1880是物理终端设备的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器1820内的软件程序,以及调用存储在存储器1820内的数据,执行终端设备的各种功能和处理数据。在一些实施例中,处理器1880可包括一个或多个处理单元;处理器1880还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器1880中。本申请中处理器1880可以运行本申请实施例的应用程序的构建方法。另外,处理器1880与显示单元1830耦接。
在一些可能的实施方式中,本申请提供的应用程序的构建方法的各个方面还可以实现为一种程序产品的形式,其包括计算机程序,当程序产品在计算设备上运行时,计算机程序用于使计算设备执行本说明书上述描述的根据本申请各种示例性实施方式的应用程序的构建方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体地例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括计算机程序,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的计算机程序,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。计算机程序可以完全地在用户计算机设备上执行、部分地在用户计算机设备上执行、作为一个独立的软件包执行、部分在用户计算机设备上部分在远程计算机设备上执行、或者完全在远程计算机设备上执行。在涉及远程计算机设备的情形中,远程计算机设备可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机设备,或者,可以连接到外部计算机设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种应用程序的构建方法,其特征在于,包括:
响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对所述功能源代码进行解析,获得所述目标功能的功能构建信息,所述功能构建信息表征:所述目标功能的功能技术栈,所述功能源代码是已生成应用程序的源代码;
对所述原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息;其中,所述第一代码子集包含:所述原始应用程序的各业务功能的通用基础代码;所述第二代码子集包含:所述各业务功能各自的专属代码;所述参考构建信息表征:所述原始应用程序的程序技术栈;
对比所述功能构建信息下的各子功能构建信息和所述参考构建信息下的各子参考构建信息,获得所述功能构建信息和所述参考构建信息之间的对比结果;
当所述对比结果表征所述功能构建信息与所述参考构建信息之间存在差异时,建立目标功能代码子集;
对所述功能源代码进行编译,获得所述功能源代码对应的功能组件包,并将所述功能组件包发布至依赖库,以及在所述依赖库中,配置所述功能组件包与所述目标功能代码子集之间的依赖关系;
从所述依赖库中调用所述功能组件包,将所述功能组件包加载到所述目标功能代码子集中;
基于所述目标功能代码子集和所述第一代码子集,构建所述目标功能对应的子目标应用程序;
对所述目标功能代码子集进行编译,生成相应的目标功能程序包;
对所述第一代码子集进行编译,生成相应的功能基础程序包;
分别对所述第二代码子集中的各专属代码子集进行编译,生成相应的功能专属程序包,其中,每个所述专属代码子集包含:相应业务功能的专属代码;
合并安装所述目标功能程序包、所述功能基础程序包和各功能专属程序包,获得目标应用程序。
2.如权利要求1所述的方法,其特征在于,所述对所述原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息,包括:
解析所述原始源代码,获得所述参考构建信息和所述原始源代码中包含的各子代码各自的代码功能特征;
基于获得的各代码功能特征,将所述原始源代码拆分成所述第一代码子集和所述第二代码子集。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述功能构建信息与所述参考构建信息之间不存在差异时,建立所述目标功能代码子集;
将所述功能源代码直接引入所述目标功能代码子集。
4.如权利要求1-3任一项所述的方法,其特征在于,所述基于所述目标功能代码子集、所述第一代码子集和所述第二代码子集,构建目标应用程序之后,还包括:
响应于针对所述目标功能的功能更新请求,获取所述目标功能的更新源代码,并对所述更新源代码进行解析,获得所述目标功能的更新构建信息,所述更新构建信息表征:所述目标功能的更新技术栈;
当所述更新构建信息与所述参考构建信息之间存在差异时,建立所述更新源代码对应的更新组件包,并将所述目标功能代码子集中的所述功能组件包替换为所述更新组件包,所述更新组件包与所述目标功能代码子集之间配置有依赖关系;
基于更新后的所述目标功能代码子集、所述第一代码子集和所述第二代码子集,构建更新应用程序。
5.一种应用程序的构建装置,其特征在于,包括:
获取模块,用于响应于针对原始应用程序触发的功能添加请求,获取待添加的目标功能的功能源代码,并对所述功能源代码进行解析,获得所述目标功能的功能构建信息,所述功能构建信息表征:所述目标功能的功能技术栈,所述功能源代码是已生成应用程序的源代码;
第一处理模块,用于对所述原始应用程序的原始源代码进行解析,获得第一代码子集、第二代码子集和参考构建信息;其中,所述第一代码子集包含:所述原始应用程序的各业务功能的通用基础代码;每个所述第二代码子集包含:一种业务功能的专属代码;所述参考构建信息表征:所述原始应用程序的程序技术栈;
第二处理模块,用于对比所述功能构建信息下的各子功能构建信息和所述参考构建信息下的各子参考构建信息,获得所述功能构建信息和所述参考构建信息之间的对比结果;
当所述对比结果表征所述功能构建信息与所述参考构建信息之间存在差异时,建立目标功能代码子集;
对所述功能源代码进行编译,获得所述功能源代码对应的功能组件包,并将所述功能组件包发布至依赖库,以及在所述依赖库中,配置所述功能组件包与所述目标功能代码子集之间的依赖关系;
从所述依赖库中调用所述功能组件包,将所述功能组件包加载到所述目标功能代码子集中;
构建模块,用于基于所述目标功能代码子集和所述第一代码子集,构建所述目标功能对应的子目标应用程序;
对所述目标功能代码子集进行编译,生成相应的目标功能程序包;
对所述第一代码子集进行编译,生成相应的功能基础程序包;
分别对所述第二代码子集中的各专属代码子集进行编译,生成相应的功能专属程序包,其中,每个所述专属代码子集包含:相应业务功能的专属代码;
合并安装所述目标功能程序包、所述功能基础程序包和各功能专属程序包,获得目标应用程序。
6.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~4中任一项所述方法的步骤。
7.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在计算设备上运行时,所述程序代码用于使所述计算设备执行权利要求1~4中任一项所述方法的步骤。
8.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现权利要求1~4中任一项所述方法的步骤。
CN202311222765.5A 2023-09-21 2023-09-21 一种应用程序的构建方法、装置、电子设备及存储介质 Active CN116991380B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311222765.5A CN116991380B (zh) 2023-09-21 2023-09-21 一种应用程序的构建方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311222765.5A CN116991380B (zh) 2023-09-21 2023-09-21 一种应用程序的构建方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116991380A CN116991380A (zh) 2023-11-03
CN116991380B true CN116991380B (zh) 2024-01-09

Family

ID=88528615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311222765.5A Active CN116991380B (zh) 2023-09-21 2023-09-21 一种应用程序的构建方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116991380B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399119A (zh) * 2019-06-18 2019-11-01 五八有限公司 一种组件化构建方法、装置、电子设备及存储介质
CN110554885A (zh) * 2019-08-29 2019-12-10 五八有限公司 子应用生成方法、装置、电子设备及存储介质
CN111610982A (zh) * 2019-02-26 2020-09-01 阿里巴巴集团控股有限公司 一种应用程序开发的方法、装置和相关系统
CN112230930A (zh) * 2020-10-22 2021-01-15 贝壳技术有限公司 混合技术栈构建打包的方法和装置及机器可读存储介质
CN113900704A (zh) * 2021-10-13 2022-01-07 腾讯科技(深圳)有限公司 应用程序安装包的发布方法、装置、可读介质及电子设备
CN114064032A (zh) * 2021-11-12 2022-02-18 中国建设银行股份有限公司 源代码处理方法、装置、电子设备和存储介质
CN114217789A (zh) * 2021-12-23 2022-03-22 北京百度网讯科技有限公司 功能组件拓展方法、装置、设备、存储介质及程序产品
CN114942796A (zh) * 2022-05-05 2022-08-26 北京达佳互联信息技术有限公司 插件编译及调用方法、装置、设备及存储介质
CN115202626A (zh) * 2022-06-23 2022-10-18 苏州卓力创智科技有限公司 一种支持多技术栈组件的低代码前端开发方法
CN115454403A (zh) * 2022-09-23 2022-12-09 中国联合网络通信集团有限公司 页面搭建方法、装置及存储介质
CN115640042A (zh) * 2022-10-14 2023-01-24 五八畅生活(北京)信息技术有限公司 构建目标的构建方法和项目解耦方法、装置及电子设备
CN115658042A (zh) * 2022-10-10 2023-01-31 平安国际融资租赁有限公司 混合应用组件式开发方法、系统、设备及存储介质
CN116360741A (zh) * 2023-04-04 2023-06-30 携程旅游信息技术(上海)有限公司 小程序开发方法、系统、设备及存储介质
CN116450309A (zh) * 2023-02-14 2023-07-18 深圳市雷鸟网络传媒有限公司 系统服务提供方法、装置、存储介质及电子设备

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111610982A (zh) * 2019-02-26 2020-09-01 阿里巴巴集团控股有限公司 一种应用程序开发的方法、装置和相关系统
CN110399119A (zh) * 2019-06-18 2019-11-01 五八有限公司 一种组件化构建方法、装置、电子设备及存储介质
CN110554885A (zh) * 2019-08-29 2019-12-10 五八有限公司 子应用生成方法、装置、电子设备及存储介质
CN112230930A (zh) * 2020-10-22 2021-01-15 贝壳技术有限公司 混合技术栈构建打包的方法和装置及机器可读存储介质
CN113900704A (zh) * 2021-10-13 2022-01-07 腾讯科技(深圳)有限公司 应用程序安装包的发布方法、装置、可读介质及电子设备
CN114064032A (zh) * 2021-11-12 2022-02-18 中国建设银行股份有限公司 源代码处理方法、装置、电子设备和存储介质
CN114217789A (zh) * 2021-12-23 2022-03-22 北京百度网讯科技有限公司 功能组件拓展方法、装置、设备、存储介质及程序产品
CN114942796A (zh) * 2022-05-05 2022-08-26 北京达佳互联信息技术有限公司 插件编译及调用方法、装置、设备及存储介质
CN115202626A (zh) * 2022-06-23 2022-10-18 苏州卓力创智科技有限公司 一种支持多技术栈组件的低代码前端开发方法
CN115454403A (zh) * 2022-09-23 2022-12-09 中国联合网络通信集团有限公司 页面搭建方法、装置及存储介质
CN115658042A (zh) * 2022-10-10 2023-01-31 平安国际融资租赁有限公司 混合应用组件式开发方法、系统、设备及存储介质
CN115640042A (zh) * 2022-10-14 2023-01-24 五八畅生活(北京)信息技术有限公司 构建目标的构建方法和项目解耦方法、装置及电子设备
CN116450309A (zh) * 2023-02-14 2023-07-18 深圳市雷鸟网络传媒有限公司 系统服务提供方法、装置、存储介质及电子设备
CN116360741A (zh) * 2023-04-04 2023-06-30 携程旅游信息技术(上海)有限公司 小程序开发方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN116991380A (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
JP7481421B2 (ja) Apiレジストリにおけるバックエンドサービスエンドポイントからapi関数へのバインディング
Meier Professional Android 4 application development
US11389960B2 (en) Systems and methods for robotic process automation
US8661407B2 (en) Framework for programming embedded system applications
CN110502222B (zh) 外发依赖内部基础库的aar方法、装置、介质和设备
CN111176629B (zh) 一种应用开发的方法和装置
CN110851240B (zh) 功能调用方法、装置及存储介质
CN110851211A (zh) 用于显示应用信息的方法、装置、电子设备和介质
CN113568661A (zh) 一种基于Android sdk实现app混合开发的方法
CN116991380B (zh) 一种应用程序的构建方法、装置、电子设备及存储介质
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
CN111338961A (zh) 应用调试方法及装置、电子设备及存储介质
CN114615521B (zh) 视频处理方法和装置、计算机可读存储介质、电子设备
CN111782196A (zh) 基于mvp架构的开发方法及装置
Hu et al. An empirical study of mobile/handheld app development using android platforms
CN118151961B (zh) 运行环境的部署方法、装置、电子设备及存储介质
CN114398082B (zh) 一种框架式区块链应用的兼容运行方法及装置
CN114422637B (zh) 媒体请求处理方法和跨平台引擎系统
CN117111904B (zh) 用于将Web应用自动转换成无服务器函数的方法和系统
WO2022205013A1 (zh) 程序数据包生成方法、装置、设备及存储介质
CN118170385A (zh) 一种代码编译方法、装置、电子设备和存储介质
CN118796313A (zh) 调用目标原生功能的方法、装置和设备及计算机存储介质
CN115878282A (zh) 跨平台交互方法、装置及设备
CN118034697A (zh) 一种软件sdk集成方法、装置、电子设备和存储介质
CN118689484A (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