CN114237687A - 软件版本的获取方法、系统、电子设备和存储介质 - Google Patents

软件版本的获取方法、系统、电子设备和存储介质 Download PDF

Info

Publication number
CN114237687A
CN114237687A CN202111406460.0A CN202111406460A CN114237687A CN 114237687 A CN114237687 A CN 114237687A CN 202111406460 A CN202111406460 A CN 202111406460A CN 114237687 A CN114237687 A CN 114237687A
Authority
CN
China
Prior art keywords
closed
compiling
source program
program
software version
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
Application number
CN202111406460.0A
Other languages
English (en)
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.)
Spreadtrum Semiconductor Nanjing Co Ltd
Original Assignee
Spreadtrum Semiconductor Nanjing 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 Spreadtrum Semiconductor Nanjing Co Ltd filed Critical Spreadtrum Semiconductor Nanjing Co Ltd
Priority to CN202111406460.0A priority Critical patent/CN114237687A/zh
Publication of CN114237687A publication Critical patent/CN114237687A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

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

Abstract

本发明公开了一种软件版本的获取方法、系统、电子设备和存储介质,该方法包括:获取所述闭源程序对应的程序特征参数信息;基于所述程序特征参数信息,确定所述闭源程序对应的编译策略;其中,不同的所述程序特征参数信息对应不同的所述编译策略;采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息。本发明中代码编译过程只需要制作一个开源包即可,极大地简化了软件版本的制作流程,有效地提高了软件编译效率;同时解决二次签名问题以及简化下游客户版本的制作流程,极大程度上优化了现有的非开源仓库的代码发布方案,满足了更高的软件开发需求。

Description

