掌桥专利:专业的专利平台
掌桥专利
首页

Gradle插件、产物部署方法、介质和计算设备

文献发布时间:2024-04-18 19:44:28


Gradle插件、产物部署方法、介质和计算设备

技术领域

本公开的实施方式涉及计算机技术领域,更具体地,本公开的实施方式涉及一种Gradle插件、产物部署方法、介质和计算设备。

背景技术

本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

KMM(Kotlin Multiplatform Mobile,Kotlin移动端跨平台)是基于Kotlin语言进行多平台开发的一套技术框架,用户通过KMM框架可以编写能在多平台(如安卓平台和iOS平台)之间共享的逻辑代码,用来构建统一的代码逻辑,而不用针对每个平台都用对应的编程语言写功能相同的代码,减少用户的工作量。

但在KMM的官方教程中,安卓、iOS和KMM三个工程都属于一个总工程,并且安卓工程和iOS工程通过引入KMM工程中的逻辑代码进行集成。但是这种源码依赖集成的方案耦合性很强,并不适用于已经有独立的安卓工程或者iOS工程的场景。

发明内容

有鉴于此,本公开提供一种Gradle插件、产物部署方法、介质和计算设备,以解决相关技术中的不足。

为实现上述目的,本公开提供技术方案如下:

在本公开实施方式的第一方面中,提供了一种Gradle插件,所述插件应用于KMM工程中,所述KMM工程用于将用户编写的逻辑代码打包成适配不同平台的产物;所述平台包括安卓平台和iOS平台;所述插件包括:

产物构建模块,用于预先创建调用任务,所述调用任务用于调用KMM提供的产物构建方法将用户基于所述KMM工程编写的逻辑代码打包成适配于目标平台的目标产物。

可选的,还包括:

产物存储模块,用于预先创建存储任务,所述存储任务用于将所述目标产物存储至指定的本地文件夹;

和/或,

产物发布模块,用于预先创建发布任务,所述发布任务用于基于用户传入的发布配置参数将所述目标产物发布至远程仓库,以使目标平台远程获取所述目标产物。

可选的,适配于安卓平台的目标产物包括AAR文件;适配于iOS平台的目标产物包括XCFramework文件。

可选的,发布适配于安卓平台的目标产物时,用户传入的发布配置参数包括:所述KMM工程的版本号、所述KMM工程所属组织的名称、适配于安卓平台的目标产物的名称和安卓远程仓库的地址。

可选的,发布适配于iOS平台的目标产物时,用户传入的发布配置参数包括:所述KMM工程的版本号、所述KMM工程所属组织的名称、适配于iOS平台的目标产物的名称和iOS远程仓库的地址。

可选的,所述基于用户传入的发布配置参数将所述目标产物发布至远程仓库包括:

将iOS产物打包为Zip包;

基于用户传入的发布配置参数将所述Zip包发布至远程仓库。

可选的,还包括:

一键触发模块,用于预先创建一键部署任务,所述一键部署任务用于在接收到用户触发指令后将所述产物构建模块、所述产物存储模块和所述产物发布模块所预先创建的任务组装成任务链,依次执行所述产物构建模块、所述产物存储模块和所述产物发布模块的所预先创建的任务。

在本公开实施方式的第二方面中,提供了一种基于上述第一方面所述的Gradle插件的产物部署方法,所述Gradle插件应用于KMM工程中,所述KMM工程用于将用户编写的逻辑代码打包成适配不同平台的产物;所述平台包括安卓平台和iOS平台;所述方法包括:

通过所述Gradle插件调用KMM提供的产物构建方法将用户基于所述KMM工程编写的逻辑代码打包成适配于目标平台的目标产物。

可选的,还包括:

通过所述Gradle插件将所述目标产物存储至指定的本地文件夹;

和/或,

通过所述Gradle插件接收用户传入的发布配置参数,并通过所述Gradle插件将所述目标产物发布至远程仓库,以使目标平台远程获取所述目标产物。

可选的,还包括:

在接收到用户触发指令后,通过所述Gradle插件将所述产物构建模块、所述产物存储模块和所述产物发布模块所预先创建的任务组装成任务链,依次执行所述产物构建模块、所述产物存储模块和所述产物发布模块的所预先创建的任务。

在本公开实施方式的第三方面中,一种介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第二方面所述的方法。

在本公开实施方式的第四方面中,提供了一种计算设备,包括:

处理器;

用于存储处理器可执行程序的存储器;

