CN108037927A - 开发包打包方法、系统、可读存储介质和计算机设备 - Google Patents

开发包打包方法、系统、可读存储介质和计算机设备 Download PDF

Info

Publication number
CN108037927A
CN108037927A CN201711485030.6A CN201711485030A CN108037927A CN 108037927 A CN108037927 A CN 108037927A CN 201711485030 A CN201711485030 A CN 201711485030A CN 108037927 A CN108037927 A CN 108037927A
Authority
CN
China
Prior art keywords
source code
file
apmb package
kit
target developing
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.)
Granted
Application number
CN201711485030.6A
Other languages
English (en)
Other versions
CN108037927B (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.)
Umi-Tech Co Ltd
Original Assignee
Umi-Tech 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 Umi-Tech Co Ltd filed Critical Umi-Tech Co Ltd
Priority to CN201711485030.6A priority Critical patent/CN108037927B/zh
Publication of CN108037927A publication Critical patent/CN108037927A/zh
Application granted granted Critical
Publication of CN108037927B publication Critical patent/CN108037927B/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/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Auxiliary Devices For And Details Of Packaging Control (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种开发包打包方法、系统、可读存储介质和计算机设备。所述方法包括:根据接收到的打包命令,查询待打包开发包对应的源代码库,获取对应的源代码;根据打包命令修改源代码中的源文件,得到修改后的源代码;编译修改后的源代码,得到目标开发包文件;获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包。本申请的方案在对开发包打包过程中,根据打包命令修改源代码中的源文件,再将修改后的源代码进行编译,最后根据编译得到的目标开发包文件和对应的配置文件进行打包,无需对开发包进行拆包处理,就实现了在打包过程中对开发包进行修改的配置,确保了开发包的打包效率。

Description

开发包打包方法、系统、可读存储介质和计算机设备
技术领域
本申请涉及计算机编程技术领域,特别是涉及一种开发包打包方法、系统、计算机可读存储介质和计算机设备。
背景技术
随着计算机编程技术的不断发展,软件开发包种类、数量急剧增长。目前,业界盛行将一些开发发布的SDK(Software Development Kit,软件开发工具包)开源托管在Github上,以实现开发包共享。然而,面向非共享的SDK,如商业SDK中,因为涉及到商业机密、SDK安全性、SDK体积大小、SDK变种等等因素,在开发和发布SDK上与共享的SDK开发存在一定差异,默认不支持现自行配置,如文件名修改配置等功能。尤其是在打包发布商业Android(安卓操作系统)平台的SDK时,如果需要在打包时进行SDK包名修改、SDK组件名修改等源文件修改的配置,则需要将SDK进行拆包,再独立进行修改配置,实现过程耗时成本高,效率低。
发明内容
基于此,有必要针对上述问题,提供一种能在打包过程中实现对开发包进行修改配置的开发包打包方法、系统、计算机可读存储介质和计算机设备。
一种开发包打包方法,包括步骤:
根据接收到的打包命令,查询待打包开发包对应的源代码库,获取待打包开发包对应的源代码;
根据打包命令修改源代码中的源文件,得到修改后的源代码;
编译修改后的源代码,获得目标开发包文件;
获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包。
在一个实施例中,源文件包括包名和组件名,根据打包命令修改源代码中的源文件,得到修改后的源代码的步骤包括:
从源代码中提取包名和组件名;
从打包命令中分别提取包名和组件名的修改参数;
根据包名和组件名的修改参数,通过字符匹配分别修改包名和组件名;
将修改后的包名和修改后的组件名导入源代码中,得到修改后的源代码。
在一个实施例中,编译修改后的源代码,获得目标开发包文件的步骤包括:
编译修改后的源代码,得到源代码编译文件,源代码编译文件包括根据修改后的源文件编译得到的目标开发包文件;
从源代码编译文件中依次提取目标开发包文件。
在一个实施例中,获取目标开发包文件对应的配置文件的步骤包括:
提取编译修改后的源代码的步骤中源文件的配置文件,配置文件包括混淆配置文件;
从打包命令中提取源文件的修改参数;
根据修改参数,修改混淆配置文件中源文件,得到目标开发包文件对应的配置文件。
在一个实施例中,源代码库为适配源代码库,对目标开发包文件和目标开发包文件对应的配置文件进行打包的步骤包括:
获取适配源代码库对应的开发包文件,并将开发包文件添加至目标开发包文件中,得到更新后的目标开发包文件;
获取适配源代码库对应的动态链接库文件;
对更新后的目标开发包文件、目标开发包文件对应的配置文件和动态链接库文件进行打包,得到打包后的开发包。
在一个实施例中,源代码库为演示文件代码库,对目标开发包文件和目标开发包文件对应的配置文件进行打包的步骤包括:
对目标开发包文件进行打包,得到可执行演示文件,并将可执行演示文件作为目标开发包文件;
对目标开发包文件和演示文件代码库中的演示文件源代码进行打包,得到打包后的演示文件包。
在一个实施例中,还包括:
查询待打包开发包对应的说明文件代码;
根据打包命令修改说明文件代码中的源文件;
对修改后的说明文件代码进行编译,得到说明文件;
对说明文件进行打包,得到说明文件包,并将说明文件包添加至打包后的开发包中。
一种开发包打包系统,包括:
源代码获取模块,用于根据接收到的打包命令,查询待打包开发包对应的源代码库,获取待打包开发包对应的源代码;
源文件修改模块,用于根据打包命令修改源代码中的源文件,得到修改后的源代码;
编译模块,用于编译修改后的源代码,获得目标开发包文件;
打包模块,用于获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上所述方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述方法的步骤。
上述开发包打包方法、系统、计算机可读存储介质和计算机设备,根据接收到的打包命令查询待打包开发包对应的源代码库,获取待打包开发包对应的源代码,再根据打包命令修改源代码中的源文件,编译修改后的源代码,得到目标开发包文件,最后获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包,从而实现了在打包过程中对开发包进行修改的配置。本申请的方案在进行开发包打包过程中,根据打包命令修改源代码中的源文件,再将修改后的源代码进行编译,最后根据编译得到的目标开发包文件和对应的配置文件进行打包,无需对开发包进行拆包处理,就实现了在打包过程中对开发包进行修改的配置,确保了开发包的打包效率。
附图说明
图1为本申请一实施例中开发包打包方法的流程示意图;
图2为本申请一实施例中根据打包命令修改源代码中的源文件,得到修改后的源代码的步骤流程示意图;
图3为本申请一实施例的开发包打包方法中获取目标开发包文件对应的配置文件的步骤流程示意图;
图4为本申请一实施例中开发包打包系统的结构示意框图。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本申请,并不限定本申请的保护范围。
图1为本申请一实施例中开发包打包方法的流程示意图。如图1所示,本实施例中,开发包打包方法包括步骤:
步骤S101:根据接收到的打包命令,查询待打包开发包对应的源代码库,获取待打包开发包对应的源代码。
在软件开发中,代码编写完成后,需要将开发后的文件和必要的文档打包制成软件开发包,并将开发包发布。打包任务是通过打包命令来执行的,首先接收打包命令,打包命令包括待打包开发包的源代码库信息,通过该打包命令,查询待打包开发包对应的源代码库,源代码库中储存有待打包开发包对应的源代码,从而获得待打包开发包对应的源代码。如对于Android平台的SDK打包,可能需要打包自家SDK的Jar包、打包演示Demo、打包SDK使用说明文档和打包各个聚合SDK的适配Jar包等对象,从而实现Android SDK打包发布。
步骤S103:根据打包命令修改源代码中的源文件,得到修改后的源代码。
获得待打包开发包对应的源代码后,根据打包命令修改源代码中的源文件代码。其中,打包命令可以包括打包参数,具体可以包括打包方式、修改配置参数等信息,修改配置参数可以包括修改文件名、修改文件代码等修改参数;源文件为打包命令中需要修改的文件,可以包括java源代码文件和xml组件文件,更具体的还可以包括包名和组件名。可以通过打包命令修改待打包开发包对应的源代码中的源文件,例如,进行修改包名和组件名等修改配置,得到修改后的源代码。具体实现时,可以先将源代码库中的源代码同步复制至一缓存目录中,在同步过程中,根据打包命令修改源代码中的源文件,并将修改后的源文件导入该缓存目录中,得到修改后的源代码。
步骤S105:编译修改后的源代码,得到目标开发包文件。
编译是指将源语言编写的源代码(高级语言)变成目标程序(计算机可以识别的二进制语言)的过程。对修改后的源代码进行编译,从而得到目标开发包文件。
步骤S107:获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包。
对于开发包,除源代码编译得到的目标开发包文件外,还需要将其对应的配置文件进行打包,如混淆配置文件,从而可以对开发包进行加密,同时也能确保开发包的功能。可以在获得源代码编译后的目标开发包文件后,进一步获取目标开发包文件配置文件,对目标开发包文件和目标开发包文件对应的配置文件进行打包,得到可以发布执行的打包后的开发包。
上述开发包打包方法,根据接收到的打包命令查询待打包开发包对应的源代码库,获取待打包开发包对应的源代码,再根据打包命令修改源代码中的源文件,编译修改后的源代码,得到目标开发包文件,最后获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包,从而实现了在打包过程中对开发包进行修改的配置。本实施例的方案在进行开发包打包过程中,根据打包命令修改源代码中的源文件,再将修改后的源代码进行编译,最后根据编译得到的目标开发包文件和对应的配置文件进行打包,无需对开发包进行拆包处理,就实现了在打包过程中对开发包进行修改的配置,确保了开发包的打包效率。
进一步地,图2为本申请一实施例中根据打包命令修改源代码中的源文件,得到修改后的源代码的步骤流程示意图。本实施例中,源文件包括包名和组件名,根据打包命令修改源代码中的源文件,得到修改后的源代码的步骤可以包括:
步骤S201,从源代码中提取包名和组件名;
步骤S203,从打包命令中分别提取包名和组件名的修改参数;
步骤S205,根据包名和组件名的修改参数,通过字符匹配分别修改包名和组件名;
步骤S207,将修改后的包名和修改后的组件名导入源代码中,得到修改后的源代码。
具体的,源代码中的源文件包括包名和组件名,可以将源代码从源代码库中同步复制到一预设缓存目录中,在同步复制过程中从源代码中提取包名和组件名。从打包命令中分别提取包名和组件名的修改参数,修改参数可以包括修改前的包名和组件名以及修改后的包名和组件名等参数信息。根据包名和组件名的修改参数,通过字符匹配分别修改包名和组件名,可以根据修改前的包名和组件名遍历查询源代码,将匹配的字符替换成修改后的包名和组件名,从而实现对包名和组件名的修改。最后将修改后的包名和修改后的组件名导入源代码中,具体可以对提取出的包名和组件名进行修改,将修改后的包名和组件名导入至一缓存目录中,得到修改后的源代码。
在具体应用中,如对于Android平台的SDK进行打包时,可以通过Android官方提供的LibraryPlugin进行修改操作。LibraryPlugin是Android提供的编译插件,其包括compile${variant}JavaWithJavac任务,该任务执行时能直接编译Java文件为class文件。但通过compile${variant}JavaWithJavac任务将Java文件编译成class文件后,已无法执行包名和组件名的修改操作。所以,可以自定义一个任务sync${variant}JavaSource,并将该自定义任务插入至compile${variant}JavaWithJavac任务之前,通过该任务,可以将准备编译的Java文件同步复制出来,在同步复制过程中,根据打包命令中的修改参数,通过字符串匹配,修改每个Java文件中的原始包名为打包命令传入来的新包名,修改每个Java文件中的组件类名为打包命令传入来的新组件类名,重命名组件类Java文件的名字为打包命令传入来的新组件类名。当任务sync${variant}JavaSource执行完时,在执行compile${variant}JavaWithJavac任务之前,将修改需要编译的Java文件集合原路径为任务sync${variant}JavaSource处理后的Java文件集合路径,那么编译的Java文件就为我们修改包名和组件名后的Java文件,以此实现修改包名和组件名的逻辑。
进一步地,编译修改后的源代码,得到目标开发包文件的步骤可以通过以下形式进行:
编译修改后的源代码,得到源代码编译文件,源代码编译文件包括根据修改后的源文件编译得到的目标开发包文件;
从源代码编译文件中提取目标开发包文件。
具体的,可能并非源代码的所有编译文件都是开发包打包所需的文件,所以,需要从源代码编译文件中提取打包所需的目标开发包文件,如class文件。在编译修改后的源代码,得到源代码编译文件后,从源代码编译文件中提取目标开发包文件,其中,源代码编译文件包括根据修改后的源文件编译得到的目标开发包文件。在具体实现时,可以在编译即将完成时,即编译已完成绝大部分任务时,从源代码编译文件中提取class文件,将其同步至统一缓存目录中,待所有目标产品SDK的源代码库都完成编译工作时,从统一缓存目录中收集所有目标产品SDK库编译后的class文件,打包为一个未混淆的SDK包,再配合其对应的混淆配置文件可以将其打包为混淆的SDK包。
进一步地,图3为本申请一实施例的开发包打包方法中获取目标开发包文件对应的配置文件的步骤流程示意图。如图3所示,本实施例中,获取目标开发包文件对应的配置文件的步骤包括:
步骤S301,提取编译修改后的源代码的步骤中源文件的配置文件,配置文件包括混淆配置文件;
步骤S303,从打包命令中提取源文件的修改参数;
步骤S305,根据修改参数,修改混淆配置文件中源文件,得到目标开发包文件对应的配置文件。
获得目标开发包文件后,还需要获取与其对应的配置文件,才可以将其打包成所需要的开发包。具体的,提取编译修改后的源代码的步骤中源文件的配置文件,配置文件包括混淆配置文件,混淆配置文件用于对代码进行混淆加密处理,以应对反编译,保护代码内容。其中,可以在对修改后的源代码进行编译的过程中,将编译产生的混淆配置文件同步复制至统一缓存目录中,从而获得该混淆配置文件。再从打包命令中提取源文件的修改参数,根据修改参数,修改混淆配置文件中的源文件,得到目标开发包文件对应的配置文件,该配置文件用于打包。具体实现时,可以通过字符匹配对源文件进行修改。对应于源文件的修改,进一步对其对应的配置文件进行修改配置,以确保开发包可以快速实现打包发布。
在具体应用中,如对于Android平台的SDK进行打包的过程中,在编译即将完成时,还同步编译产生的混淆配置文件,并将其复制导入至与class文件所在的相同统一缓存目录中。具体的,LibraryPlugin中包括一bundle${variant}任务,其属于一个打包发布命令。在这个命令执行之前,需要确保之前修改的内容都编译通过,且所有编译任务执行完毕且正确无误,因此可以在这个命令之前插入两个新的任务——sync${variant}ProguardFiles和sync${variant}Classes,分别用于同步混淆配置文件和编译后的class文件。在实际运行时,可以先执行sync${variant}ProguardFiles任务,主要用于同步混淆配置文件(在打包混淆Jar包的时候需要用到这些混淆配置文件),由于混淆配置文件中也写有原始包名和组件名,因此在这个同步过程中,本方案会修改每个混淆配置文件中的原始包名为打包命令传入来的新包名,修改每个混淆配置文件中的组件类名为打包命令传入来的新组件类名。在sync${variant}ProguardFiles任务执行完毕后,继续执行sync${variant}Classes任务,在这个任务中,会收集之前编译好的class文件到统一缓存目录,方便后续指定打包一个未混淆的SDK包。在所有class文件打包为一个未混淆的SDK包后,配合该混淆配置文件,打包为一个混淆后的SDK包。
进一步地,源代码库为适配源代码库,对目标开发包文件和目标开发包文件对应的配置文件进行打包的步骤包括:
获取适配源代码库对应的开发包文件,并将开发包文件添加至目标开发包文件中,得到更新后的目标开发包文件;
获取适配源代码库对应的动态链接库文件;
对更新后的目标开发包文件、目标开发包文件对应的配置文件和动态链接库文件进行打包,得到打包后的开发包。
开发包打包可能不仅仅打包自家的开发包,也可以打包第三方的聚合开发包中的指定开发包,而对于第三方的聚合开发包,可能无法得知其内部的具体代码,而只需要通过适配代码进行调用即可。具体的,在源代码库为适配源代码库时,获取适配源代码库对应的开发包文件,并将开发包文件添加至目标开发包文件中,得到更新后的目标开发包文件。当待打包开发包为第三方聚合开发包时,获取适配源代码库对应的开发包文件,将其添加至至目标开发包文件中。再获取适配源代码库对应的动态链接库文件,动态链接库文件用于实现动态链接,具体可以包括so文件。最后对更新后的目标开发包文件、目标开发包文件对应的配置文件和动态链接库文件进行打包,得到打包后的开发包。对于第三方聚合开发包的打包,需要将动态链接库文件和第三方聚合开发包的源代码同时添加进行打包,以实现调用。
在具体应用中,如在Android平台的SDK进行打包的过程中,在打包第三方聚合SDK的Jar包时,其中,第三方聚合SDK定义如下:一般而言,业界上存在多个类似功能的SDK,而本方案支持自家研发的SDK能集成其他类似功能的第三方SDK,以减少开发者加入SDK时间成本。在这个前提下,需要实现集成,一般需要一个对每个第三方SDK实现一个桥接接口,以调用他们,而在打包这些第三方聚合SDK的时候,一般需要打包如下桥接接口和第三方SDK原有内容。具体的,根据预先确立好的打包命令,判断需要打包哪些聚合SDK的适配源代码库的代码,在执行本任务时,首先找出需要打包的聚合平台SDK所在适配源代码库,匹配到后,对每一个源代码库单独编译,在编译的过程中修改包名和组件名,编译快完成时,复制编译过程中产生的关键产物(包括编译后的class文件、本库所用到的第三方Jar包和处理后的混淆配置文件等)到统一缓存目录,每个聚合平台SDK单独打包一个未混淆SDK包,配合该库的混淆配置文件,再打包为混淆SDK包,最后将该混淆Jar包以及第三方SDK中还需要的so文件复制到输出目录。此操作遍历每一个匹配到的聚合SDK,这样一来,需要打包多少个聚合平台SDK,就产生多少个聚合SDK输出目录(目录中有混淆Jar包以及所需so文件)。最后在开发者交互接入使用时,开发者可以根据自己需要,选择所需要的聚合SDK即可,可以极大减低嵌入的SDK体积。
进一步地,源代码库为演示文件代码库,对目标开发包文件和目标开发包文件对应的配置文件进行打包的步骤包括:
对目标开发包文件进行打包,得到可执行演示文件,并将可执行演示文件作为目标开发包文件;
对目标开发包文件和演示文件代码库中的演示文件源代码进行打包,得到打包后的演示文件包。
除上述打包内容外,还可能需要对产品的演示文件进行打包。具体的,源代码库为演示文件代码库时,对目标开发包文件进行打包,得到可执行演示文件,并将可执行演示文件作为目标开发包文件,对目标开发包文件和演示文件代码库中的演示文件源代码进行打包,得到打包后的演示文件包。
在具体应用中,如在Android平台的SDK进行打包的过程中,在打包演示Demo时,先根据打包命令,先查找本次需要打包的产品集合所对应的演示Demo(每个产品对应一个演示Demo),然后对每一个匹配到的演示Demo执行以下步骤:
1、将演示Demo同步到缓存目录,在同步过程中,通过字符串匹配修改每个Java文件中的原始包名为打包命令传入来的新包名,修改每个Java文件中的组件类名为打包命令传入来的新组件类名,修改AndroidManifest.xml文件中的所配置的SDK组件配置信息中的包名和组件名为打包命令传入来的新包名和新组件类名;
2、同步完毕后,对缓存目录中的Demo演示项目进行编译打包Apk(AndroidPackage的缩写,即Android安装包)操作;
3、打包Apk操作完毕后,将Demo源代码和打包输出的Apk文件进行复制到输出目录,得到打包后的开发包。
进一步地,本申请的开发包打包方法还可以包括:
查询待打包开发包对应的说明文件代码;
根据打包命令修改说明文件代码中的源文件;
对修改后的说明文件代码进行编译,得到说明文件;
对说明文件进行打包,得到说明文件包,并将说明文件包添加至打包后的开发包中。
打包命名还可能需要对产品的说明文件进行打包,具体的,根据接收到的打包命令,或根据待打包开发包查询待打包开发包对应的说明文件代码,再根据打包命令修改说明文件代码中的源文件,对修改后的说明文件代码进行编译,得到说明文件,最后对说明文件进行打包,得到说明文件包,并将说明文件包添加至打包后的开发包中。通过将说明文件打包添加至打包后的开发包中,可以将开发包对应的说明文档配置到打包后的开发包中,以便使用。
在具体应用中,如在Android平台的SDK进行打包的过程中,在打包SDK使用说明文档时,本方案根据打包命令,先查找本次需要打包的产品集合所需要的使用说明文档(每个产品对应一个使用说明文档),然后对每一个匹配到的使用说明文档,执行以下步骤:
1、将说明文档同步到缓存目录,在同步过程中,会通过字符串匹配修改原始文档文件中涉及到的代码内容的原始包名为打包命令传入来的新包名,修改原始文档文件中涉及到的代码内容的组件类名为打包命令传入来的新组件类名,修改原始文档文件中涉及到的代码内容的混淆配置为打包命令传入来的新包名和新组件类名;
2、同步完毕后,对缓存目录中的文档项目进行编译、发布操作,输出网页格式的文档;
3、将网页格式的文档复制到输出目录,得到打包后的开发包。
基于此,本申请还提供一种开发包打包系统。
图4为本申请一实施例中开发包打包系统的结构示意框图。如图4所示,本实施例中,开发包打包系统包括:
源代码获取模块401,用于根据接收到的打包命令,查询待打包开发包对应的源代码库,获取待打包开发包对应的源代码;
源文件修改模块403,用于根据打包命令修改源代码中的源文件,得到修改后的源代码;
编译模块405,用于编译修改后的源代码,得到目标开发包文件;
打包模块407,用于获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包。
上述开发包打包系统,通过源代码获取模块根据接收到的打包命令查询待打包开发包对应的源代码库,获取待打包开发包对应的源代码,再根据打包命令修改源代码中的源文件,编译修改后的源代码,得到目标开发包文件,最后获取目标开发包文件对应的配置文件,并对目标开发包文件和配置文件进行打包,得到打包后的开发包,从而实现了在打包过程中对开发包进行修改的配置。本实施例的方案在进行开发包打包过程中,根据打包命令修改源代码中的源文件,再将修改后的源代码进行编译,最后根据编译得到的目标开发包文件和对应的配置文件进行打包,无需对开发包进行拆包处理,就实现了在打包过程中对开发包进行修改的配置,确保了开发包的打包效率。
基于上述开发包打包方法和系统,本申请还提供一种计算机可读存储介质和一种计算机设备。
在一个实施例中,本申请的计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上所述开发包打包方法的步骤。
在一个实施例中,本申请的计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述开发包打包方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种开发包打包方法,其特征在于,包括步骤:
根据接收到的打包命令,查询待打包开发包对应的源代码库,获取所述待打包开发包对应的源代码;
根据所述打包命令修改所述源代码中的源文件,得到修改后的源代码;
编译所述修改后的源代码,获得目标开发包文件;
获取所述目标开发包文件对应的配置文件,并对所述目标开发包文件和所述配置文件进行打包,得到打包后的开发包。
2.根据权利要求1所述的方法,其特征在于,所述源文件包括包名和组件名,所述根据所述打包命令修改所述源代码中的源文件,得到修改后的源代码的步骤包括:
从所述源代码中提取所述包名和所述组件名;
从所述打包命令中分别提取所述包名和所述组件名的修改参数;
根据所述包名和所述组件名的修改参数,通过字符匹配分别修改所述包名和所述组件名;
将修改后的包名和修改后的组件名导入所述源代码中,得到修改后的源代码。
3.根据权利要求1所述的方法,其特征在于,所述编译所述修改后的源代码,获得目标开发包文件的步骤包括:
编译所述修改后的源代码,得到源代码编译文件,所述源代码编译文件包括根据修改后的源文件编译得到的目标开发包文件;
从所述源代码编译文件中提取所述目标开发包文件。
4.根据权利要求3所述的方法,其特征在于,所述获取所述目标开发包文件对应的配置文件的步骤包括:
提取所述编译所述修改后的源代码的步骤中所述源文件的配置文件,所述配置文件包括混淆配置文件;
从所述打包命令中提取所述源文件的修改参数;
根据所述修改参数,修改所述混淆配置文件中所述源文件,得到所述目标开发包文件对应的配置文件。
5.根据权利要求1所述的方法,其特征在于,所述源代码库为适配源代码库,所述对所述目标开发包文件和所述目标开发包文件对应的配置文件进行打包的步骤包括:
获取所述适配源代码库对应的开发包文件,并将所述开发包文件添加至所述目标开发包文件中,得到更新后的目标开发包文件;
获取所述适配源代码库对应的动态链接库文件;
对所述更新后的目标开发包文件、所述目标开发包文件对应的配置文件和所述动态链接库文件进行打包,得到所述打包后的开发包。
6.根据权利要求1所述的方法,其特征在于,所述源代码库为演示文件代码库,所述对所述目标开发包文件和所述目标开发包文件对应的配置文件进行打包的步骤包括:
对所述目标开发包文件进行打包,得到可执行演示文件,并将所述可执行演示文件作为所述目标开发包文件;
对所述目标开发包文件和所述演示文件代码库中的演示文件源代码进行打包,得到打包后的演示文件包。
7.根据权利要求1所述的方法,其特征在于,还包括:
查询所述待打包开发包对应的说明文件代码;
根据所述打包命令修改所述说明文件代码中的源文件;
对修改后的说明文件代码进行编译,得到说明文件;
对所述说明文件进行打包,得到说明文件包,并将所述说明文件包添加至所述打包后的开发包中。
8.一种开发包打包系统,其特征在于,包括:
源代码获取模块,用于根据接收到的打包命令,查询待打包开发包对应的源代码库,获取所述待打包开发包对应的源代码;
源文件修改模块,用于根据所述打包命令修改所述源代码中的源文件,得到修改后的源代码;
编译模块,用于编译所述修改后的源代码,获得目标开发包文件;
打包模块,用于获取所述目标开发包文件对应的配置文件,并对所述目标开发包文件和所述配置文件进行打包,得到打包后的开发包。
9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
CN201711485030.6A 2017-12-29 2017-12-29 开发包打包方法、系统、可读存储介质和计算机设备 Active CN108037927B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711485030.6A CN108037927B (zh) 2017-12-29 2017-12-29 开发包打包方法、系统、可读存储介质和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711485030.6A CN108037927B (zh) 2017-12-29 2017-12-29 开发包打包方法、系统、可读存储介质和计算机设备

Publications (2)

Publication Number Publication Date
CN108037927A true CN108037927A (zh) 2018-05-15
CN108037927B CN108037927B (zh) 2020-10-30

Family

ID=62099149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711485030.6A Active CN108037927B (zh) 2017-12-29 2017-12-29 开发包打包方法、系统、可读存储介质和计算机设备

Country Status (1)

Country Link
CN (1) CN108037927B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804083A (zh) * 2018-05-23 2018-11-13 有米科技股份有限公司 一种代码操作方法及装置
CN109542463A (zh) * 2018-10-26 2019-03-29 深圳壹账通智能科技有限公司 编译文件包发送方法、装置、计算机设备及存储介质
CN109656616A (zh) * 2018-11-26 2019-04-19 平安科技(深圳)有限公司 一种基于事务处理过程优化的打包方法、系统及电子设备
CN110147227A (zh) * 2018-07-06 2019-08-20 杭州涂鸦信息技术有限公司 一种用于技能配置的程序安装包生成方法及系统
CN110941443A (zh) * 2019-12-12 2020-03-31 支付宝(杭州)信息技术有限公司 修改sdk中文件名的方法、装置及电子设备
CN111083054A (zh) * 2019-11-15 2020-04-28 浙江大搜车软件技术有限公司 路由配置处理方法、装置、计算机设备和存储介质
CN111694597A (zh) * 2020-06-09 2020-09-22 上海米哈游天命科技有限公司 一种中断修复方法、装置、设备及介质
CN112035163A (zh) * 2020-09-03 2020-12-04 北京字节跳动网络技术有限公司 软件开发包配置方法、设备和存储介质
CN112083953A (zh) * 2020-08-26 2020-12-15 武汉普利商用机器有限公司 Android应用程序构建方法及装置
CN112272820A (zh) * 2018-07-30 2021-01-26 欧姆龙株式会社 支持装置以及支持程序
CN112579470A (zh) * 2020-12-29 2021-03-30 中国科学院计算机网络信息中心 一种软件动态库调试的编译链接方法及系统
CN112860285A (zh) * 2019-11-12 2021-05-28 深圳怡化电脑股份有限公司 金融自助设备的sp升级包生成方法、装置及计算机设备
CN112965721A (zh) * 2021-02-26 2021-06-15 平安壹钱包电子商务有限公司 基于Android的项目编译方法、装置、计算机设备及存储介质
CN113110841A (zh) * 2020-01-13 2021-07-13 奇安信科技集团股份有限公司 移动应用程序生成方法、装置、电子设备及存储介质
CN113157317A (zh) * 2021-05-24 2021-07-23 北京字节跳动网络技术有限公司 一种开发包发布的方法、装置、计算机设备和存储介质
CN113342400A (zh) * 2021-06-29 2021-09-03 上海哔哩哔哩科技有限公司 离线包打包方法、装置及计算机设备
CN114115982A (zh) * 2021-12-02 2022-03-01 建信金融科技有限责任公司 代码发布方法、装置、设备及存储介质
CN112965721B (zh) * 2021-02-26 2024-07-02 平安壹钱包电子商务有限公司 基于Android的项目编译方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838572A (zh) * 2013-12-20 2014-06-04 北京掌阔技术有限公司 一种安卓开发包的打包系统和方法
US8997090B2 (en) * 2012-03-26 2015-03-31 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Installing an operating system in a host system
CN106201522A (zh) * 2016-07-12 2016-12-07 杭州华三通信技术有限公司 一种打包方法及装置
CN106843962A (zh) * 2017-01-19 2017-06-13 北京乐盟互动科技有限公司 一种应用打包方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997090B2 (en) * 2012-03-26 2015-03-31 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Installing an operating system in a host system
CN103838572A (zh) * 2013-12-20 2014-06-04 北京掌阔技术有限公司 一种安卓开发包的打包系统和方法
CN106201522A (zh) * 2016-07-12 2016-12-07 杭州华三通信技术有限公司 一种打包方法及装置
CN106843962A (zh) * 2017-01-19 2017-06-13 北京乐盟互动科技有限公司 一种应用打包方法及装置

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804083B (zh) * 2018-05-23 2022-01-11 有米科技股份有限公司 一种代码操作方法及装置
CN108804083A (zh) * 2018-05-23 2018-11-13 有米科技股份有限公司 一种代码操作方法及装置
CN110147227A (zh) * 2018-07-06 2019-08-20 杭州涂鸦信息技术有限公司 一种用于技能配置的程序安装包生成方法及系统
CN112272820B (zh) * 2018-07-30 2023-09-08 欧姆龙株式会社 支持装置以及支持程序的记录介质
CN112272820A (zh) * 2018-07-30 2021-01-26 欧姆龙株式会社 支持装置以及支持程序
CN109542463A (zh) * 2018-10-26 2019-03-29 深圳壹账通智能科技有限公司 编译文件包发送方法、装置、计算机设备及存储介质
CN109656616A (zh) * 2018-11-26 2019-04-19 平安科技(深圳)有限公司 一种基于事务处理过程优化的打包方法、系统及电子设备
CN112860285A (zh) * 2019-11-12 2021-05-28 深圳怡化电脑股份有限公司 金融自助设备的sp升级包生成方法、装置及计算机设备
CN112860285B (zh) * 2019-11-12 2024-05-10 深圳怡化电脑股份有限公司 金融自助设备的sp升级包生成方法、装置及计算机设备
CN111083054A (zh) * 2019-11-15 2020-04-28 浙江大搜车软件技术有限公司 路由配置处理方法、装置、计算机设备和存储介质
CN111083054B (zh) * 2019-11-15 2021-11-30 浙江大搜车软件技术有限公司 路由配置处理方法、装置、计算机设备和存储介质
CN110941443A (zh) * 2019-12-12 2020-03-31 支付宝(杭州)信息技术有限公司 修改sdk中文件名的方法、装置及电子设备
CN113110841A (zh) * 2020-01-13 2021-07-13 奇安信科技集团股份有限公司 移动应用程序生成方法、装置、电子设备及存储介质
CN111694597A (zh) * 2020-06-09 2020-09-22 上海米哈游天命科技有限公司 一种中断修复方法、装置、设备及介质
CN112083953A (zh) * 2020-08-26 2020-12-15 武汉普利商用机器有限公司 Android应用程序构建方法及装置
CN112035163A (zh) * 2020-09-03 2020-12-04 北京字节跳动网络技术有限公司 软件开发包配置方法、设备和存储介质
CN112035163B (zh) * 2020-09-03 2023-08-22 抖音视界有限公司 软件开发包配置方法、设备和存储介质
CN112579470A (zh) * 2020-12-29 2021-03-30 中国科学院计算机网络信息中心 一种软件动态库调试的编译链接方法及系统
CN112579470B (zh) * 2020-12-29 2022-08-30 中国科学院计算机网络信息中心 一种软件动态库调试的编译链接方法及系统
CN112965721A (zh) * 2021-02-26 2021-06-15 平安壹钱包电子商务有限公司 基于Android的项目编译方法、装置、计算机设备及存储介质
CN112965721B (zh) * 2021-02-26 2024-07-02 平安壹钱包电子商务有限公司 基于Android的项目编译方法、装置、计算机设备及存储介质
CN113157317B (zh) * 2021-05-24 2024-04-19 抖音视界有限公司 一种开发包发布的方法、装置、计算机设备和存储介质
CN113157317A (zh) * 2021-05-24 2021-07-23 北京字节跳动网络技术有限公司 一种开发包发布的方法、装置、计算机设备和存储介质
CN113342400A (zh) * 2021-06-29 2021-09-03 上海哔哩哔哩科技有限公司 离线包打包方法、装置及计算机设备
CN114115982A (zh) * 2021-12-02 2022-03-01 建信金融科技有限责任公司 代码发布方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN108037927B (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN108037927A (zh) 开发包打包方法、系统、可读存储介质和计算机设备
CN108595921B (zh) 一种源代码中字符串的混淆方法和装置
CN102902529B (zh) 用于管理数据源的方法和系统
CN103559449B (zh) 一种代码改动的检测方法及装置
CN104714788B (zh) 一种软件安装包自动生成的方法及装置
US10592220B2 (en) Metadata-driven binding of converted source code to original source code
WO2008099215A1 (en) Improvements in or relating to component-based development
CN103885770A (zh) 单片机从可执行文件找回汇编文件的实现方法
CN103677778B (zh) 一种CAP文件Classref常量的解析方法
CN108197440A (zh) 一种代码混淆方法、设备及计算机可读存储介质
CN116627429B (zh) 一种汇编代码生成方法、装置及电子设备和存储介质
Fritsche et al. Efficient model synchronization by automatically constructed repair processes
CN115756451A (zh) 一种多项目代码文件重用的方法、装置、设备、存储介质
Svendsen et al. Transfinite step-indexing: Decoupling concrete and logical steps
Dunglas Persistence in PHP with the Doctrine ORM
Vacchi et al. Neverlang 2: a framework for modular language implementation
CN109947711A (zh) 一种对ios项目开发过程中的多语言文件自动化管理方法
Franky et al. Improving implementation of code generators: A regular-expression approach
Buchmann et al. On a-posteriori integration of ecore models and hand-written java code
US8185885B2 (en) Providing recovery data for program code
CN109960497A (zh) 一种脚本文件间的调用方法及装置
CN105843661B (zh) 一种面向主机系统的代码重定位方法及其系统
CN114816435A (zh) 一种基于逆向技术的软件开发方法
CN107463423A (zh) 依赖包工具的验证方法、存储介质、电子设备及系统
CN104380250B (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