安装包生成方法及装置与流程

    专利查询2022-07-12  267



    1.本说明书涉及计算机技术领域,尤其涉及安装包生成方法及装置。


    背景技术:

    2.flutter是一种开源的移动界面(user interface,ui)框架,通过flutter可以快速在安卓(android)工程上构建高质量的原生用户界面。
    3.目前,在将flutter应用到安卓工程中时,相关开发人员在原生工程的开发环境,即在开发安卓应用程序的环境中配置flutter开发环境,以与flutter强关联,从而利用相关flutter模块文件生成安卓应用程序的安装包。
    4.然而,由于需要配置flutter开发环境,导致相关人员需要学习相关配置方法,增加了原生工程引入flutter的难度,从而增加应用程序安装包的生成时间。


    技术实现要素:

    5.为克服相关技术中存在的问题,本说明书提供了安装包生成方法及装置。
    6.根据本说明书实施例的第一方面,提供一种安装包生成方法,所述方法包括:
    7.获取至少一个待处理代码文件包;其中,所述待处理代码文件包包括移动应用框架模块文件包;
    8.分别对每个所述待处理代码文件包进行编译,得到每个待处理代码文件包对应的文件格式为目标格式的第一编译文件;其中,所述目标格式指示适用于目标操作系统的文件格式;
    9.分别获取各个所述第一编译文件对应的依赖信息;其中,所述依赖信息指示所述第一编译文件在实现设定功能时所使用的文件的信息;
    10.根据各个所述第一编译文件对应的依赖信息,对所有所述第一编译文件进行打包,生成移动应用库文件,并将所述移动应用库文件存储至预设存储位置,以使第二设备从所述预设存储位置中获取所述移动应用库文件,并基于所述移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包;其中,所述目标应用程序适用于目标操作系统。
    11.可选的,所述分别获取各个所述第一编译文件对应的依赖信息,包括:
    12.对于每个第一编译文件,获取所述第一编译文件对应的配置文件;
    13.对所述配置文件进行解析,以提取所述配置文件中的所述第一编译文件对应的依赖项;其中,所述依赖项包括依赖字段;所述依赖字段包括文件包标识、文件标识和文件版本中的一个或多个;
    14.根据所述依赖项中的依赖字段生成所述第一编译文件对应的依赖信息。
    15.可选的,所述依赖项包括本地依赖项和/或远程依赖项;所述依赖信息指示本地依赖命令和/或远程依赖命令;其中,所述本地依赖命令用于确定所述第一编译文件对应的本地依赖文件,所述远程依赖命令用于生成所述第一编译文件对应的依赖配置文件;
    16.所述根据所述依赖项中的依赖字段生成所述第一编译文件对应的依赖信息,包
    括:
    17.按照第一预设命令格式,对所述本地依赖项中的依赖字段进行封装,得到所述第一编译文件对应的本地依赖命令;和/或,
    18.按照第二预设命令格式,对所述远程依赖项中的依赖字段进行封装,得到所述第一编译文件对应的远程依赖命令。
    19.可选的,所述根据各个所述第一编译文件对应的依赖信息,对所有所述第一编译文件进行打包,生成移动应用库文件,包括:
    20.对于每个所述第一编译文件,根据所述第一编译文件对应的依赖信息,确定所述第一编译文件对应的依赖文件;
    21.对所有所述第一编译文件以及各个所述第一编译文件对应的依赖文件进行打包,生成所述移动应用库文件。
    22.可选的,所述依赖信息包括本地依赖信息;所述依赖文件包括本地依赖文件;
    23.所述根据所述第一编译文件对应的依赖信息,确定所述第一编译文件对应的依赖文件,包括:
    24.基于所述本地依赖信息,从本地存储位置中的第二编译文件中获取目标编译文件,并根据所述目标编译文件确定所述第一编译文件对应的本地依赖文件。
    25.可选的,所述依赖信息包括远程依赖信息;所述依赖文件包括依赖配置文件;其中,所述依赖配置文件指示远程依赖文件的配置信息;
    26.所述根据所述第一编译文件对应的依赖信息,确定所述第一编译文件对应的依赖文件,包括:
    27.基于所述远程依赖配置信息,生成所述第一编译文件对应的依赖配置文件。
    28.可选的,所述方法还包括:
    29.将所述第一编译文件保存至本地存储位置中;其中,所述本地存储位置包括本地仓库。
    30.可选的,所述待处理代码文件包还包括自定义代码文件和/或插件代码文件。
    31.根据本说明书实施例的第二方面,提供一种安装包生成方法,应用于第二设备,所述方法包括:
    32.从预设存储位置中获取目标移动应用库文件;其中,所述目标移动应用库文件是第一方面以及第一方面各种可能的设计所述的方法得到的;
    33.基于所述移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包;其中,所述目标应用程序适用于目标操作系统。
    34.可选的,所述目标移动应用库文件包括依赖配置文件;
    35.所述方法还包括:
    36.基于所述依赖配置文件从目标存储位置中获取远程依赖文件;
    37.对所述远程依赖文件进行编译。
    38.根据本说明书实施例的第三方面,提供一种安装包生成装置,应用于第一设备,所述装置包括:
    39.文件获取模块,用于获取待处理代码文件包;其中,所述待处理代码文件包包括至少一个移动应用框架模块文件;
    40.依赖确定模块,用于分别获取各个所述第一编译文件对应的依赖信息;其中,所述依赖信息指示所述第一编译文件在实现设定功能时所使用的文件的信息;
    41.文件打包模块,用于根据各个所述第一编译文件对应的依赖信息,对所有所述第一编译文件进行打包,生成移动应用库文件,并将所述移动应用库文件存储至预设存储位置,以使第二设备从所述预设存储位置中获取所述移动应用库文件,并基于所述移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包;其中,所述目标应用程序适用于目标操作系统。
    42.可选的,所述依赖确定模块具体用于:
    43.对于每个第一编译文件,获取所述第一编译文件对应的配置文件;
    44.对所述配置文件进行解析,以提取所述配置文件中的所述第一编译文件对应的依赖项;其中,所述依赖项包括依赖字段;所述依赖字段包括文件包标识、文件标识和文件版本中的一个或多个;
    45.根据所述依赖项中的依赖字段生成所述第一编译文件对应的依赖信息。
    46.可选的,所述依赖项包括本地依赖项和/或远程依赖项;所述依赖信息指示本地依赖命令和/或远程依赖命令;其中,所述本地依赖命令用于确定所述第一编译文件对应的本地依赖文件,所述远程依赖命令用于生成所述第一编译文件对应的依赖配置文件;
    47.所述依赖确定模块还用于:
    48.按照第一预设命令格式,对所述本地依赖项中的依赖字段进行封装,得到所述第一编译文件对应的本地依赖命令;和/或,
    49.按照第二预设命令格式,对所述远程依赖项中的依赖字段进行封装,得到所述第一编译文件对应的远程依赖命令。
    50.可选的,所述文件打包模块具体用于:
    51.对于每个所述第一编译文件,根据所述第一编译文件对应的依赖信息,确定所述第一编译文件对应的依赖文件;
    52.对所有所述第一编译文件以及各个所述第一编译文件对应的依赖文件进行打包,生成所述移动应用库文件。
    53.可选的,所述依赖信息包括本地依赖信息;所述依赖文件包括本地依赖文件;
    54.所述文件打包模块还用于:
    55.基于所述本地依赖信息,从本地存储位置中的第二编译文件中获取目标编译文件,并根据所述目标编译文件确定所述第一编译文件对应的本地依赖文件。
    56.可选的,所述依赖信息包括远程依赖信息;所述依赖文件包括依赖配置文件;其中,所述依赖配置文件指示远程依赖文件的配置信息;
    57.所述文件打包模块还用于:
    58.基于所述远程依赖配置信息,生成所述第一编译文件对应的依赖配置文件。
    59.可选的,所述文件编译模块还用于:
    60.将所述第一编译文件保存至本地存储位置中;其中,所述本地存储位置包括本地仓库。
    61.可选的,所述待处理代码文件包还包括自定义代码文件和/或插件代码文件。
    62.根据本说明书实施例的第四方面,提供一种安装包生成装置,应用于第二设备,所
    述装置包括:
    63.安装包下载模块,用于从预设存储位置中下载目标移动应用库文件;其中,所述目标移动应用库文件是第一方面以及第一方面各种可能的设计所述的方法得到的;
    64.安装包生成模块,用于根据所述目标移动应用库文件和目标应用程序文件,生成目标应用程序安装包;其中,所述目标应用程序安装包适用于目标操作系统。
    65.可选的,所述目标移动应用库文件包括依赖配置文件;
    66.所述安装包生成模块还用于:
    67.基于所述依赖配置文件从目标存储位置中获取远程依赖文件;
    68.对所述远程依赖文件进行编译。
    69.根据本说明书实施例的第五方面,提供一种电子设备,包括:
    70.处理器;
    71.用于存储处理器可执行指令的存储器;
    72.其中,所述处理器被配置为:
    73.获取至少一个待处理代码文件包;其中,所述待处理代码文件包包括移动应用框架模块文件包;
    74.分别对每个所述待处理代码文件包进行编译,得到每个待处理代码文件包对应的文件格式为目标格式的第一编译文件;其中,所述目标格式指示适用于目标操作系统的文件格式;
    75.分别获取各个所述第一编译文件对应的依赖信息;其中,所述依赖信息指示所述第一编译文件在实现设定功能时所使用的文件的信息;
    76.根据各个所述第一编译文件对应的依赖信息,对所有所述第一编译文件进行打包,生成移动应用库文件,并将所述移动应用库文件存储至预设存储位置,以使第二设备从所述预设存储位置中获取所述移动应用库文件,并基于所述移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包;其中,所述目标应用程序适用于目标操作系统。
    77.根据本说明书实施例的第六方面,提供一种电子设备,包括:
    78.处理器;
    79.用于存储处理器可执行指令的存储器;
    80.其中,所述处理器被配置为:
    81.从所述远程仓库中下载目标移动应用库文件;其中,所述目标移动应用库文件是第一方面以及第一方面各种可能的设计所述的方法得到的;
    82.根据所述目标移动应用库文件和目标应用程序文件,生成目标应用程序安装包;其中,所述目标应用程序安装包适用于目标操作系统。
    83.根据本说明书实施例的第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的安装包生成方法。
    84.根据本说明书实施例的第八方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第二方面以及第二方面各种可能的设计所述的安装包生成方法。
    85.根据本说明书实施例的第九方面,提供一种计算机程序产品,包括计算机程序,所
    述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的安装包生成方法。
    86.根据本说明书实施例的第十方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的安装包生成方法。
    87.本说明书的实施例提供的技术方案可以包括以下有益效果:
    88.本说明书实施例中,获取与移动应用框架相关的代码文件,即待处理代码文件包,对每个待处理代码文件包进行编译,得到文件格式为目标格式的第一编译文件,该第一编译文件可直接应用于目标应用程序对应的原生工程中,即目标操作系统。根据第一编译文件对应的依赖信息,对所有第一编译文件进行打包,得到适用于目标操作系统的移动应用库文件,并将该移动应用库文件保存至预设存储位置。当需要利用移动应用框架开发适用于目标操作系统的应用程序(即目标应用程序)时,第二设备从预设存储位置中获取移动应用库文件,由于该移动应用库文件适用于目标操作系统,即可以直接应用于目标应用程序的原生工程中,因此,可以直接引入该移动应用库文件,从而在目标应用程序代码文件的基础上,也即在原生工程代码的基础上,结合移动应用库文件中的相关代码文件,生成目标应用程序安装包,无需在原生工程上配置移动应用框架的开发环境,降低引入移动应用框架的难度,从而可以有效地缩短应用程序安装包的生成时间。
    89.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
    附图说明
    90.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
    91.图1是本说明书根据一示例性实施例示出的一种安装包生成方法的应用场景图。
    92.图2是本说明书根据一示例性实施例示出的一种安装包生成方法的流程图。
    93.图3是本说明书根据一示例性实施例示出的另一种安装包生成方法的流程图。
    94.图4是本说明书根据一示例性实施例示出的又一种安装包生成方法的流程图。
    95.图5是本说明书实施例安装包生成装置所在电子设备的一种硬件结构图。
    96.图6是本说明书根据一示例性实施例示出的一种安装包生成装置的框图。
    97.图7是本说明书根据一示例性实施例示出的另一种安装包生成装置的框图。
    具体实施方式
    98.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
    99.在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是
    指并包含一个或多个相关联的列出项目的任何或所有可能组合。
    100.应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
    ……
    时”或“当
    ……
    时”或“响应于确定”。
    101.接下来对本说明书实施例进行详细说明。
    102.如图1所示,图1是本说明书根据一示例性实施例示出的一种安装包生成方法的场景应用图,第一设备101对待处理代码文件包(即flutter相关文件)进行相关处理(例如,编译,打包),生成相应的移动应用库文件,并将移动应用库文件保存至预设存储位置102。第二设备103在开发目标应用程序时,从预设存储位置102中下载所需的移动应用库文件,以供在目标应用程序对应的原生工程中,直接利用移动应用库文件生成目标应用程序安装包。
    103.其中,第一设备101包括服务器、终端设备(例如,电脑)等电子设备。第二设备包括服务器、终端设备(例如,电脑)等电子设备。
    104.其中,预设存储位置102包括远程仓库。
    105.如图2所示,图2是本说明书根据一示例性实施例示出的一种安装包方法的流程图,应用于第一设备,所述方法包括以下步骤:
    106.步骤201、获取至少一个待处理代码文件包。其中,待处理代码文件包包括移动应用框架模块文件包。
    107.步骤202、分别对每个待处理代码文件包进行编译,得到每个待处理代码文件包对应的文件格式为目标格式的第一编译文件。其中,目标格式指示适用于目标操作系统的文件格式。
    108.在本实施例中,获取与移动应用框架(即flutter)相关的代码文件,即获取待处理代码文件包。对于每个待处理代码文件包,对该待处理代码文件进行编译,得到该待处理代码文件包对应的编译文件,并将其作为第一编译文件。
    109.其中,第一编译文件的文件格式为目标格式,目标格式指示适用于目标操作系统的文件格式,也即,第一编译文件适用于目标操作系统,换言之,第一编译文件适用于开发目标操作系统对应的应用程序所对应的原生工程中,从而在开发目标操作系统对应的应用程序时,可以直接在该应用程序所对应的原生工程(即原生开发环境)中,利用第一编译文件,而无需在开发该应用程序的原生开发环境中配置flutter开发环境。
    110.可选的,目标操作系统包括安卓操作系统。相应的,目标操作系统对应的应用程序为安卓应用程序,目标格式为aar格式,原生工程为原生安卓工程。
    111.具体的,在对待处理代码文件包进行编译时,可以执行相应的编译指令,例如,flutter build aar,以对待处理代码文件包生成相应的编译文件。
    112.可选的,待处理代码文件包包括移动应用框架模块文件包、自定义代码文件包和插件代码文件包中的至少一项。
    113.可选的,移动应用框架模块文件包指示flutter框架的源代码文件,即基础模块文件;自定义代码文件包指示基于flutter框架开发的代码文件;插件代码文件包指示用于实
    现某种功能的第三方插件对应的代码文件,其可以是基于flutter框架和/或安卓代码实现的。
    114.其中,文件包包括至少一个文件,例如,待处理代码文件包包括至少一个文件,移动应用框架模块文件包包括至少一个移动应用框架模块文件。
    115.可选的,第一编译文件包括移动应用框架模块文件包对应的编译文件、自定义代码文件包对应的编译文件和插件代码文件包对应的编译文件中的一个或多个。例如,在待处理代码文件包包括移动应用框架模块文件包时,第一编译文件包括移动应用框架模块文件包对应的编译文件;又例如,在待处理代码文件包包括自定义代码文件包时,第一编译文件包括自定义代码文件包对应的编译文件;还例如,在待处理代码文件包包括插件代码文件包时,第一编译文件包括插件代码文件包对应的编译文件。
    116.步骤203、分别获取各个第一编译文件对应的依赖信息;其中,依赖信息指示第一编译文件在实现设定功能时所使用的文件的信息。
    117.在本实施例中,由于在使用第一编译文件实现相关功能时,需要利用其它文件共同实现,即第一编译文件需要依赖其它文件,因此,对于每个第一编译文件,确定该第一编译文件对应的依赖信息,以供利用该依赖信息确定该第一编译文件需依赖的文件。
    118.步骤204、根据各个第一编译文件对应的依赖信息,对所有第一编译文件进行打包,生成移动应用库文件,并将移动应用库文件存储至预设存储位置,以使第二设备从预设存储位置中获取移动应用库文件,并基于移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包。其中,目标应用程序适用于目标操作系统。
    119.在本实施例中,基于各个第一编译文件对应的依赖信息,对所有第一编译文件进行打包,生成相应的移动应用库文件,在生成移动应用库文件后,将其上传至预设存储位置。当第二设备开发目标应用程序时,从预设存储位置中下载相应的移动应用库文件,以供利用移动应用库文件和目标应用程序代码文件,生成相应的目标应用程序安装包,即在目标应用程序的原生工程中,可以直接引入该移动应用库文件,从而利用该移动应用库文件中的flutter相关内容(例如,方法、组件等)开发目标应用程序,并生成目标应用程序安装包。
    120.其中,移动应用库文件相当于一个组件包,该移动应用库文件的文件格式也为目标格式。例如,目标应用程序为安卓应用程序,移动应用库文件为一个aar文件,其适用于原生安卓工程,从而可以在安卓应用程序对应的原生工程(即目标应用程序代码文件)中直接引入该移动应用库文件,进而可以利用移动应用库文件生成目标应用程序安装包。
    121.可选的,目标应用程序安装包适用于目标操作系统,其对应的文件格式可以为apk(androidpackage)。
    122.可选的,预设存储位置包括远程仓库。具体的,远程仓库为远程maven仓库。当然,预设存储位置也可以为其它存储位置,本技术不对其进行限制。
    123.在本实施例中,基于各个第一编译文件对应的依赖信息,对所有第一编译文件进行打包,生成相应的移动应用库文件,以供第二设备在利用移动应用库文件时,可以利用相关第一编译文件以及第一编译文件所依赖的文件,从而成功实现相关的功能,保证flutter的成功应用
    124.在本实施例中,由于移动应用库文件适用于目标操作系统,即适用于目标操作系
    统对应的应用程序(即目标应用程序)所对应的原生开发环境,因此,当第二设备需要开发目标应用程序时,在原生工程(即原生开发环境)的基础上,直接引入移动应用库文件,从而可以直接利用该移动应用库文件中的flutter的相关内容,而无需在目标应用程序的原生开发环境中配置flutter开发环境,进而不会改变原生工程的结构,即不会改变目标应用程序代码文件的结构,在降低引入flutter难度的基础上,实现对原生工程(例如,原生安卓工程)零侵入。
    125.从上述描述可知,获取与移动应用框架相关的代码文件,即待处理代码文件包,对每个待处理代码文件包进行编译,得到文件格式为目标格式的第一编译文件,该第一编译文件可直接应用于目标应用程序对应的原生工程中,即目标操作系统。根据第一编译文件对应的依赖信息,对所有第一编译文件进行打包,得到适用于目标操作系统的移动应用库文件,并将该移动应用库文件保存至预设存储位置。当需要利用移动应用框架开发适用于目标操作系统的应用程序(即目标应用程序)时,第二设备从预设存储位置中获取移动应用库文件,由于该移动应用库文件适用于目标操作系统,即可以直接应用于目标应用程序的原生工程中,因此,可以直接引入该移动应用库文件,从而在目标应用程序代码文件的基础上,也即在原生工程代码的基础上,结合移动应用库文件中的相关代码文件,生成目标应用程序安装包,无需在原生工程上配置移动应用框架的开发环境,降低引入移动应用框架的难度,从而可以有效地缩短应用程序安装包的生成时间。
    126.如图3所示,是根据一示例性实施例示出的另一种安装包生成方法的流程图,本实施方式在前述实施例的基础上,描述了如何确定第一编译文件对应的依赖信息的过程,下面将结合一个具体实施例对此过程进行详细说明,如图3所示,该方法包括以下步骤:
    127.步骤301、获取至少一个待处理代码文件包。其中,待处理代码文件包包括移动应用框架模块文件包。
    128.步骤302、分别对每个待处理代码文件包进行编译,得到每个待处理代码文件包对应的文件格式为目标格式的第一编译文件。其中,目标格式指示适用于目标操作系统的文件格式。
    129.在本实施例中,在得到待处理代码文件包对应的第一编译文件后,将第一编译文件保存至本地存储位置中,以便于对第一编译文件进行管理。
    130.可选的,本地存储位置包括本地仓库,具体的,本地仓库为本地maven仓库。第一设备在本地创建maven仓库,并将其作为本地仓库。在得到第一编译文件后,将其保存至该本地仓库中,以便于相关人员对本地仓库中的编译文件的管理。
    131.其中,为了方便描述,将本地存储位置存储的编译文件作为第二编译文件。
    132.步骤303、对于每个第一编译文件,获取第一编译文件对应的配置文件。对配置文件进行解析,以提取配置文件中的第一编译文件对应的依赖项。其中,所述依赖项包括依赖字段;依赖字段包括文件包标识、文件标识和文件版本中的一个或多个。
    133.步骤304、根据依赖项中的依赖字段生成第一编译文件对应的依赖信息。
    134.在本实施例中,在确定第一编译文件对应的依赖信息时,对于每个第一编译文件,获取该第一编译文件对应的配置文件。基于预设解析脚本,对该配置文件进行解析,以从配置文件中提取出第一编译文件对应的所有依赖项,该依赖项是由依赖字段组成。对于该所有依赖项中的每个依赖项,根据该依赖项生成该第一编译文件对应的依赖信息,即一个依
    赖项可用于生成该第一编译文件对应的依赖信息。
    135.其中,依赖字段包括文件包标识(groupid)、文件标识(artifactid)和文件版本(version)中的一个或多个。
    136.具体的,文件包标识指示第一编译文件依赖的文件所属的文件包标识(例如,文件包编号,文件包名称);文件标识指示第一编译文件依赖的文件的标识,例如,文件名称、文件编号等;文件版本指示第一编译文件依赖的文件的版本。
    137.可选的,依赖字段还可以包括处理方式标识(scope),其一般为编译(compile)标识。处理方式标识指示处理第一编译文件依赖的文件的方式。当处理方式标识为编译标识时,表明第一设备在打包第一编译文件时,需要编译(即打包)该第一编译文件依赖的文件。
    138.可选的,依赖项包括本地依赖项和/或远程依赖项。相应的,依赖信息包括本地依赖信息和/或远程依赖信息。相应的,依赖信息指示本地依赖命令和/或远程依赖命令。其中,本地依赖命令用于确定第一编译文件对应的本地依赖文件,远程依赖命令用于生成第一编译文件对应的依赖配置文件。
    139.具体的,根据本地依赖项生成本地依赖信息,即生成本地依赖命令,该本地依赖命令可用于从本地存储位置中获取相应的编译文件,即本地依赖文件。根据远程依赖项生成远程依赖信息,即生成远程依赖命令,该远程依赖命令可用于生成依赖配置文件,该依赖配置文件用于获取第一编译文件对应的远程依赖文件。
    140.可选的,根据依赖字段生成第一编译文件对应的依赖信息,包括:
    141.按照第一预设命令格式,对本地依赖项中的依赖字段进行封装,得到第一编译文件对应的本地依赖命令。和/或,按照第二预设命令格式,对远程依赖项中的依赖字段进行封装,得到第一编译文件对应的远程依赖命令。
    142.其中,第一预设命令格式为embed(文件包标识:文件标识:文件版本)。相应的,本地依赖命令为embed命令。第二预设命令格式为implementation(文件包标识:文件标识:文件版本){exclude group:文件包标识,module:argifactid}。
    143.可选的,第一编译文件对应的配置文件可以为pom文件,获取该第一编译文件对应的配置文件的文件路径。利用预设解析脚本获取该文件路径对应的配置文件,并对其进行解析,以生成相应的本地依赖命令,即embed命令和/或生成远程依赖命令,即implementation命令。其中,生成本地依赖命令(即embed命令)的源代码如下:
    [0144][0145]
    可选的,生成远程依赖命令(即implementation命令)的源代码如下:
    [0146][0147][0148]
    可选的,第一编译文件的文件格式为aar格式,其相当于一个压缩包,第一配置文件对应的配置文件(即pom文件)位于该第一编译文件中,既可以从第一配置文件中的特定
    位置中确定相应的配置文件。例如,该配置文件的路径为build/output/repo/文件包标识(即配置文件所属的文件包标识)/flutter_release/1.0/flutter_release-1.0.pom(配置文件名称)。
    [0149]
    可选的,为了可以对第一编译文件进行打包,即进行二次编译,也需要搭建原生工程(例如,原生安卓工程)。在该原生工程中创建android library模块,并在原生工程的build.gradle模块中添加对本地存储位置的引用,以利用本地存储位置中的第二编译文件。
    [0150]
    其中,原生工程的搭建、android library模块的创建以及添加对本地存储位置的引用可以是相关人员操作的,也可以是第一设备根据相关脚本自动操作的,本技术不对其进行限制。
    [0151]
    可选的,还可以需要修改library模块的build.gradle。在得到本地依赖项后,通过fat-aar插件,在library模块的build.gradle中的dependencies里面生成组合该本地依赖项的语句,即生成相应的embed命令。同理,也需在library模块的build.gradle中的dependencies里面生成组合远程依赖项的语句,即生成implementation的命令。
    [0152]
    步骤305、根据各个第一编译文件对应的依赖信息,对所有第一编译文件进行打包,生成移动应用库文件,并将移动应用库文件存储至预设存储位置。
    [0153]
    可选的,在基于第一编译文件对应的依赖信息进行打包时,对于每个第一编译文件,根据第一编译文件对应的依赖信息,确定第一编译文件对应的依赖文件。对所有第一编译文件以及各个第一编译文件对应的依赖文件进行打包,即进行编译,也二次编译,生成移动应用库文件。
    [0154]
    可选的,依赖文件包括本地依赖文件和/或依赖配置文件。其中,依赖配置文件指示远程依赖文件的配置信息。
    [0155]
    相应的,根据第一编译文件对应的依赖信息,确定第一编译文件对应的依赖文件,包括:
    [0156]
    基于本地依赖信息,从本地存储位置中的第二编译文件中获取目标编译文件,并根据目标编译文件确定第一编译文件对应的本地依赖文件。和/或,基于远程依赖配置信息,生成第一编译文件对应的依赖配置文件。
    [0157]
    具体的,第一编译文件对应的依赖信息的数目为至少一个,每个依赖信息对应于第一编译文件所依赖的一个文件。对于第一编译文件对应的每个依赖信息,在该依赖信息为本地依赖信息的情况下,表明可以从本地存储位置中直接获取该依赖信息指示的文件,则从本地存储位置中查找该本地依赖信息对应的第二编译文件,也即得到目标编译文件。将该目标编译文件作为该第一编译文件依赖的一个本地文件,也即本地依赖文件。
    [0158]
    在该依赖信息为远程依赖信息的情况下,表明该依赖信息指示的第一编译文件所依赖的文件是在远端,即未在本地存储装置中,则根据该依赖信息,即远程依赖信息生成相应的依赖配置文件,以供利用依赖配置文件确定第一编译文件的远程依赖文件。
    [0159]
    可选的,依赖配置文件可以为pom文件。每个第一编译文件对应于一个pom文件,即pom文件仅可以确定一个远程依赖文件,也可以是所有第一编译文件对应于一个pom文件(即一个pom文件包含第一编译文件对应的所有远程依赖),以减少资源的浪费,在此,不对其进行限制。
    [0160]
    可选的,在生成依赖配置文件时,是通过执行implementation命令进行生成的。其中,执行implementation命令的源代码如下:
    [0161][0162]
    可选的,在library模块的build.gradle中加入上传移动应用库文件至预设存储位置(即远程仓库)的脚本,以执行相应的上传命令,从而在得到移动应用库文件后,可以将其成功上传至远程仓库。
    [0163]
    可选的,也可以直接生成包括依赖信息,即依赖项的目标文件,并将该目标文件和移动应用库文件进行打包。
    [0164]
    可选的,在得到移动应用库文件后,基于预设版本命名规则,确定该移动应用库文件对应的版本号。由于该版本号对应整体移动应用库文件,便于对移动应用库文件的版本进行管理,且将移动应用库文件上传至远程仓库中,由于并不是将各个第一编译文件上传至远程仓库,该每个第一编译文件都存在相应的版本号,可以避免由于文件过多导致的文件管理不便以及和其它设备上传的编译文件的版本号冲突概率较高的情况的出现,可以有效地减少版本冲突的概率,以及便于相关人员对远程仓库中的文件的管理。
    [0165]
    在本实施例中,基于第一个编译文件对应的依赖信息,对第一编译文件进行二次编译,即进行打包,得到移动应用库文件,该移动应用库文件为一个aar文件,因此,原生安卓工程可以直接引入该移动应用库文件,实现flutter的引入,从而可以利用flutter的相关内容,生成目标应用程序安装包,降低在原生安卓工程中引入flutter的难度,提高目标应用程序的开发效率,即缩短得到目标应用程序安装包所需的时间。
    [0166]
    如图4所示,图4是本说明书根据一示例性实施例示出的又一种安装包方法的流程图,应用于第二设备,所述方法包括以下步骤:
    [0167]
    步骤401、从预设存储位置中获取目标移动应用库文件。
    [0168]
    步骤402、基于移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包;其中,目标应用程序适用于目标操作系统。
    [0169]
    在本实施例中,在开发目标应用程序时,表明需应用flutter的相关内容,则从预设存储位置中下载所需的移动应用框架安装,也即目标移动应用库文件。由于该目标移动框架安装包的文件格式为目标格式,其适用于目标操作系统,即适用于目标应用程序对应的原生工程中。因此,可以直接在目标应用程序对应的原生工程中引用该目标移动框架安装包,而在目标应用程序的原生开发环境中配置flutter的开发环境。
    [0170]
    可选的,在目标移动应用库文件中的第一编译文件存在远程依赖时,表明目标移动应用库文件包括依赖配置文件,需要确定远程依赖文件,则基于依赖配置文件从目标存储位置中下载远程依赖文件;对远程依赖文件进行编译,从而保证相应的第一编译文件可以成功运行。
    [0171]
    可选的,可以在利用目标移动应用库文件生成目标应用程序安装包的过程中,确定远程依赖文件,并对远程依赖文件进行编译,即将远程依赖文件与目标移动应用库文件进行打包;也可以在得到目标应用程序安装包后,即在运行目标应用程序安装包的情况下,确定远程依赖文件,并对远程依赖文件进行编译。
    [0172]
    可选的,用户在需使用目标应用程序时,可以通过在移动终端上下载目标应用程序安装包,在移动终端运行该目标应用程序安装包的情况下,确定远程依赖文件,并对远程依赖文件进行编译。
    [0173]
    可选的,目标存储位置可以为远程仓库,当然,也可以为其它存储位置,在此,不对其进行赘述。
    [0174]
    可选的,响应于接收到的下载请求,即在接收到下载请求后,提取该下载请求中的安装包标识以及安装包版本,从而从预设存储位置中下载与安装包标识以及安装包版本对应的移动应用库文件。
    [0175]
    在本实施例中,在开发目标应用程序时,从预设存储位置中下载所需的移动应用库文件,并将其直接引入目标应用程序的原生工程中,以使相关开发人员可以利用目标应用框架安装包中的相关flutter内容开发目标应用程序,无需相关开发人员配置flutter的开发环境,降低flutter的引入难度,从而可以有效提高目标应用程序的开发效率。
    [0176]
    与前述方法的实施例相对应,本说明书还提供了装置及其所应用的电子设备的实施例。
    [0177]
    本说明书文件处理装置的实施例可以应用在电子设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书实施例安装包生成装置所在计算机设备的一种硬件结构图,除了图5所示的处理器510、内存530、网络接口520、以及非易失性存储器540之外,实施例中装置531所在的服务器或电子设备,通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
    [0178]
    如图6所示,图6是本说明书根据一示例性实施例示出的一种安装包生成装置的框图,应用于第一设备,装置包括:
    [0179]
    文件获取模块610,用于获取至少一个待处理代码文件包。其中,待处理代码文件
    包包括移动应用框架模块文件包。
    [0180]
    文件编译模块620,用于分别对每个待处理代码文件包进行编译,得到每个待处理代码文件包对应的文件格式为目标格式的第一编译文件。其中,目标格式指示适用于目标操作系统的文件格式。
    [0181]
    依赖确定模块630,用于分别获取各个第一编译文件对应的依赖信息。其中,依赖信息指示第一编译文件在实现设定功能时所使用的文件的信息。
    [0182]
    文件打包模块640,用于根据各个第一编译文件对应的依赖信息,对所有第一编译文件进行打包,生成移动应用库文件,并将移动应用库文件存储至预设存储位置,以使第二设备从预设存储位置中获取移动应用库文件,并基于移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包。其中,目标应用程序适用于目标操作系统。
    [0183]
    可选的,依赖确定模块630具体用于:
    [0184]
    对于每个第一编译文件,获取第一编译文件对应的配置文件。
    [0185]
    对配置文件进行解析,以提取配置文件中的第一编译文件对应的依赖项。其中,依赖项包括依赖字段。依赖字段包括文件包标识、文件标识和文件版本中的一个或多个。
    [0186]
    根据依赖项中的依赖字段生成第一编译文件对应的依赖信息。
    [0187]
    可选的,依赖项包括本地依赖项和/或远程依赖项。依赖信息指示本地依赖命令和/或远程依赖命令。其中,本地依赖命令用于确定第一编译文件对应的本地依赖文件,远程依赖命令用于生成第一编译文件对应的依赖配置文件。
    [0188]
    依赖确定模块630还用于:
    [0189]
    按照第一预设命令格式,对本地依赖项中的依赖字段进行封装,得到第一编译文件对应的本地依赖命令。和/或,
    [0190]
    按照第二预设命令格式,对远程依赖项中的依赖字段进行封装,得到第一编译文件对应的远程依赖命令。
    [0191]
    可选的,文件打包模块640具体用于:
    [0192]
    对于每个第一编译文件,根据第一编译文件对应的依赖信息,确定第一编译文件对应的依赖文件。
    [0193]
    对所有第一编译文件以及各个第一编译文件对应的依赖文件进行打包,生成移动应用库文件。
    [0194]
    可选的,依赖信息包括本地依赖信息。依赖文件包括本地依赖文件。
    [0195]
    文件打包模块640还用于:
    [0196]
    基于本地依赖信息,从本地存储位置中的第二编译文件中获取目标编译文件,并根据目标编译文件确定第一编译文件对应的本地依赖文件。
    [0197]
    可选的,依赖信息包括远程依赖信息。依赖文件包括依赖配置文件。其中,依赖配置文件指示远程依赖文件的配置信息。
    [0198]
    文件打包模块640还用于:
    [0199]
    基于远程依赖配置信息,生成第一编译文件对应的依赖配置文件。
    [0200]
    可选的,文件编译模块620还用于:
    [0201]
    将第一编译文件保存至本地存储位置中。其中,本地存储位置包括本地仓库。
    [0202]
    可选的,待处理代码文件包还包括自定义代码文件和/或插件代码文件。
    [0203]
    如图7所示,图7是本说明书根据一示例性实施例示出的另一种安装包生成装置的框图,应用于第二设备,装置包括:
    [0204]
    安装包下载模块710,用于从预设存储位置中下载目标移动应用库文件。其中,目标移动应用库文件是基于上述所述的方法得到的。
    [0205]
    安装包生成模块720,用于根据目标移动应用库文件和目标应用程序文件,生成目标应用程序安装包。其中,目标应用程序安装包适用于目标操作系统。
    [0206]
    可选的,目标移动应用库文件包括依赖配置文件。
    [0207]
    安装包生成模块720还用于:
    [0208]
    基于依赖配置文件从目标存储位置中获取远程依赖文件。
    [0209]
    对远程依赖文件进行编译。
    [0210]
    相应的,本说明书还提供一种电子设备,所述电子设备包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
    [0211]
    获取至少一个待处理代码文件包;其中,所述待处理代码文件包包括移动应用框架模块文件包;
    [0212]
    分别对每个所述待处理代码文件包进行编译,得到每个待处理代码文件包对应的文件格式为目标格式的第一编译文件;其中,所述目标格式指示适用于目标操作系统的文件格式;
    [0213]
    分别获取各个所述第一编译文件对应的依赖信息;其中,所述依赖信息指示所述第一编译文件在实现设定功能时所使用的文件的信息;
    [0214]
    根据各个所述第一编译文件对应的依赖信息,对所有所述第一编译文件进行打包,生成移动应用库文件,并将所述移动应用库文件存储至预设存储位置,以使第二设备从所述预设存储位置中获取所述移动应用库文件,并基于所述移动应用库文件和目标应用程序代码文件,生成目标应用程序安装包;其中,所述目标应用程序适用于目标操作系统。
    [0215]
    或者,
    [0216]
    从所述远程仓库中下载目标移动应用库文件;其中,所述目标移动应用库文件是基于上述所述的方法得到的;
    [0217]
    根据所述目标移动应用库文件和目标应用程序文件,生成目标应用程序安装包;其中,所述目标应用程序安装包适用于目标操作系统。
    [0218]
    在另一个实施例中,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的安装包生成方法。
    [0219]
    在另一个实施例中,本技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的安装包生成方法。
    [0220]
    上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
    [0221]
    对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的
    需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
    [0222]
    上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
    [0223]
    本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
    [0224]
    应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
    [0225]
    以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
    转载请注明原文地址:https://tc.8miu.com/read-4547.html

    最新回复(0)