其中,所述处理器通过运行所述可执行程序以实现如上述第二方面所述的方法。

根据本公开实施方式,Gradle插件应用于一个独立的KMM工程中,并且可以调用KMM提供的产物构建方法将用户基于KMM工程编写的逻辑代码打包成适配于目标平台(包括安卓平台和iOS平台)的目标产物,以便独立的安卓工程或者iOS工程将目标产物集成到各自的工程中。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:

图1示意性地示出了根据本公开实施方式的一种Gradle插件的示意图;

图2示意性地示出了根据本公开实施方式的一种基于Gradle插件的产物部署方法的流程图;

图3示意性地示出了根据本公开实施方式的一种介质的示意图;

图4示意性地示出了根据本公开实施方式的一种计算设备的示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本公开的实施方式,提出了一种Gradle插件、产物部署方法、介质和计算设备。

在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。

KMM(Kotlin Multiplatform Mobile,Kotlin移动端跨平台)是基于Kotlin语言进行多平台开发的一套技术框架,用户通过KMM框架可以编写能在多平台(如安卓平台和iOS平台)之间共享的逻辑代码,用来构建统一的代码逻辑,而不用针对每个平台都用对应的编程语言写功能相同的代码,减少用户的工作量。

在KMM的官方教程中,安卓、iOS和KMM三个工程都属于一个总工程,并且安卓工程和iOS工程通过引入KMM工程中的逻辑代码进行集成。但是发明人发现这种源码依赖集成的方案耦合性很强,并不适用于已经有独立的安卓工程或者iOS工程的场景,因此发明人想到可以将KMM工程作为一个独立的工程,并构建出适配于安卓平台或iOS平台的产物,以供独立的安卓工程或者iOS工程集成到各自的工程中。

发明人还发现,KMM官方提供的一系列插件各自包含了若干实现不同功能的任务,但是这些任务杂乱无章,所调用的方法不明确,也没有详细的功能说明,用户想要构建出适配于不同平台的产物,只能手动筛选出能构建对应产物的任务,步骤非常繁琐,导致开发成本的提高以及开发效率的下降。

Gradle是一种KMM工程的构建工具,Gradle插件则是该工具提供的一种扩展,用户将开发完成的Gradle插件应用到KMM工程中就可以实现特定的功能。

发明人进一步想到,可以在Gradle插件中预先创建能调用在KMM提供的方法中预先筛选出的产物构建方法的任务,使得该Gradle插件可以自动调用产物构建的方法来构建适配于目标平台的产物,无需用户手动筛选,从而减小开发成本,提高开发效率。

在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。

下面参考图1来描述根据本公开示例性实施方式的Gradle插件。

图1示意性地示出了根据本公开实施方式的一种Gradle插件。该插件应用于KMM工程中,所述KMM工程用于将用户编写的逻辑代码打包成适配不同平台的产物;所述平台包括安卓平台和iOS平台。该Gradle插件可以包括:

产物构建模块11,用于预先创建调用任务,所述调用任务用于调用KMM提供的产物构建方法将用户基于所述KMM工程编写的逻辑代码打包成适配于目标平台的目标产物。

在本实施例中,调用任务可以为预先定义好的若干调用KMM提供的产物构建方法所需的命令或方法,本公开对此不作限制。

在本实施例中,可以根据指定的不同构建模式调用对应的产物构建方法生成目标产物,例如调试(Debug)模式生成的目标产物可以包括调试信息,以便用户能够跟踪代码执行过程中的变量值、函数调用和程序流程等信息,从而快速发现和解决问题;发布(Release)模式生成的目标产物可以包括被优化后的代码,以使提高程序的性能。其中,构建模式可以在Gradle插件对应的配置文件中指定,也可以在生成目标产物前询问用户由用户指定,本公开对指定构建模式的方式不作限制。

在本实施例中,适配于目标平台的目标产物可以包括目标平台的工程引入第三方依赖所需的任意格式的文件,本公开对此不作限制。

在一实施例中,适配于安卓平台的目标产物可以包括AAR文件;适配于iOS平台的目标产物可以包括XCFramework文件。

其中,AAR(Android Archive)文件是一种安卓库项目的二进制归档文件,包含了编译好的安卓库以及相关资源和配置信息,本质上是一个压缩包;XCFramework文件是一个可分发的二进制包,可以在多个平台(iOS、macOS、tvOS,和watchOS等)上使用。