软件版本的获取方法、系统、电子设备和存储介质
技术领域
本发明涉及代码发布技术领域,特别涉及一种软件版本的获取方法、系统、电子设备和存储介质。
背景技术
目前,非开源代码都是采用将闭源仓库下的编译目标直接打包,以生成产物的方式发布,下游客户拿到版本后,闭源软件包不参与编译,只参与打包到对应的系统镜像文件中;这种发布方式使得版本中的某些闭源程序无法兼容客制化的一些配置,如签名等问题;例如,目前采用IDH(一种软件版本发布方式)的发布方式,发布的IDH版本在客户端存在兼容性问题,释放的闭源应用程序存在签名不匹配的风险,导致安装失败,影响系统启动等问题。另外,这种发布方式使得整个软件版本分为两个部分,一部分是开源,一部分是闭源;相当于需要制作两套软件包;例如,整个IDH分为开源跟闭源部分,制作流程也比较复杂。
发明内容
本发明要解决的技术问题是为了克服现有技术中非开源代码以编译产物的形式发布到下游后,存在的一些兼容性的问题、部分应用程序签名不一致等风险,以及现有技术在软件的版本维护开发通常都是开源代码结合多个闭源程序包的形式,存在客户版本制作流程较为复杂的缺陷,目的在于提供一种可以将版本发布过程从一对多的关系(开源代码+N个闭源程序包)简化为一对一的关系(即开源代码+非开源代码程序集),编译的软件工程主需要根据实际需求配置所需要的模块,最终完成软件的编译发布打包,该代码编译过程只需要制作一个开源包即可,极大地简化了软件版本的制作流程,有效地提高了软件编译效率;同时解决了非开源代码发布存在的兼容性问题、二次签名问题以及简化下游客户版本的制作流程,具体在于提供一种软件版本的获取方法、系统、电子设备和存储介质。
本发明是通过下述技术方案来解决上述技术问题:
本发明提供一种软件版本的获取方法,所述方法应用在基于非开源代码编译的闭源程序中,所述方法包括:
获取所述闭源程序对应的程序特征参数信息;
基于所述程序特征参数信息,确定所述闭源程序对应的编译策略;
其中,不同的所述程序特征参数信息对应不同的所述编译策略;
采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息。
较佳地,所述基于所述程序特征参数信息,确定所述闭源程序对应的编译策略,包括:
获取若干待兼容架构的架构信息;
基于所述架构信息,确定不同的所述待兼容硬件架构对应的编译策略;
其中,所述编译策略对应编译顺序和编译内容。
较佳地,所述方法还包括:
基于所述程序特征参数信息判断所述闭源程序是否涉及签名操作,若存在,则获取所述闭源程序对应的签名信息;
所述采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息,包括:
根据所述编译顺序和所述和编译内容执行编译操作,并在每次执行编译操作时采用预编译方式对所述闭源程序的所述签名信息进行更新,以生成所述闭源程序对应的第一软件版本信息。
较佳地,所述闭源程序包括应用程序或共享库。
较佳地,所述获取若干待兼容架构的架构信息,之前还包括:
基于所述程序特征参数信息判断所述闭源程序是否涉及签名操作,若不存在,则执行所述获取若干待兼容架构的架构信息的步骤;
其中,所述闭源程序包括可执行程序。
较佳地,所述基于所述程序特征参数信息,确定所述闭源程序对应的编译策略,包括:
获取所述闭源程序与芯片类型之间的相关度;
基于所述程序特征参数信息判断所述相关度是否达到设定阈值,若是,则获取若干待兼容芯片的芯片信息;
基于所述芯片信息,确定不同的所述芯片信息对应的编译策略;
其中,所述编译策略对应编译顺序和编译内容。
较佳地,所述闭源程序包括通信关联程序、系统镜像文件或预设类别程序。
较佳地,所述采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息,包括:
基于开源代码仓库以及非开源代码仓库,采用所述编译策略对所述闭源程序进行编译,生成所述闭源程序对应的所述第一软件版本信息,以获取所述闭源程序对应的第一软件包;
所述生成所述闭源程序对应的第一软件版本信息,之后还包括:
基于所述第一软件版本信息,确定所述闭源程序的第一发布路径信息;
基于所述第一发布路径信息对所述闭源程序对应的第一软件包进行发布。
本发明还提供一种软件版本的获取方法,所述方法基于上述的软件版本的获取方法实现,所述方法包括:
获取若干第一软件版本信息的第一软件包构成的闭源程序集;
基于开源代码仓库以及所述闭源程序集,对所述闭源程序集中的闭源程序执行编译操作,以获取第二软件版本信息。
较佳地,所述获取若干第一软件版本信息的第一软件包构成的闭源程序集的步骤之后、所述基于开源代码仓库以及所述闭源程序集,对所述闭源程序集中的闭源程序执行编译操作的步骤之前,还包括:
识别出非开源代码仓库中非开源代码编译后的编译结果;
在所述编译结果需要打包至系统镜像文件时,则将对应的编译结果更新至所述闭源程序集中。
较佳地,所述获取第二软件版本信息,之后还包括:
基于所述第二软件版本信息,确定所述闭源程序的第二发布路径信息;
基于所述第二发布路径信息对所述闭源程序对应的第二软件包进行发布。
本发明还提供一种软件版本框架的获取系统,所述系统应用在基于非开源代码编译的闭源程序中,所述系统包括:
特征参数信息获取模块,用于获取所述闭源程序对应的程序特征参数信息;
编译策略确定模块,用于基于所述程序特征参数信息,确定所述闭源程序对应的编译策略;
其中,不同的所述程序特征参数信息对应不同的所述编译策略;
第一版本信息获取模块,用于采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息。
较佳地,所述编译策略确定模块包括:
架构信息获取单元,用于获取若干待兼容架构的架构信息;
编译策略确定单元,用于基于所述架构信息,确定不同的所述待兼容硬件架构对应的编译策略;
其中,所述编译策略对应编译顺序和编译内容。
较佳地,所述系统还包括:
第一判断模块,用于基于所述程序特征参数信息判断所述闭源程序是否涉及签名操作,若存在,则调用签名信息获取模块获取所述闭源程序对应的签名信息;
所述第一版本信息获取模块用于根据所述编译顺序和所述和编译内容执行编译操作,并在每次执行编译操作时采用预编译方式对所述闭源程序的所述签名信息进行更新,以生成所述闭源程序对应的第一软件版本信息。
较佳地,所述闭源程序包括应用程序或共享库。
较佳地,所述编译策略确定模块包括:
第一判断单元,用于基于所述程序特征参数信息判断所述闭源程序是否涉及签名操作,若不存在,则调用所述架构信息获取单元;
较佳地,所述闭源程序包括可执行程序。
较佳地,所述编译策略确定模块包括:
相关度获取单元,用于获取所述闭源程序与芯片类型之间的相关度;
第二判断单元,用于基于所述程序特征参数信息判断所述相关度是否达到设定阈值,若是,则获取若干待兼容芯片的芯片信息;
编译策略确定单元,用于基于所述芯片信息,确定不同的所述芯片信息对应的编译策略;
其中,所述编译策略对应编译顺序和编译内容。
较佳地,所述闭源程序包括通信关联程序、系统镜像文件或预设类别程序。
较佳地,所述第一版本信息获取模块用于基于开源代码仓库以及非开源代码仓库,采用所述编译策略对所述闭源程序进行编译,生成所述闭源程序对应的所述第一软件版本信息,以获取所述闭源程序对应的第一软件包;
所述系统还包括:
第一路径信息确定模块,用于基于所述第一软件版本信息,确定所述闭源程序的第一发布路径信息;
第一软件包发布模块,用于基于所述第一发布路径信息对所述闭源程序对应的第一软件包进行发布。
本发明还提供一种软件版本框架的获取系统,所述系统基于上述的软件版本的获取系统法实现,所述系统包括:
闭源程序集获取模块,用于获取若干第一软件版本信息的第一软件包构成的闭源程序集;
第二版本信息获取模块,用于基于开源代码仓库以及所述闭源程序集,对所述闭源程序集中的闭源程序执行编译操作,获取第二软件版本信息。
较佳地,所述系统还包括:
编译结果识别模块,用于识别出非开源代码仓库中非开源代码编译后的编译结果;
更新模块,用于在所述编译结果需要打包至系统镜像文件时,则将对应的编译结果更新至所述闭源程序集中。
较佳地,所述系统还包括:
第二路径信息确定模块,用于基于所述第二软件版本信息,确定所述闭源程序的第二发布路径信息;
第二软件包发布模块,用于基于所述第二发布路径信息对所述闭源程序对应的第二软件包进行发布。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现上述的软件版本框架的生成方法,或,实现上述的软件版本框架的生成方法。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的软件版本框架的生成方法,或,实现上述的软件版本框架的生成方法。
在符合本领域常识的基础上,所述各优选条件,可任意组合,即得本发明各较佳实施例。
本发明的积极进步效果在于:
本发明中,可以将版本发布过程从一对多的关系(开源代码+N个闭源程序包)简化为一对一的关系(即开源代码+非开源代码程序集),编译的软件工程主需要根据实际需求配置所需要的模块,最终完成软件的编译发布打包,该代码编译过程只需要制作一个开源包即可,极大地简化了软件版本的制作流程,有效地提高了软件编译效率;同时解决二次签名问题以及简化下游客户版本的制作流程,极大程度上优化了现有的非开源仓库的代码发布方案,满足了更高的软件开发需求。
附图说明
图1为本发明实施例1的软件版本的获取方法的流程图。
图2为本发明实施例2的软件版本的获取方法的第一流程图。
图3为本发明实施例2的软件版本的获取方法的第二流程图。
图4为本发明实施例2的软件版本的获取方法的第三流程图。
图5为本发明实施例2的软件版本的获取方法的第四流程图。
图6为本发明实施例2中非开源程序集对应的编译策略示意图。
图7为本发明实施例3的软件版本的获取方法的流程图。
图8为本发明实施例4的软件版本的获取方法的流程图。
图9为本发明实施例4中下游软件发布包的制作流程示意图。
图10为本发明实施例5的软件版本的获取系统的模块示意图。
图11为本发明实施例6的软件版本的获取系统的模块示意图。
图12为本发明实施例7的软件版本的获取系统的模块示意图。
图13为本发明实施例8的软件版本的获取系统的模块示意图。
图14为本发明实施例9的实现软件版本的获取方法的电子设备的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
本实施例的软件版本的获取方法应用在基于非开源代码编译的闭源程序中,非开源代码编译后的软件版本在上游中完成,然后将上游版本打包发布至下游客户。其中,上游版本是指平台验收的版本。
另外,非开源代码是指无法以源代码形式释放的软件代码;开源代码是指以源代码形式释放的软件代码;闭源仓库是指无法释放源代码到客户的仓库。
如图1所示,本实施例的软件版本的获取方法包括:
S101、获取闭源程序对应的程序特征参数信息;
本实施例中,通过新增闭源仓库,该闭源仓库中不同类别的闭源程序根据自身特性进行区分,程序特征参数信息为区分不同闭源程序的数据;这些不同类别的闭源程序包括但不限于:app(应用程序)、binary(可执行程序)、image(系统镜像文件)、modem(通信关联程序)或者其他预设类别的闭源程序等。
S102、基于程序特征参数信息,确定闭源程序对应的编译策略;
其中,不同的程序特征参数信息对应不同的编译策略;
S103、采用编译策略对闭源程序进行编译,以生成闭源程序对应的第一软件版本信息。
本实施例中,根据闭源编译产物的特性做不同的处理,即针对不同的闭源程序的固有特性,确定与之相适配的编译策略,进而采用编译策略编译对应的闭源程序,以生成用于发布的闭源程序软件包,最终形成非开源代码程序集,解决了非开源代码发布存在的兼容性问题以及二次签名问题,也保证了下游客户版本的制作流程的简化效果。
实施例2
本实施例的软件版本的获取方法是对实施例1的进一步改进,具体地:
在一可实施的方案中,如图2所示,步骤S102包括:
S10211、获取若干待兼容架构的架构信息;
S10212、基于架构信息,确定不同的待兼容硬件架构对应的编译策略;
其中,编译策略对应编译顺序和编译内容。
在一可实施的方案中,如图3所示,步骤S103之前还包括:
S10301、基于程序特征参数信息判断闭源程序是否涉及签名操作,若存在,则获取闭源程序对应的签名信息;
优选地,步骤S10301在步骤S10211之前执行。
步骤S103包括:
S10311、根据编译顺序和和编译内容执行编译操作,并在每次执行编译操作时采用预编译方式对闭源程序的签名信息进行更新,以生成闭源程序对应的第一软件版本信息。
具体地,闭源程序包括但不限于应用程序app、共享库。
也就是说,非开源程序集中的应用程序类闭源程序,一般会采用预编译的方式,通过编译配置Android.bp完成对非开源的闭源应用程序的二次签名以及预编译。当然也可以采用其他能够实现的方案,只要解决对应的二次签名问题即可。
在闭源程序涉及签名问题时,则将签名问题和架构差异共同考虑,统一编译并发布,以避免释放的闭源应用程序存在签名不匹配的风险,保证了闭源应用程序始终能够安装成功,不对系统启动等造成影响,解决了现有非开源代码发布存在二次签名问题,有效提升了非开源代码发布的兼容性。
在一可实施的方案中,步骤S1021之前还包括:
基于程序特征参数信息判断闭源程序是否涉及签名操作,若不存在,则执行步骤S1021;
具体地,闭源程序包括但不限于可执行程序binary。
即在确定某些闭源程序不存在签名问题,则可以区分架构进行编译并发布对应的闭源程序软件包,在保证软件编译效率的同时有效保证非开源代码发布的兼容性。
在一可实施的方案中,如图4所示,步骤S102包括:
S10221、获取闭源程序与芯片类型之间的相关度;
S10222、基于程序特征参数信息判断相关度是否达到设定阈值,若是,则获取若干待兼容芯片的芯片信息;
具体地,闭源程序包括但不限于通信关联程序modem、系统镜像文件image或预设类别程序。
S10223、基于芯片信息,确定不同的芯片信息对应的编译策略;
其中,编译策略对应编译顺序和编译内容。
即在确定某些闭源程序与芯片类型(如Soc1、Soc2、Soc3)强相关时,则区分芯片编译并发布对应的闭源程序软件包,以有效保证非开源代码发布的兼容性。
在一可实施的方案中,如图5所示,步骤S103包括:
S10312、基于开源代码仓库以及非开源代码仓库,采用编译策略对闭源程序进行编译,生成闭源程序对应的第一软件版本信息,以获取闭源程序对应的第一软件包;
步骤S103之后还包括:
S104、基于第一软件版本信息,确定闭源程序的第一发布路径信息;
S105、基于第一发布路径信息对闭源程序对应的第一软件包进行发布。
当需要给下游客户发布特定版本,如该特定版本为与特定芯片相关的工程,根据版本的配置,选择闭源仓库对应的特定芯片下的目录进行发布释放。如若该特定版本与芯片无关,则可以一并释放,下游客户根据需要使用即可。
本实施例中,根据闭源编译产物的特性做不同的处理,即针对不同的闭源程序。例如,结合图6,不同的应用程序apps的package存在签名以及架构差异,可以共用一套规则发布;可执行程序binary不存在签名问题,则可以区分架构进行发布;系统镜像文件images、通信关联程序modems以及其他预设类别的闭源程序,如若与芯片类别强相关,则可以区分芯片发布。
本实施例中,根据闭源编译产物的特性做不同的处理,即针对不同的闭源程序的固有特性,确定与之相适配的编译策略,进而采用编译策略编译对应的闭源程序,以生成用于发布的闭源程序软件包,最终形成非开源代码程序集,解决了非开源代码发布存在的兼容性问题以及二次签名问题,也保证了下游客户版本的制作流程的简化效果。
实施例3
本实施例的软件版本的获取方法基于实施例1或2中的软件版本的获取方法实现。本实施例的软件版本的获取方法生成的软件发布包为下游版本,即释放给客户的版本。
如图7所示,本实施例的软件版本的获取方法包括:
S201、获取若干第一软件版本信息的第一软件包构成的闭源程序集;
S202、基于开源代码仓库以及闭源程序集,对闭源程序集中的闭源程序执行编译操作,以获取第二软件版本信息。
本实施例中,可以将版本发布过程从一对多的关系(开源代码+N个闭源程序包)简化为一对一的关系(即开源代码+非开源代码程序集),编译的软件工程主需要根据实际需求配置所需要的模块,最终完成软件的编译发布打包,该代码编译过程只需要制作一个开源包即可,极大地简化了软件版本的制作流程,有效地提高了软件编译效率;同时解决二次签名问题以及简化下游客户版本的制作流程,极大程度上优化了现有的非开源仓库的代码发布方案,满足了更高的软件开发需求。
实施例4
本实施例的软件版本的获取方法是对实施例3的进一步改进,具体地:
在一可实施例的方案中,如图8所示,步骤S201之后、步骤S202之前还包括:
S20201、识别出非开源代码仓库中非开源代码编译后的编译结果;
S20202、在编译结果需要打包至系统镜像文件时,则将对应的编译结果更新至闭源程序集中。
在一可实施例的方案中,步骤S202之后还包括:
S203、基于第二软件版本信息,确定闭源程序的第二发布路径信息;
S204、基于第二发布路径信息对闭源程序对应的第二软件包进行发布。
下面结合图9,具体说明下游的软件版本包的制作流程:
将平台源代码分为三类:开源仓库、非开源仓库以及非开源程序集仓库。
(1)使用非开源代码仓库和开源代码仓库,编译上游版本并发布至下游;
(2)识别出非开源仓库的编译产物,并从选取出需要打包到系统镜像的编译产物,将这些编译产物同步更新至非开源程序集,保证源代码跟发布下游版本的编译产物的一致性,两者之间无差别;
(3)使用开源仓库跟非开源程序集,构成下游的软件版本包以进行发布。
其中,使用非开源程序集仓库和开源代码仓库,构建下游的软件发布包,不再以开源代码包和N个闭源代码包的方式发布下游软件版本,从而有效地简化下游客户版本的制作流程。
本实施例中,可以将版本发布过程从一对多的关系(开源代码+N个闭源程序包)简化为一对一的关系(即开源代码+非开源代码程序集),编译的软件工程主需要根据实际需求配置所需要的模块,最终完成软件的编译发布打包,该代码编译过程只需要制作一个开源包即可,极大地简化了软件版本的制作流程,有效地提高了软件编译效率;同时解决二次签名问题以及简化下游客户版本的制作流程,极大程度上优化了现有的非开源仓库的代码发布方案,满足了更高的软件开发需求。
实施例5
本实施例的软件版本的获取方法应用在基于非开源代码编译的闭源程序中,非开源代码编译后的软件版本在上游中完成,然后将上游版本打包发布至下游客户。
如图10所示,本实施例的软件版本的获取系统包括:
特征参数信息获取模块1,用于获取闭源程序对应的程序特征参数信息;
本实施例中,通过新增闭源仓库,该闭源仓库中不同类别的闭源程序根据自身特性进行区分,程序特征参数信息为区分不同闭源程序的数据;这些不同类别的闭源程序包括但不限于:app、binary、image、modem或者其他预设类别的闭源程序等。
编译策略确定模块2,用于基于程序特征参数信息,确定闭源程序对应的编译策略;
其中,不同的程序特征参数信息对应不同的编译策略;
第一版本信息获取模块3,用于采用编译策略对闭源程序进行编译,以生成闭源程序对应的第一软件版本信息。
本实施例中,根据闭源编译产物的特性做不同的处理,即针对不同的闭源程序的固有特性,确定与之相适配的编译策略,进而采用编译策略编译对应的闭源程序,以生成用于发布的闭源程序软件包,最终形成非开源代码程序集,解决了非开源代码发布存在的兼容性问题以及二次签名问题,也保证了下游客户版本的制作流程的简化效果。
实施例6
如图11所示,本实施例的软件版本的获取系统是对实施例5的进一步改进,具体地:
在一可实施的方案中,本实施例的编译策略确定模块2包括:
架构信息获取单元6,用于获取若干待兼容架构的架构信息;
编译策略确定单元7,用于基于所述架构信息,确定不同的所述待兼容硬件架构对应的编译策略;
其中,所述编译策略对应编译顺序和编译内容。
在一可实施的方案中,本实施例的软件版本的获取系统还包括:
第一判断模块,用于基于所述程序特征参数信息判断所述闭源程序是否涉及签名操作,若存在,则调用签名信息获取模块获取所述闭源程序对应的签名信息;
第一版本信息获取模块3用于根据所述编译顺序和所述和编译内容执行编译操作,并在每次执行编译操作时采用预编译方式对所述闭源程序的所述签名信息进行更新,以生成所述闭源程序对应的第一软件版本信息。
具体地,闭源程序包括但不限于应用程序app、共享库。
也就是说,非开源程序集中的应用程序类闭源程序,一般会采用预编译的方式,通过编译配置Android.bp完成对非开源的闭源应用程序的二次签名以及预编译。当然也可以采用其他能够实现的方案,只要解决对应的二次签名问题即可。
在闭源程序涉及签名问题时,则将签名问题和架构差异共同考虑,统一编译并发布,以避免释放的闭源应用程序存在签名不匹配的风险,保证了闭源应用程序始终能够安装成功,不对系统启动等造成影响,解决了现有非开源代码发布存在二次签名问题,有效提升了非开源代码发布的兼容性。
在一可实施的方案中,本实施例的编译策略确定模块2包括:
第一判断单元4,用于基于程序特征参数信息判断闭源程序是否涉及签名操作,若不存在,则调用架构信息获取单元6;
其中,闭源程序包括但不限于可执行程序binary。
即在确定某些闭源程序不存在签名问题,则可以区分架构进行编译并发布对应的闭源程序软件包,在保证软件编译效率的同时有效保证非开源代码发布的兼容性。
在一可实施的方案中,编译策略确定模块2包括:
相关度获取单元8,用于获取闭源程序与芯片类型之间的相关度;
第二判断单元9,用于基于程序特征参数信息判断相关度是否达到设定阈值,若是,则获取若干待兼容芯片的芯片信息;
其中,闭源程序包括但不限于通信关联程序modem、系统镜像文件image或预设类别程序。
编译策略确定单元7,用于基于芯片信息,确定不同的芯片信息对应的编译策略;
其中,编译策略对应编译顺序和编译内容。
即在确定某些闭源程序与芯片类型(如Soc1、Soc2、Soc3)强相关时,则区分芯片编译并发布对应的闭源程序软件包,以有效保证非开源代码发布的兼容性。
在一可实施的方案中,第一版本信息获取模块3用于基于开源代码仓库以及非开源代码仓库,采用编译策略对闭源程序进行编译,生成闭源程序对应的第一软件版本信息,以获取闭源程序对应的第一软件包;
本实施例的系统还包括:
第一路径信息确定模块10,用于基于第一软件版本信息,确定闭源程序的第一发布路径信息;
第一软件包发布模块11,用于基于第一发布路径信息对闭源程序对应的第一软件包进行发布。
当需要给下游客户发布特定版本,如该特定版本为与特定芯片相关的工程,根据版本的配置,选择闭源仓库对应的特定芯片下的目录进行发布释放。如若该特定版本与芯片无关,则可以一并释放,下游客户根据需要使用即可。
本实施例中,根据闭源编译产物的特性做不同的处理,即针对不同的闭源程序。例如,结合图6,不同的应用程序apps的package存在签名以及架构差异,可以共用一套规则发布;可执行程序binary不存在签名问题,则可以区分架构进行发布;系统镜像文件images、通信关联程序modems以及其他预设类别的闭源程序,如若与芯片类别强相关,则可以区分芯片发布。
本实施例中,根据闭源编译产物的特性做不同的处理,即针对不同的闭源程序的固有特性,确定与之相适配的编译策略,进而采用编译策略编译对应的闭源程序,以生成用于发布的闭源程序软件包,最终形成非开源代码程序集,解决了非开源代码发布存在的兼容性问题以及二次签名问题,也保证了下游客户版本的制作流程的简化效果。
实施例7
本实施例的软件版本的获取系统基于实施例5或6中的软件版本的获取系统实现。
如图12所示,本实施例的软件版本框架的获取系统包括:
闭源程序集获取模块12,用于获取若干第一软件版本信息的第一软件包构成的闭源程序集;
第二版本信息获取模块13,用于基于开源代码仓库以及闭源程序集,对闭源程序集中的闭源程序执行编译操作,获取第二软件版本信息。
本实施例中,可以将版本发布过程从一对多的关系(开源代码+N个闭源程序包)简化为一对一的关系(即开源代码+非开源代码程序集),编译的软件工程主需要根据实际需求配置所需要的模块,最终完成软件的编译发布打包,该代码编译过程只需要制作一个开源包即可,极大地简化了软件版本的制作流程,有效地提高了软件编译效率;同时解决二次签名问题以及简化下游客户版本的制作流程,极大程度上优化了现有的非开源仓库的代码发布方案,满足了更高的软件开发需求。
实施例8
如图13所示,本实施例的软件版本的获取系统是对实施例7的进一步改进,具体地:
在一可实施例的方案中,本实施例的软件版本的获取系统还包括:
编译结果识别模块14,用于识别出非开源代码仓库中非开源代码编译后的编译结果;
更新模块15,用于在编译结果需要打包至系统镜像文件时,则将对应的编译结果更新至闭源程序集中。
在一可实施例的方案中,本实施例的软件版本的获取系统还包括:
第二路径信息确定模块16,用于基于第二软件版本信息,确定闭源程序的第二发布路径信息;
第二软件包发布模块17,用于基于第二发布路径信息对闭源程序对应的第二软件包进行发布。
下面结合图9,具体说明下游的软件版本包的制作流程:
将平台源代码分为三类:开源仓库、非开源仓库以及非开源程序集仓库。
(1)使用非开源代码仓库和开源代码仓库,编译上游版本并发布至下游;
(2)识别出非开源仓库的编译产物,并从选取出需要打包到系统镜像的编译产物,将这些编译产物同步更新至非开源程序集,保证源代码跟发布下游版本的编译产物的一致性,两者之间无差别;
(3)使用开源仓库跟非开源程序集,构成下游的软件版本包以进行发布。
其中,使用非开源程序集仓库和开源代码仓库,构建下游的软件发布包,不再以开源代码包和N个闭源代码包的方式发布下游软件版本,从而有效地简化下游客户版本的制作流程。
本实施例中,可以将版本发布过程从一对多的关系(开源代码+N个闭源程序包)简化为一对一的关系(即开源代码+非开源代码程序集),编译的软件工程主需要根据实际需求配置所需要的模块,最终完成软件的编译发布打包,该代码编译过程只需要制作一个开源包即可,极大地简化了软件版本的制作流程,有效地提高了软件编译效率;同时解决二次签名问题以及简化下游客户版本的制作流程,极大程度上优化了现有的非开源仓库的代码发布方案,满足了更高的软件开发需求。
实施例9
图14为本发明实施例9提供的一种电子设备的结构示意图。电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述任意一个方法实施例中的方法。图14显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图14所示,电子设备30可以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。
总线33包括数据总线、地址总线和控制总线。
存储器32可以包括易失性存储器,例如随机存取存储器(RAM)321和/或高速缓存存储器322,还可以进一步包括只读存储器(ROM)323。
存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明上述任意一个方法实施例中的方法。
电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图14所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
实施例10
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现上述任意一个方法实施例中的方法中的步骤。
其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现上述任意一个方法实施例中的方法中的步骤。
其中,可以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (15)