需要说明的是,适配于安卓平台的目标产物可以包括安卓平台中的工程引入第三方依赖所需要的任意格式的文件,适配于iOS平台的目标产物可以包括iOS平台中的工程引入第三方依赖所需要的任意格式的文件,本公开对此不作限制。

发明人还发现每次调用KMM提供的产物构建方法生成的目标产物,所存放的文件夹都不一致,用户还需要耗费时间去找到目标产物对应的文件夹才能获取目标产物来用于本地调试,并且当目标平台与KMM工程部署在不同服务器上时,用户需要将目标产物发布到远程仓库以使目标平台远程获取目标产物,但是用户手动发布产物还需要输入一系列相关指令,步骤繁琐,导致开发效率下降。

因此发明人进一步想到,可以将目标产物存储于指定的本地文件夹中以便于本地调试,还可以在Gradle插件中预先创建能基于用户传入的发布配置参数的任务,使得该Gradle插件可以自动根据用户传入配置参数将目标产物发布至远程仓库,无需用户手动操作,从而进一步提高开发效率。

在一实施例中,上述Gradle插件还可以包括:

产物存储模块12,用于预先创建存储任务,所述存储任务用于将所述目标产物存储至指定的本地文件夹;和/或,

产物发布模块13,用于预先创建发布任务,所述发布任务用于基于用户传入的发布配置参数将所述目标产物发布至远程仓库,以使目标平台远程获取所述目标产物。

在本实施例中,本地文件夹可以在Gradle插件对应的配置文件中指定,也可以在生成目标产物后询问用户由用户指定,本公开对指定本地文件夹的方式不作限制。

在本实施例中,存储任务可以为预先定义好的若干将目标产物存储至指定的本地文件夹所需的命令或方法;发布任务可以为预先定义好的若干发布至远程仓库所需的命令或方法,本公开对此不作限制。

在本实施例中,Gradle插件在生成目标产物后,可以通过产物存储模块12将目标产物存储至指定的本地文件夹,以便与KMM工程在同一服务器的属于不同目标平台的工程引入目标产物进行本地调试;也可以通过产物发布模块13基于用户传入的发布配置参数将目标产物发布至远程仓库,以便与KMM工程在不同服务器的属于不同目标平台的工程,通过远程仓库引入目标产物集成至工程中;也可以通过产物存储模块12将目标产物存储至指定的本地文件夹的同时,通过产物发布模块13基于用户传入的发布配置参数将目标产物发布至远程仓库;还可以通过产物存储模块12将目标产物存储至指定的本地文件夹,与KMM工程在同一服务器的属于不同目标平台的工程引入目标产物进行本地调试完成后,再通过产物发布模块13基于用户传入的发布配置参数,将在本地调试过程中进行优化后的逻辑代码所打包成的目标产物发布至远程仓库,本公开对此不作限制。

在一实施例中,发布适配于安卓平台的目标产物时,用户传入的发布配置参数可以包括:所述KMM工程的版本号、所述KMM工程所属组织的名称、适配于安卓平台的目标产物的名称和安卓远程仓库的地址。

在本实施例中,用户传入的发布配置参数可以为默认的发布配置参数,也可以为用户自定义的发布配置参数,本公开对此不作限制。

其中,KMM工程的版本号默认可以为最新的KMM工程的版本号,用户也可以传入旧的KMM工程的版本号将对应的逻辑代码打包成目标产物;KMM工程所属组织的名称默认可以为KMMOutputs,用户也可以自定义为其它名称;目标Android产物的名称默认可以为K kmm-android,用户也可以自定义为其它名称;Android远程仓库可以为Mevan仓库,Android远程仓库的地址默认可以为预设的仓库列表中第一个仓库的地址,用户也可以自定义为其它仓库地址,本公开对此不作限制。

在一实施例中,发布适配于iOS平台的目标产物时,用户传入的发布配置参数可以包括:所述KMM工程的版本号、所述KMM工程所属组织的名称、适配于iOS平台的目标产物的名称和iOS远程仓库的地址。

在本实施例中,用户传入的发布配置参数可以为默认的发布配置参数,也可以为用户自定义的发布配置参数,本公开对此不作限制。

其中,KMM工程的版本号默认可以为最新的KMM工程的版本号,用户也可以传入旧的KMM工程的版本号将对应的逻辑代码打包成目标产物;KMM工程所属组织的名称默认可以为KMMOutputs,用户也可以自定义为其它名称;目标iOS产物的名称默认可以为kmm-spm,用户也可以自定义为其它名称;iOS远程仓库可以为Mevan仓库,iOS远程仓库的地址默认可以为预设的仓库列表中第一个仓库的地址,用户也可以自定义为其它仓库地址,本公开对此不作限制。

CocoaPods和SPM(Swift Package Manager)都是用于管理iOS开发中第三方库的依赖关系的工具,以便用户集成其他用户创建的库到iOS项目中,从而提高了代码复用性和开发效率。但是KMM官方的产物构建方法只能生成XCFramework文件,并没有对SPM依赖管理方式进行支持,不能生成SPM所需的Zip包。

在一实施例中,基于用户传入的发布配置参数将目标产物发布至远程仓库包括:

将iOS产物打包为Zip包;

基于用户传入的发布配置参数将所述Zip包发布至远程仓库。

在本实施例中,还可以计算出Zip包的校验和,并基于KMM工程的版本号、iOS远程仓库的地址和Zip包的校验和生成SPM的配置文件。

在一实施例中,上述Gradle插件还可以包括:

一键触发模块14,用于预先创建一键部署任务,所述一键部署任务用于在接收到用户触发指令后将产物构建模块11、产物存储模块12和产物发布模块13所预先创建的任务组装成任务链,依次执行产物构建模块11、产物存储模块12和产物发布模块13的所预先创建的任务。

在本实施例中,用户只需触发一键部署任务就可以将产物构建模块的调用任务,产物存储模块的存储任务和产物发布模块的发布任务组装成任务链并依次自动触发调用任务、存储任务和发布任务,自动化构建、存储和发布目标产物,大大提高了开发效率。

在介绍了本公开示例性实施方式的插件之后,接下来,参考图2来描述根据本公开示例性实施方式的基于上述任意实施例所述的Gradle插件的产物部署方法。

图2示意性地示出了根据本公开实施方式的一种基于Gradle插件的产物部署方法的流程图,所述Gradle插件应用于KMM工程中,所述KMM工程用于将用户编写的逻辑代码打包成适配不同平台的产物;所述平台包括安卓平台和iOS平台;所述方法包括:

S101,通过所述Gradle插件调用KMM提供的产物构建方法将用户基于所述KMM工程编写的逻辑代码打包成适配于目标平台的目标产物。

在一实施例中,基于Gradle插件的产物部署方法还可以包括:

S102,通过所述Gradle插件将所述目标产物存储至指定的本地文件夹;

和/或,

S103,通过所述Gradle插件接收用户传入的发布配置参数,并通过所述Gradle插件将所述目标产物发布至远程仓库,以使目标平台远程获取所述目标产物。

在一实施例中,基于Gradle插件的产物部署方法还可以包括:

S104,在接收到用户触发指令后,通过所述Gradle插件将所述产物构建模块、所述产物存储模块和所述产物发布模块所预先创建的任务组装成任务链,依次执行所述产物构建模块、所述产物存储模块和所述产物发布模块的所预先创建的任务。

在介绍了本公开示例性实施方式的方法之后,接下来,参考图3来描述本公开示例性实施方式的介质。

本示例性实施方式中,可以通过程序产品实现上述方法,如可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

该程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。

可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RE等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

在介绍了本公开示例性实施方式的插件、方法和介质之后,接下来,参考图4来描述本公开示例性实施方式的计算设备。

图4显示的计算设备40仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图4所示,计算设备40以通用计算设备的形式表现。计算设备40的组件可以包括但不限于:上述至少一个处理单元401、上述至少一个存储单元402,连接不同系统组件(包括处理单元401和存储单元402)的总线403。

总线403包括数据总线、控制总线和地址总线。

存储单元402可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)4021和/或高速缓存存储器4022,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(ROM)4023。

存储单元402还可以包括具有一组(至少一个)程序模块4024的程序/实用工具4025,这样的程序模块4024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算设备40也可以与一个或多个外部设备404(例如键盘、指向设备等)通信。

这种通信可以通过输入/输出(I/O)接口405进行。并且,计算设备40还可以通过网络适配器406与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器406通过总线403与计算设备40的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备40使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了Gradle插件的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

相关技术
  • 基于插件的内容推荐方法、电子设备及计算机存储介质
  • 一种分布式系统部署方法、系统、电子设备及存储介质
  • 平台部署方法、装置、设备及储存介质
  • 线上部署机器学习模型的方法、设备和存储介质
  • 基于高可用性的设备部署方法、服务器、存储介质及装置
  • 插件化模型部署方法、电子装置及计算机可读存储介质
  • 产物容量评估方法、代码部署方法、装置和计算机设备
技术分类

06120116305870