1.一种软件版本的获取方法,其特征在于,所述方法应用在基于非开源代码编译的闭源程序中,所述方法包括:
获取所述闭源程序对应的程序特征参数信息;
基于所述程序特征参数信息,确定所述闭源程序对应的编译策略;
其中,不同的所述程序特征参数信息对应不同的所述编译策略;
采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息。
2.如权利要求1所述的软件版本的获取方法,其特征在于,所述基于所述程序特征参数信息,确定所述闭源程序对应的编译策略,包括:
获取若干待兼容架构的架构信息;
基于所述架构信息,确定不同的所述待兼容硬件架构对应的编译策略;
其中,所述编译策略对应编译顺序和编译内容。
3.如权利要求2所述的软件版本的获取方法,其特征在于,所述方法还包括:
基于所述程序特征参数信息判断所述闭源程序是否涉及签名操作,若存在,则获取所述闭源程序对应的签名信息;
所述采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息,包括:
根据所述编译顺序和所述和编译内容执行编译操作,并在每次执行编译操作时采用预编译方式对所述闭源程序的所述签名信息进行更新,以生成所述闭源程序对应的第一软件版本信息。
4.如权利要求3所述的软件版本的获取方法,其特征在于,所述闭源程序包括应用程序或共享库。
5.如权利要求2所述的软件版本的获取方法,其特征在于,所述获取若干待兼容架构的架构信息,之前还包括:
基于所述程序特征参数信息判断所述闭源程序是否涉及签名操作,若不存在,则执行所述获取若干待兼容架构的架构信息的步骤;
其中,所述闭源程序包括可执行程序。
6.如权利要求1所述的软件版本的获取方法,其特征在于,所述基于所述程序特征参数信息,确定所述闭源程序对应的编译策略,包括:
获取所述闭源程序与芯片类型之间的相关度;
基于所述程序特征参数信息判断所述相关度是否达到设定阈值,若是,则获取若干待兼容芯片的芯片信息;
基于所述芯片信息,确定不同的所述芯片信息对应的编译策略;
其中,所述编译策略对应编译顺序和编译内容。
7.如权利要求6所述的软件版本的获取方法,其特征在于,所述闭源程序包括通信关联程序、系统镜像文件或预设类别程序。
8.如权利要求1-7中任一项所述的软件版本的获取方法,其特征在于,所述采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息,包括:
基于开源代码仓库以及非开源代码仓库,采用所述编译策略对所述闭源程序进行编译,生成所述闭源程序对应的所述第一软件版本信息,以获取所述闭源程序对应的第一软件包;
所述生成所述闭源程序对应的第一软件版本信息,之后还包括:
基于所述第一软件版本信息,确定所述闭源程序的第一发布路径信息;
基于所述第一发布路径信息对所述闭源程序对应的第一软件包进行发布。
9.一种软件版本的获取方法,其特征在于,所述方法基于权利要求1-8中任一项所述的软件版本的获取方法实现,所述方法包括:
获取若干第一软件版本信息的第一软件包构成的闭源程序集;
基于开源代码仓库以及所述闭源程序集,对所述闭源程序集中的闭源程序执行编译操作,以获取第二软件版本信息。
10.如权利要求9所述的软件版本的获取方法,其特征在于,所述获取若干第一软件版本信息的第一软件包构成的闭源程序集的步骤之后、所述基于开源代码仓库以及所述闭源程序集,对所述闭源程序集中的闭源程序执行编译操作的步骤之前,还包括:
识别出非开源代码仓库中非开源代码编译后的编译结果;
在所述编译结果需要打包至系统镜像文件时,则将对应的编译结果更新至所述闭源程序集中。
11.如权利要求9所述的软件版本的获取方法,其特征在于,所述获取第二软件版本信息,之后还包括:
基于所述第二软件版本信息,确定所述闭源程序的第二发布路径信息;
基于所述第二发布路径信息对所述闭源程序对应的第二软件包进行发布。
12.一种软件版本框架的获取系统,其特征在于,所述系统应用在基于非开源代码编译的闭源程序中,所述系统包括:
特征参数信息获取模块,用于获取所述闭源程序对应的程序特征参数信息;
编译策略确定模块,用于基于所述程序特征参数信息,确定所述闭源程序对应的编译策略;
其中,不同的所述程序特征参数信息对应不同的所述编译策略;
第一版本信息获取模块,用于采用所述编译策略对所述闭源程序进行编译,以生成所述闭源程序对应的第一软件版本信息。
13.一种软件版本框架的获取系统,其特征在于,所述系统基于权利要求12所述的软件版本的获取系统法实现,所述系统包括:
闭源程序集获取模块,用于获取若干第一软件版本信息的第一软件包构成的闭源程序集;
第二版本信息获取模块,用于基于开源代码仓库以及所述闭源程序集,对所述闭源程序集中的闭源程序执行编译操作,获取第二软件版本信息。
14.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行计算机程序时实现权利要求1-8中任一项所述的软件版本框架的生成方法,或,实现权利要求9-11中任一项所述的软件版本框架的生成方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8中任一项所述的软件版本框架的生成方法,或,实现权利要求9-11中任一项所述的软件版本框架的生成方法。
CN202111406460.0A 2021-11-24 2021-11-24 软件版本的获取方法、系统、电子设备和存储介质 Pending CN114237687A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111406460.0A CN114237687A (zh) 2021-11-24 2021-11-24 软件版本的获取方法、系统、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111406460.0A CN114237687A (zh) 2021-11-24 2021-11-24 软件版本的获取方法、系统、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN114237687A true CN114237687A (zh) 2022-03-25

Family

ID=80751057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111406460.0A Pending CN114237687A (zh) 2021-11-24 2021-11-24 软件版本的获取方法、系统、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114237687A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117033287A (zh) * 2023-10-08 2023-11-10 易方信息科技股份有限公司 基于sdk包的多总线通信方法、系统、设备以及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117033287A (zh) * 2023-10-08 2023-11-10 易方信息科技股份有限公司 基于sdk包的多总线通信方法、系统、设备以及存储介质
CN117033287B (zh) * 2023-10-08 2024-02-13 易方信息科技股份有限公司 基于sdk包的多总线通信方法、系统、设备以及存储介质

Similar Documents

Publication Publication Date Title
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
US11200143B2 (en) Software development framework for a cloud computing platform
US10515205B2 (en) Systems and methods for determining trust levels for computing components
WO2021098148A1 (zh) 一种软件编译方法、装置及电子设备和存储介质
CN106796522B (zh) 用于更新源代码文件的系统和方法
US8887154B2 (en) Systems and methods for partitioning computing applications to optimize deployment resources
US9182949B2 (en) Systems and methods for controlling branch latency within computing applications
US11556348B2 (en) Bootstrapping profile-guided compilation and verification
CN110968437A (zh) 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质
CN106095501B (zh) 一种应用部署方法及装置
CN110995825B (zh) 一种智能合约的发布方法、智能节点设备及存储介质
US20080040725A1 (en) Method and apparatus for a parallel model of tasks including abstracted execution and software development
JP2022545422A (ja) スマートコントラクトの並行実行の方法、装置、機器、及び媒体
CN113127050B (zh) 一种应用资源打包过程监控方法、装置、设备和介质
CN113641503B (zh) 多云多集群的Kubernetes管理系统及方法与设备
CN114237687A (zh) 软件版本的获取方法、系统、电子设备和存储介质
CN107277108B (zh) 一种区块链的节点处的消息处理方法、装置及系统
US20230062336A1 (en) String localization for universal use
EP3835946A1 (en) Unified installer
CN114924742A (zh) 用于虚拟机模拟软件的热补丁制作和应用方法、装置
CN114356379A (zh) 基于备份的服务升级方法、装置、设备及存储介质
EP3999917B1 (en) Method and system for generating a digital representation of asset information in a cloud computing environment
CN117234466B (zh) 企业管理软件开发方法、系统、设备及存储介质
CN114706715B (zh) 一种基于bmc的分布式raid的控制方法、装置、设备及介质
US20230259347A1 (en) Container based generation of inputs for generic functions

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