CN116755713A - 应用程序的生成方法、装置、设备及存储介质 - Google Patents
应用程序的生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116755713A CN116755713A CN202311030159.3A CN202311030159A CN116755713A CN 116755713 A CN116755713 A CN 116755713A CN 202311030159 A CN202311030159 A CN 202311030159A CN 116755713 A CN116755713 A CN 116755713A
- Authority
- CN
- China
- Prior art keywords
- file
- application program
- preset
- parameters
- target
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000012545 processing Methods 0.000 claims abstract description 56
- 238000013507 mapping Methods 0.000 claims abstract description 18
- 230000007246 mechanism Effects 0.000 claims abstract description 18
- 238000013500 data storage Methods 0.000 claims description 15
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 238000002372 labelling Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 238000012360 testing method Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims 2
- 238000007726 management method Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 12
- 239000000306 component Substances 0.000 description 11
- 238000009434 installation Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000007613 environmental effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及软件编译技术领域,公开了一种应用程序的生成方法、装置、设备及存储介质。本方法包括:通过根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
Description
技术领域
本发明涉及软件编译技术领域,尤其涉及一种应用程序的生成方法、装置、设备及存储介质。
背景技术
安卓安装包(Android package APK)是一种安卓操作系统的应用程序安装文件格式,在现有的软件编译技术领域,安卓应用的程序代码必须先进行编译,然后被打包成为安卓APK文件,并发送到安卓的各个应用市场上,即各个渠道。当软件开发商将应用发布到多个渠道时,需要对在渠道中运行的应用的用户量等数据进行统计分析,因此有必要预先将有关渠道的渠道信息写入安卓APK文件,即对安卓APK文件进行多渠道打包,带有渠道信息的APK文件安装后,应用运行时将渠道信息和采集的用户量等数据发送给软件开发商。
传统的多渠道打包技术依赖于APK提供的AndroidManifest文件,在AndroidManifest文件中写入渠道信息,如渠道名,然后对更改后的AndroidManifest文件重新编译打包,当渠道数量较多时,导致打包速度慢,效率低。
发明内容
本发明的主要目的是通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
本发明第一方面提供了一种应用程序的生成方法,包括:接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,其中,所述待修改参数包括接口选项、测试开关、缓存开关和应用程序安装包名称;确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件;根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对所述第二应用程序进行对齐处理,得到所述目标应用程序。
可选地,在本发明第一方面的第一种实现方式中,所述接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,包括:接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件;对所述配置数据和所述默认参数文件进行解析,得到所述初始应用程序的所有目标参数;对所述目标参数进行标注,得到与所述目标参数相关联的标识符;基于所述标识符,从预设参数数据库中读取响应的参数值,并基于所述参数值确定初始应用程序的待修改参数。
可选地,在本发明第一方面的第二种实现方式中,所述确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件,包括:获取与所述初始应用程序对应运行环境匹配的系统库文件;对所述初始应用程序和所述系统库文件进行解析,得到所述初始应用程序的可执行文件;基于预设反编译应用对所述可执行文件进行反编译,得到所述可执行文件的中间文件。
可选地,在本发明第一方面的第三种实现方式中,所述基于预设反编译应用对所述可执行文件进行反编译,得到所述可执行文件的中间文件,包括:确定所述可执行文件的文件结构,根据预设文件结构确定所述可执行文件携带的标识符;根据所述标识符和预设指令格式文档对所述可执行文件进行反编译,生成源代码;基于预设数据存储结构创建反编译文件结构,将所述源代码存储至所述反编译文件结构中,得到所述可执行文件的中间文件。
可选地,在本发明第一方面的第四种实现方式中,所述根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件,包括:基于预设脚本确定所述中间文件中相应的参数的位置数据;根据所述位置数据查找所述中间文件需要进行替换的参数对应的目标参数值;基于预设渠道列表文件中获取目标渠道的渠道信息;根据所述目标参数值和所述渠道信息对所述中间文件中的参数进行更新,得到得到带有渠道信息的源文件。
可选地,在本发明第一方面的第五种实现方式中,所述基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序,包括:基于Apktool和预设的编译规则对所述源文件进行重新编译,得到认证文件;根据apksigner工具和预设签名规则对所述认证文件进行签名处理,得到签名文件;将所述源文件、所述认证文件以及所述签名文件进行打包处理,生成带有签名的第二应用程序。
可选地,在本发明第一方面的第六种实现方式中,所述基于Apktool和预设的编译规则对所述源文件进行重新编译,得到认证文件,包括:基于Apktool从所述源文件中提取待编译数据,基于所述待编译数据构建对应的数据结构;基于所述数据结构和预设的编译规则对所述源文件进行编译,生成源码文件;确定所述源码文件的文件描述信息,基于所述源码文件和所述文件描述信息,生成所述源文件进行编译后得到认证文件。
本发明第二方面提供了一种应用程序的生成装置,包括:确定模块,用于接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,其中,所述待修改参数包括接口选项、测试开关、缓存开关和应用程序安装包名称;反编译模块,用于确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件;更新模块,用于根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件;编译模块,用于基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序;对齐模块,用于通过对齐工具和预设内存映射机制对所述第二应用程序进行对齐处理,得到所述目标应用程序。
可选地,在本发明第二方面的第一种实现方式中,所述确定模块具体用于:接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件;对所述配置数据和所述默认参数文件进行解析,得到所述初始应用程序的所有目标参数;对所述目标参数进行标注,得到与所述目标参数相关联的标识符;基于所述标识符,从预设参数数据库中读取响应的参数值,并基于所述参数值确定初始应用程序的待修改参数。
可选地,在本发明第二方面的第二种实现方式中,所述反编译模块包括:确定单元,用于确定所述可执行文件的文件结构,根据预设文件结构确定所述可执行文件携带的标识符;反编译单元,用于根据所述标识符和预设指令格式文档对所述可执行文件进行反编译,生成源代码;存储单元,用于基于预设数据存储结构创建反编译文件结构,将所述源代码存储至所述反编译文件结构中,得到所述可执行文件的中间文件。
可选地,在本发明第二方面的第三种实现方式中,所述反编译单元具体用于:确定所述可执行文件的文件结构,根据预设文件结构确定所述可执行文件携带的标识符;根据所述标识符和预设指令格式文档对所述可执行文件进行反编译,生成源代码;基于预设数据存储结构创建反编译文件结构,将所述源代码存储至所述反编译文件结构中,得到所述可执行文件的中间文件。
可选地,在本发明第二方面的第四种实现方式中,所述更新模块具体用于:基于预设脚本确定所述中间文件中相应的参数的位置数据;根据所述位置数据查找所述中间文件需要进行替换的参数对应的目标参数值;基于预设渠道列表文件中获取目标渠道的渠道信息;根据所述目标参数值和所述渠道信息对所述中间文件中的参数进行更新,得到得到带有渠道信息的源文件。
可选地,在本发明第二方面的第五种实现方式中,所述编译模块包括:
编译单元,用于基于Apktool和预设的编译规则对所述源文件进行重新编译,得到认证文件;签名单元,用于根据apksigner工具和预设签名规则对所述认证文件进行签名处理,得到签名文件;打包单元,用于将所述源文件、所述认证文件以及所述签名文件进行打包处理,生成带有签名的第二应用程序。
可选地,在本发明第二方面的第六种实现方式中,所述编译单元具体用于:基于Apktool从所述源文件中提取待编译数据,基于所述待编译数据构建对应的数据结构;基于所述数据结构和预设的编译规则对所述源文件进行编译,生成源码文件;确定所述源码文件的文件描述信息,基于所述源码文件和所述文件描述信息,生成所述源文件进行编译后得到认证文件。
本发明第三方面提供了一种应用程序的生成设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述应用程序的生成设备执行上述的应用程序的生成方法的各个步骤。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的应用程序的生成方法的各个步骤。
本发明提供的技术方案中,通过根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
附图说明
图1为本发明提供的应用程序的生成方法的第一个实施例示意图;
图2为本发明提供的应用程序的生成方法的第二个实施例示意图;
图3为本发明提供的应用程序的生成方法的第三个实施例示意图;
图4为本发明提供的应用程序的生成装置的第一个实施例示意图;
图5为本发明提供的应用程序的生成装置的第二个实施例示意图;
图6为本发明提供的应用程序的生成设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种应用程序的生成方法、装置、设备及存储介质,本发明的技术方案中,首先通过根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中应用程序的生成方法的第一个实施例包括:
101、接收需要生成的目标应用程序的配置数据和与配置数据对应的默认参数文件,根据配置数据和默认参数文件确定初始应用程序的待修改参数;
本实施例中,所述目标应用程序具体是指:将应用程序源码文件以及应用程序源码文件所直接或者间接引用的一个或者多个系统库文件共同进行编译后,所得到的可执行文件。其中,所述目标应用程序中的应用程序源码文件的数量可以为一个或者多个,所述目标应用程序中的系统库文件的数量可以为一个或者多个。
该目标应用程序可以为APK(Android application package,Android应用程序安装包),也可以为java应用程序安装包等。所述目标应用程序一般为:包括若干个jar文件或者可执行文件(与jar文件具有相互转换关系)的文件集合。
在一个具体的实施例中,现有1.java、2.java、…、10086.Java等多个应用程序源码文件,以及A.jar、B.jar以及C.jar三个系统库文件共同参与编译,编译完成后,可以得到若干个jar文件或者可执行文件共同构成目标应用程序。
接收需要生成的目标应用程序的配置数据和与配置数据对应的默认参数文件;对配置数据和默认参数文件进行解析,得到初始应用程序的所有目标参数;对目标参数进行标注,得到与目标参数相关联的标识符;基于标识符,从预设参数数据库中读取响应的参数值,并基于参数值确定初始应用程序的待修改参数。
具体地,应用程序通常包括一些配置文件和参数,配置文件例如包括一个图片,图片格式例如为“.PNG”格式的图片,该种图片本身是透明的,通过对图片设置一些参数,可以将图片作为应用程序的图标ICON来使用。当然,应用程序的配置文件和参数还可以包括其他内容。对配置数据和默认参数文件进行解析,确定应用程序代码中需要从参数数据库读取参数值的所有参数,并将其作为目标参数;在所述应用程序代码中为各个目标参数加上参数配置标注,其中所述参数配置标注指示与其相关联的参数的标识符,参数类型以及加载方式;在所述应用程序代码运行后基于所述参数配置标注从所述参数数据库读取相应的参数值以赋值给所述目标参数。
进一步地,对目标参数进行标注,将所述应用程序代码中存在的指示加载方式为“启动时加载”的参数配置标注传送到所述参数管理及配置单元;将标注过的标识符通过所述参数管理及配置单元解析接收到的参数配置标注以便获得所述参数配置标注的标识符,得到与目标参数相关联的标识符。
本实施例中,所述反编译:全称是计算机软件反向工程(Reverse engineering),也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。高级语言源程序经过编译变成可执行文件,反编译就是逆过程。
具体地,API(Application Programming Interface,应用程序接口):是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问原码,或理解内部工作机制的细节。
102、确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到中间文件;
本实施例中,获取与初始应用程序对应运行环境匹配的系统库文件;对初始应用程序和系统库文件进行解析,得到初始应用程序的可执行文件;确定可执行文件的文件结构,根据预设文件结构确定可执行文件携带的标识符;根据标识符和预设指令格式文档对可执行文件进行反编译,生成源代码;基于预设数据存储结构创建反编译文件结构,将源代码存储至反编译文件结构中,得到可执行文件的中间文件。
进一步地,所述系统库文件,是指被应用程序源码文件所直接或者间接引用的系统库文件。如前所述,上述至少一个系统库文件中存在对象引用。终端对应用程序的安装文件进行解压,得到多个解压文件,然后从多个解压文件中识别得到应用程序的可执行文件。终端可以基于安装文件的类型,来确定该安装文件对应的可执行文件的文件类型,然后基于可执行文件的文件类型,从多个解压文件中找到文件类型与可执行文件的文件类型一致的文件,作为应用程序的可执行文件。具体地,终端将一个应用程序的目标应用程序进行解压,得到多个解压文件,解压文件可以包括但不限于可执行文件、so文件、arsc文件和xml文件等。终端基于应用程序的目标应用程序的类型,确定目标应用程序对应的可执行文件的类型为可执行文件。
本实施例中,基于预设数据存储结构创建反编译文件结构,将源代码存储至反编译文件结构中,具体地,组件通过SDK(Software Development Kit,软件开发工具包)编译后得到动态链接库文件。终端可以通过获取动态链接库文件的文件名来获得接入应用程序的组件名。
103、根据待修改参数,对中间文件对应的参数进行更新,得到带有渠道信息的源文件;
本实施例中,基于预设脚本确定中间文件中相应的参数的位置数据;根据位置数据查找中间文件需要进行替换的参数对应的目标参数值;基于预设渠道列表文件中获取目标渠道的渠道信息;根据目标参数值和渠道信息对中间文件中的参数进行更新,得到得到带有渠道信息的源文件。
具体地,利用脚本将环境参数替换所述应用程序段中相应的参数,用户可以根据自己的需要,在jenkins平台的源码管理中选择不同的源码管理工具下载相应的应用程序段,所述应用程序段为应用程序代码,源码管理工具如svn,git等。在参数配置过程中,点击“添加参数”选项并出现下拉菜单,根据下拉菜单选择各种参数配置类型,如choice类型、bool类型或者string类型等等,根据所选择的参数配置类型进行环境参数的配置环节。
进一步地,在配置完环境参数之后,且在测试软件包打包之前在所述jenkins平台上选择环境参数,并将所选择的环境参数直接传递至shell脚本中;具体的,通过配置执行shell脚本,将所配置的环境参数传入shell脚本中,根据目标参数值和渠道信息对中间文件中的参数进行更新,得到得到带有渠道信息的源文件。
104、基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;
本实施例中,基于Apktool从源文件中提取待编译数据,基于待编译数据构建对应的数据结构;基于数据结构和预设的编译规则对源文件进行编译,生成源码文件;确定源码文件的文件描述信息,基于源码文件和文件描述信息,生成源文件进行编译后得到认证文件;根据apksigner工具和预设签名规则对认证文件进行签名处理,得到签名文件;将源文件、认证文件以及签名文件进行打包处理,生成带有签名的第二应用程序。
具体地,所述源码文件可以指基于LLVM IR生成的文件,在一个可能的实现方式中,终端可以通过机器码生成模块基于LLVM IR来生成该源码文件。确定用于对所述中间文件所包括的信息内容进行描述的文件描述信息,基于所述源码文件和所述文件描述信息,生成对所述源文件进行编译后得到认证文件。
进一步地,也可以通过同样的方法提炼应用文件中的其他部分作为认证文件。使用类似上述生成认证文件的方法均在保护范围之内。根据apksigner工具和预设签名规则对认证文件进行签名处理,系统可以将源文件、认证文件、签名文件(第一签名文件和第二签名文件)进行打包处理,生成目标应用程序。
105、通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。
本实施例中,所述对齐工具(Zipalign)是一种命令行工具,它可以优化目标应用程序,使其占用更少的资源并提高运行性能。通常,对齐工具用于在将目标应用程序发布到应用商店之前对其进行优化。如今,它已成为Android开发者套件(SDK)中的一个标准组件。当Android应用运行时,它需要从目标应用程序中读取并加载资源(如图片、声音等),目标应用程序实质上是一个经过优化的ZIP压缩包,包含了应用程序的代码、资源和元数据。通过APK对齐工具,可以将资源文件相对于文件整体起始位置按照特定间隔对齐,Android操作系统通过内存映射的方式访问资源文件。常规压缩文件的资源文件在内存映射时,可能存在额外浪费的情况,而经过对齐处理后的APK,其资源文件在内存中的起始位置会按照特定的对齐边界排列,从而在运行时减少内存使用,提高加载速度。
本实施例中,对齐工具还能确保在优化过程中,得到目标应用程序,不改变目标应用程序的结构和内容,保证应用在发布后的完整性和稳定性。
本发明实施例中,通过根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
请参阅图2,本发明实施例中应用程序的生成方法的第二个实施例包括:
201、接收需要生成的目标应用程序的配置数据和与配置数据对应的默认参数文件;
本实施例中,应用程序通常包括一些配置文件和参数,配置文件例如包括一个图片,图片格式例如为“.PNG”格式的图片,该种图片本身是透明的,通过对图片设置一些参数,可以将图片作为应用程序的图标ICON来使用。当然,应用程序的配置文件和参数还可以包括其他内容。例如,当应用程序为一个搜索应用时,其配置文件还需要包括:数据库地址,搜索栏,搜索按钮等等。在本步骤中,可以开发一定的环境,将需要生成的应用程序的相关配置文件和参数通过该环境输入至计算机。
在另一个具体的实施例中,在生成待更新应用程序的更新包时,服务器获取待更新应用程序的源文件和与该源文件对应的默认配置参数文件。其中,与待更新应用程序的源文件对应的默认配置参数文件中的默认配置参数的存储格式为二进制数据存储格式,比如可以为JavaScript对象表示法(JavaScript Object Notation,简称JSON)数据存储格式,或者可扩展标记语言(Extensible Markup Language,简称XML)数据存储格式。
进一步地,本实施例中的源文件至少用于指示待更新应用程序运行时所需的各默认配置参数在默认配置参数文件中的位置,也就是说本实施例中的源文件中不包括待更新应用程序的默认配置参数,包括的是指示默认配置参数在默认配置参数文件中的位置的指示信息,即现有技术中的源文件中的默认配置参数被替换为指示默认配置参数在默认配置参数文件中的位置的指示信息。因此,待更新应用程序不仅包括源文件,还包括默认配置参数文件,默认配置参数文件中包括若干个默认配置参数的集合。
202、对配置数据和默认参数文件进行解析,得到初始应用程序的所有目标参数;
本实施例中,对配置数据和默认参数文件进行解析,确定应用程序代码中需要从参数数据库读取参数值的所有参数,并将其作为目标参数;在所述应用程序代码中为各个目标参数加上参数配置标注,其中所述参数配置标注指示与其相关联的参数的标识符,参数类型以及加载方式;在所述应用程序代码运行后基于所述参数配置标注从所述参数数据库读取相应的参数值以赋值给所述目标参数。
在另一个具体的实施例中,应用程序参数管理及配置方法中,所述应用程序代码运行于程序容器中,并且所述程序容器包括与所述应用程序代码相关联的参数管理及配置单元。
在另一个具体的实施例中,应用程序参数管理及配置方法中,所述参数配置标注所指示的加载方式是下列中的一个:启动时加载或运行时加载(每个目标参数的加载方式根据实际需求而被设定)
203、对目标参数进行标注,得到与目标参数相关联的标识符;
本实施例中,对目标参数进行标注,将所述应用程序代码中存在的指示加载方式为“启动时加载”的参数配置标注传送到所述参数管理及配置单元;将标注过的标识符通过所述参数管理及配置单元解析接收到的参数配置标注以便获得所述参数配置标注的标识符,得到与目标参数相关联的标识符。
204、基于标识符,从预设参数数据库中读取响应的参数值,并基于参数值确定初始应用程序的待修改参数;
本实施例中,根据标识符查询所述参数数据库以读取出相应的参数值,具体地,所述参数管理及配置单元将读取出的参数值传送回所述应用程序实例以赋值给相应的目标参数。
在应用程序实例运行期间,所述参数管理及配置单元监听并拦截特定类型的函数过程,并将所述函数过程中存在的与成员变量相关联的指示加载方式为“运行时加载”的参数配置标注传送到所述参数管理及配置单元;所述参数管理及配置单元解析接收到的参数配置标注以便获得所述参数配置标注的标识符,并随之根据标识符查询所述参数数据库以读取出相应的参数值;所述参数管理及配置单元将读取出的参数值传送回所述函数过程以赋值给相应的目标参数,并基于所述目标参数的参数值确定初始应用程序的待修改参数。
在另一具体实施例中,以分级的方式划分和管理所述目标参数,并且在声明参数时指定其分级信息。比如,以三级方式划分和管理所述目标参数,其中,第一级为子系统级别,第二级是模块级别、第三级是组级别(即一个目标参数属于某个子系统的某个模块的某个组)。
在另一具体实施例中,用户能够基于参数分级信息以定向地方式批量维护所述参数数据库中的参数值。例如,定位一个子系统、或者一个模块、或者一个组来批量更新特定的子系统、或模块、或组的参数。
205、获取与初始应用程序对应运行环境匹配的系统库文件;
本实施例中,所述系统库文件,是指被应用程序源码文件所直接或者间接引用的系统库文件。如前所述,上述至少一个系统库文件中存在对象引用。
所谓间接引用,具体是指应用程序源码文件通过某一个系统库文件实现了对其他系统库文件的引用。
在一个具体的实施例中,在应用程序源码文件中引用了系统库文件A、而在系统库文件A中进一步引用了系统库文件B和系统库文件C,因此,应用程序源码文件对系统库文件B和系统库文件C的引用为间接引用。进而系统库文件A包和系统库文件B,系统库文件A和系统库文件C之间分别存在引用关系。其中,所述系统库文件可以为开发人员所使用的第三方库文件,也可以为开发人员独立编写的库文件等,本实施例对此并不进行限制。该系统库文件可以为后缀为.aar格式的文件,或者后缀为.jar格式的文件等。
206、对初始应用程序和系统库文件进行解析,得到初始应用程序的可执行文件;
本实施例中,终端对应用程序的安装文件进行解压,得到多个解压文件,然后从多个解压文件中识别得到应用程序的可执行文件。终端可以基于安装文件的类型,来确定该安装文件对应的可执行文件的文件类型,然后基于可执行文件的文件类型,从多个解压文件中找到文件类型与可执行文件的文件类型一致的文件,作为应用程序的可执行文件。其中,解压文件可以包括可执行文件、动态链接库文件、资源文件、xml(ExtensibleMarkupLanguage,可扩展标记语言)文件等,但不局限于此,例如还可以包括txt文件等。
举例来说,若应用程序为Android系统的应用程序,则该应用程序的安装文件则可以是目标应用程序,而对应的可执行文件则可以是可执行文件。其中,目标应用程序可以是zip或rar等压缩文件格式。
具体地,终端将一个应用程序的目标应用程序进行解压,得到多个解压文件,解压文件可以包括但不限于可执行文件、so文件、arsc文件和xml文件等。终端基于应用程序的目标应用程序的类型,确定目标应用程序对应的可执行文件的类型为可执行文件,则进一步从解压得到的多个解压文件中识别出该应用程序对应的可执行文件,获得应用程序的可执行文件。例如,一个名称为example的Android系统应用程序,其对应的安装文件可以为example.apk,终端解压example.apk得到多个解压文件,而终端基于example.apk的类型,可以得知其对应的可执行文件为可执行文件,则从多个解压文件中识别得到其中的可执行文件,例如example.apk对应的可执行文件可以是example.dex,则将识别得到的example.dex作为该应用程序的可执行文件。
207、确定可执行文件的文件结构,根据预设文件结构确定可执行文件携带的标识符;
本实施例中,从待反编译的可执行文件,例如目标应用程序中获取至少一个目标可执行文件。其中,所述APK是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。Dalvik是Android系统的核心组成部分之一,用于执行代码的虚拟机。可执行文件为Dalvik虚拟机所执行的代码格式。一个APK中有一个或多个可执行文件,根据具体的反编译需求,可以从待反编译的目标应用程序中选择一个或多个可执行文件作为目标可执行文件。
进一步地,确定可执行文件的文件结构,根据预设文件结构从目标可执行文件中获取标识符表,逐个读取所述标识符表中的每一标识符,并根据可执行文件结构和Dalvik指令格式文档,逐个对每一标识符进行反编译,再基于SMALI语法生成反编译后的SMALI代码,作为每一标识符对应的类反编译数据,每一类反编译数据包括基本描述信息、成员变量描述信息和成员方法描述信息。其中,标识符表是可执行文件格式中的已知文件结构。SMALI一种现有的dex反编译代码语法格式。一个目标可执行文件对应一个标识符表,一个标识符表对应多个标识符。
进一步地,按照预设的数据存储结构创建一个反编译文件结构,将所获取的每一类反编译数据依次存储至所述反编译文件结构中,生成一个反编译文件,其中,所述预设的数据存储结构为{第一类反编译数据,预设分隔符,第二类反编译数据,预设分隔符,…,第(M-1)类反编译数据,预设分隔符,第M反编译数据},其中,M为所述目标dex文件对应的类总数,第m反编译数据包括第m类基本描述数据段,第m类成员变量描述数据段,第m类成员方法描述数据段,所述第m类成员方法描述数据段包括方法签名数据段和方法代码数据段,方法m的取值为1到M。
208、根据标识符和预设指令格式文档对可执行文件进行反编译,生成源代码;
本实施例中,终端可以利用反编译工具对可执行文件进行反编译。其中,不同的编程语言所对应的反编译工具不同,本实施例中,反编译工具为可执行文件所采用的编程语言所对应的反编译工具。例如,对于VB(Visual Basic)语言,对应的反编译工具有VBExplorer、VB反编译精灵和VBRezQ等;对于Java语言,对应的反编译工具有JAD(JointApplication Development)和JD(Java Decompiler)等;对于C++语言,对应的反编译工具有eXeScope;对于Delphi语言,对应的反编译工具有DEDE;对于C#语言,对应的反编译工具有Reflector。
例如,若可执行文件为Android系统的dex文件,dex文件所采用的编程语言为Java语言,则终端可以采用与Java语言相对应的反编译工具对dex文件进行反编译,将dex文件反编译为smali文件,然后将smali文件反编译为jar文件。其中,jar文件即为dex文件对应的源码文件,该源码文件的内容即为Java语言源代码。
209、基于预设数据存储结构创建反编译文件结构,将源代码存储至反编译文件结构中,得到可执行文件的中间文件;
本实施例中,基于预设数据存储结构创建反编译文件结构,将源代码存储至反编译文件结构中,具体地,组件通过SDK(Software Development Kit,软件开发工具包)编译后得到动态链接库文件。终端可以通过获取动态链接库文件的文件名来获得接入应用程序的组件名。在实际实施时,终端在解析应用程序的安装文件得到应用程序的可执行文件时,还可以得到至少一个动态链接库文件。具体地,终端可以根据动态链接库文件的文件名后缀来从对安装文件进行解压后得到的解压文件中识别出动态链接库文件。例如,对于Android应用程序,终端可以通过从解压文件中识别后缀名为“.so”的文件来获取so文件,然后基于so文件的文件名,来得到接入应用程序的组件名。例如对于libgcloud.so的so文件,其组件名则为gcloud,得到可执行文件的中间文件。
210、根据待修改参数,对中间文件对应的参数进行更新,得到带有渠道信息的源文件;
211、基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;
212、通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。
本实施例中步骤210-212与第一实施例中的步骤103-105类似,此处不再赘述。
本发明实施例中,通过根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
请参阅图3,本发明实施例中应用程序的生成方法的第三个实施例包括:
301、接收需要生成的目标应用程序的配置数据和与配置数据对应的默认参数文件,根据配置数据和默认参数文件确定初始应用程序的待修改参数;
302、确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到中间文件;
303、基于预设脚本确定中间文件中相应的参数的位置数据,根据位置数据查找中间文件需要进行替换的参数对应的目标参数值;
本实施例中,利用脚本将环境参数替换所述应用程序段中相应的参数,具体地,通过shell脚本实现应用程序段中的参数替换,可以解决传统的测试软件包的生成方法中,开发人员不能自主选择输入各种环境参数的问题。
304、基于预设渠道列表文件中获取目标渠道的渠道信息,根据目标参数值和渠道信息对中间文件中的参数进行更新,得到得到带有渠道信息的源文件;
本实施例中,用户可以根据自己的需要,在jenkins平台的源码管理中选择不同的源码管理工具下载相应的应用程序段,所述应用程序段为应用程序代码,源码管理工具如svn,git等,本发明实施例选择svn,具体的,在源码管理工具中选择“SubversionModules”,在“Repository URL”栏目录入相应的svn仓库地址。
具体地,在参数配置过程中,点击“添加参数”选项并出现下拉菜单,根据下拉菜单选择各种参数配置类型,如choice类型、bool类型或者string类型等等,根据所选择的参数配置类型进行环境参数的配置环节,其中环境参数的配置有3个属性,包括名字、默认值以及描述,名字代表参数的名称,默认值代表参数的初始值,描述代表参数的说明。
在配置完环境参数之后,且在测试软件包打包之前在所述jenkins平台上选择环境参数,并将所选择的环境参数直接传递至shell脚本中;具体的,通过配置执行shell脚本,将所配置的环境参数传入shell脚本中,根据目标参数值和渠道信息对中间文件中的参数进行更新,得到得到带有渠道信息的源文件。
305、基于Apktool从源文件中提取待编译数据,基于待编译数据构建对应的数据结构;
本实施例中,终端设备可以通过中央处理器(Central Processing Unit,CPU)加载该应用程序对应的字节码文件,从中提取待编译数据。其中,待编译数据包括但不限于待编译的数据段信息和/或待编译的代码段信息。数据段信息用于指示字节码文件所包括的参数,参数包括但不限于数据变量数目、数据初始值等,代码段信息用于指示待编译的代码指令。进一步地,终端可以针对不同的待编译信息分别构建对应的数据结构。
306、基于数据结构和预设的编译规则对源文件进行编译,生成源码文件;
本实施例中,所述源码文件可以指基于LLVM IR生成的文件,在一个可能的实现方式中,终端可以通过机器码生成模块基于LLVM IR来生成该源码文件。
307、确定中间文件的文件描述信息,基于源码文件和文件描述信息,生成源文件进行编译后得到认证文件;
本实施例中,确定用于对所述中间文件所包括的信息内容进行描述的文件描述信息,基于所述源码文件和所述文件描述信息,生成对所述源文件进行编译后得到认证文件,终端在生成认证文件之后,可以将该认证文件发送给物联网IoT设备,以便物联网设备可以直接从闪存中加载该认证文件,从而运行该应用程序。
在另一具体实施例中,根据预制的编译规则,对应用文件进行编译,得到可供调用的认证文件,需要说明的是,这里的应用文件可以是任何一款应用,可以是游戏、书籍、视频以及音乐等等,该应用可以是软件开发人员自己编写的程序,也可以是现有应用,在此不做限定。
308、根据apksigner工具和预设签名规则对认证文件进行签名处理,得到签名文件;
本实施例中,系统生成全部信息的摘要,将摘要作为认证文件,需要说明的是,这里使用摘要作为认证文件仅仅是一种具体实施方式。也可以通过同样的方法提炼应用文件中的其他部分作为认证文件。使用类似上述生成认证文件的方法均在保护范围之内。
进一步地,根据apksigner工具和预设签名规则对认证文件进行签名处理,具体地,系统可以根据第一签名规则对认证文件进行第一签名处理,得到第一签名文件,第一签名规则为开源源代码;需要说明的是,第一签名文件仅包含开发人员或者开发企业的基本信息,用于区分不同的开发企业或者开发人员,可以认为仅仅是一个地址信息和/或名称信息。根据第二签名规则对认证文件进行第二签名处理,得到第二签名文件;第二签名规则为闭源源代码;系统可以根据第二签名规则对认证文件进行第二签名处理,得到第二签名文件;第二签名文件为闭源源代码。需要说明的是,第二签名规则为非开源的,可以根据RSA或ND5规则定义,具体实现方式将在后续的实施例中详细描述,在此不做限定。
其中,需要说明的是,这里的“第一”、“第二”是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
309、将源文件、认证文件以及签名文件进行打包处理,生成带有签名的第二应用程序;
本实施例中,系统可以将源文件、认证文件、签名文件(第一签名文件和第二签名文件)进行打包处理,生成目标应用程序。具体的打包过程与现有生成APK的过程基本相同,在此不做赘述。
本实施例中,系统获取应用文件中全部信息,并生成全部信息的摘要作为认证文件;接着根据第一签名规则对认证文件进行第一签名处理,得到第一签名文件,第一签名规则为开源源代码;再根据第二签名规则对认证文件进行第二签名处理,得到第二签名文件;第二签名文件为闭源源代码;最后将应用文件、认证文件、第一签名文件和第二签名文件打包生成APK。若第二签名文件被删除,则应用文件无法调用认证文件,导致应用文件无法启动,从而能够有效防止通过反编译破解。
310、通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。
本实施例中步骤301-302、310与第一实施例中的步骤101-102、105类似,此处不再赘述。
本发明实施例中,通过根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
上面对本发明实施例中应用程序的生成方法进行了描述,下面对本发明实施例中应用程序的生成装置进行描述,请参阅图4,本发明实施例中应用程序的生成装置的第一个实施例包括:
确定模块401,用于接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,其中,所述待修改参数包括接口选项、测试开关、缓存开关和应用程序安装包名称;
反编译模块402,用于确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件;
更新模块403,用于根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件;
编译模块404,用于基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序;
对齐模块405,用于通过对齐工具和预设内存映射机制对所述第二应用程序进行对齐处理,得到所述目标应用程序。
本发明实施例中,通过根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
请参阅图5,本发明实施例中应用程序的生成装置的第二个实施例,该应用程序的生成装置具体包括:
确定模块401,用于接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,其中,所述待修改参数包括接口选项、测试开关、缓存开关和应用程序安装包名称;
反编译模块402,用于确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件;
更新模块403,用于根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件;
编译模块404,用于基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序;
对齐模块405,用于通过对齐工具和预设内存映射机制对所述第二应用程序进行对齐处理,得到所述目标应用程序。
本实施例中,所述确定模块401具体用于:
接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件;
对所述配置数据和所述默认参数文件进行解析,得到所述初始应用程序的所有目标参数;
对所述目标参数进行标注,得到与所述目标参数相关联的标识符;
基于所述标识符,从预设参数数据库中读取响应的参数值,并基于所述参数值确定初始应用程序的待修改参数。
本实施例中,所述反编译模块402包括:
确定单元4021,用于确定所述可执行文件的文件结构,根据预设文件结构确定所述可执行文件携带的标识符;
反编译单元4022,用于根据所述标识符和预设指令格式文档对所述可执行文件进行反编译,生成源代码;
存储单元4023,用于基于预设数据存储结构创建反编译文件结构,将所述源代码存储至所述反编译文件结构中,得到所述可执行文件的中间文件。
本实施例中,所述反编译单元4022具体用于:
确定所述可执行文件的文件结构,根据预设文件结构确定所述可执行文件携带的标识符;
根据所述标识符和预设指令格式文档对所述可执行文件进行反编译,生成源代码;
基于预设数据存储结构创建反编译文件结构,将所述源代码存储至所述反编译文件结构中,得到所述可执行文件的中间文件。
本实施例中,所述更新模块403具体用于:
基于预设脚本确定所述中间文件中相应的参数的位置数据;
根据所述位置数据查找所述中间文件需要进行替换的参数对应的目标参数值;
基于预设渠道列表文件中获取目标渠道的渠道信息;
根据所述目标参数值和所述渠道信息对所述中间文件中的参数进行更新,得到得到带有渠道信息的源文件。
本实施例中,所述编译模块404包括:
编译单元4041,用于基于Apktool和预设的编译规则对所述源文件进行重新编译,得到认证文件;
签名单元4042,用于根据apksigner工具和预设签名规则对所述认证文件进行签名处理,得到签名文件;
打包单元4043,用于将所述源文件、所述认证文件以及所述签名文件进行打包处理,生成带有签名的第二应用程序。
本实施例中,所述编译单元4041具体用于:
基于Apktool从所述源文件中提取待编译数据,基于所述待编译数据构建对应的数据结构;
基于所述数据结构和预设的编译规则对所述源文件进行编译,生成源码文件;
确定所述源码文件的文件描述信息,基于所述源码文件和所述文件描述信息,生成所述源文件进行编译后得到认证文件。
本发明实施例中,根据接收的目标应用程序的配置数据和默认参数文件确定初始应用程序的待修改参数;确定与初始应用程序对应的系统库文件,对系统库文件和初始应用程序进行反编译处理,得到带有渠道信息的源文件;基于编译工具和预设的编译规则对源文件进行重新编译并签名,生成带有签名的第二应用程序;通过对齐工具和预设内存映射机制对第二应用程序进行对齐处理,得到目标应用程序。本发明通过把应用程序出包进行拆解,写入渠道信息做标识再进行出包处理,提高了应用程序的生成的效率以及准确率。
上面图4和图5从模块化功能实体的角度对本发明实施例中的应用程序的生成装置进行详细描述,下面从硬件处理的角度对本发明实施例中应用程序的生成设备进行详细描述。
图6是本发明实施例提供的一种应用程序的生成设备的结构示意图,该应用程序的生成设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)610(例如,一个或一个以上处理器)和存储器620,一个或一个以上存储应用程序633或数据632的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器620和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对应用程序的生成设备600中的一系列指令操作。更进一步地,处理器610可以设置为与存储介质630通信,在应用程序的生成设备600上执行存储介质630中的一系列指令操作,以实现上述各方法实施例提供的应用程序的生成方法的步骤。
应用程序的生成设备600还可以包括一个或一个以上电源640,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口660,和/或,一个或一个以上操作系统631,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图6示出的应用程序的生成设备结构并不构成对本申请提供的应用程序的生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行上述应用程序的生成方法的步骤。
所述领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种应用程序的生成方法,其特征在于,所述应用程序的生成方法包括:
接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,其中,所述待修改参数包括接口选项、测试开关、缓存开关和应用程序安装包名称;
确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件;
根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件;
基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序;
通过对齐工具和预设内存映射机制对所述第二应用程序进行对齐处理,得到所述目标应用程序。
2.根据权利要求1所述的应用程序的生成方法,其特征在于,所述接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,包括:
接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件;
对所述配置数据和所述默认参数文件进行解析,得到所述初始应用程序的所有目标参数;
对所述目标参数进行标注,得到与所述目标参数相关联的标识符;
基于所述标识符,从预设参数数据库中读取响应的参数值,并基于所述参数值确定初始应用程序的待修改参数。
3.根据权利要求1所述的应用程序的生成方法,其特征在于,所述确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件,包括:
获取与所述初始应用程序对应运行环境匹配的系统库文件;
对所述初始应用程序和所述系统库文件进行解析,得到所述初始应用程序的可执行文件;
基于预设反编译应用对所述可执行文件进行反编译,得到所述可执行文件的中间文件。
4.根据权利要求3所述的应用程序的生成方法,其特征在于,所述基于预设反编译应用对所述可执行文件进行反编译,得到所述可执行文件的中间文件,包括:
确定所述可执行文件的文件结构,根据预设文件结构确定所述可执行文件携带的标识符;
根据所述标识符和预设指令格式文档对所述可执行文件进行反编译,生成源代码;
基于预设数据存储结构创建反编译文件结构,将所述源代码存储至所述反编译文件结构中,得到所述可执行文件的中间文件。
5.根据权利要求1所述的应用程序的生成方法,其特征在于,所述根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件,包括:
基于预设脚本确定所述中间文件中相应的参数的位置数据;
根据所述位置数据查找所述中间文件需要进行替换的参数对应的目标参数值;
基于预设渠道列表文件中获取目标渠道的渠道信息;
根据所述目标参数值和所述渠道信息对所述中间文件中的参数进行更新,得到得到带有渠道信息的源文件。
6.根据权利要求1所述的应用程序的生成方法,其特征在于,所述基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序,包括:
基于Apktool和预设的编译规则对所述源文件进行重新编译,得到认证文件;
根据apksigner工具和预设签名规则对所述认证文件进行签名处理,得到签名文件;
将所述源文件、所述认证文件以及所述签名文件进行打包处理,生成带有签名的第二应用程序。
7.根据权利要求6所述的应用程序的生成方法,其特征在于,所述基于Apktool和预设的编译规则对所述源文件进行重新编译,得到认证文件,包括:
基于Apktool从所述源文件中提取待编译数据,基于所述待编译数据构建对应的数据结构;
基于所述数据结构和预设的编译规则对所述源文件进行编译,生成源码文件;
确定所述源码文件的文件描述信息,基于所述源码文件和所述文件描述信息,生成所述源文件进行编译后得到认证文件。
8.一种应用程序的生成装置,其特征在于,所述应用程序的生成装置包括:
确定模块,用于接收需要生成的目标应用程序的配置数据和与所述配置数据对应的默认参数文件,根据所述配置数据和所述默认参数文件确定初始应用程序的待修改参数,其中,所述待修改参数包括接口选项、测试开关、缓存开关和应用程序安装包名称;
反编译模块,用于确定与所述初始应用程序对应的系统库文件,对所述系统库文件和所述初始应用程序进行反编译处理,得到中间文件;
更新模块,用于根据所述待修改参数,对所述中间文件对应的参数进行更新,得到带有渠道信息的源文件;
编译模块,用于基于编译工具和预设的编译规则对所述源文件进行重新编译并签名,生成带有签名的第二应用程序;
对齐模块,用于通过对齐工具和预设内存映射机制对所述第二应用程序进行对齐处理,得到所述目标应用程序。
9.一种应用程序的生成设备,其特征在于,所述应用程序的生成设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述应用程序的生成设备执行如权利要求1-7中任一项所述的应用程序的生成方法的各个步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的应用程序的生成方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311030159.3A CN116755713A (zh) | 2023-08-16 | 2023-08-16 | 应用程序的生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311030159.3A CN116755713A (zh) | 2023-08-16 | 2023-08-16 | 应用程序的生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116755713A true CN116755713A (zh) | 2023-09-15 |
Family
ID=87951793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311030159.3A Pending CN116755713A (zh) | 2023-08-16 | 2023-08-16 | 应用程序的生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755713A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631618A (zh) * | 2020-12-16 | 2021-04-09 | 平安普惠企业管理有限公司 | 应用程序打包方法、应用程序测试方法、终端及存储介质 |
CN116974586A (zh) * | 2023-09-22 | 2023-10-31 | 深圳传趣网络技术有限公司 | 多渠道应用打包方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573774A (zh) * | 2014-11-05 | 2016-05-11 | 中国银联股份有限公司 | 应用程序参数管理及配置方法 |
CN106933609A (zh) * | 2015-12-29 | 2017-07-07 | 北京五八信息技术有限公司 | Android应用程序安装包的生成方法及装置 |
CN107239303A (zh) * | 2017-05-11 | 2017-10-10 | 北京五八信息技术有限公司 | 应用程序更新包生成及应用程序更新的方法、装置 |
CN109117175A (zh) * | 2018-07-31 | 2019-01-01 | 成都华栖云科技有限公司 | 一种基于apk反编译快速封包桌面端打包方法及打包工具 |
CN111078223A (zh) * | 2018-10-22 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 一种应用程序的打包方法及装置 |
CN111209001A (zh) * | 2019-12-19 | 2020-05-29 | 福建升腾资讯有限公司 | 批量生成安卓各渠道apk的方法、系统、设备和介质 |
CN112052013A (zh) * | 2020-08-03 | 2020-12-08 | 完美世界(北京)软件科技发展有限公司 | 软件包的生成方法及装置、存储介质、电子装置 |
CN113127005A (zh) * | 2021-05-08 | 2021-07-16 | 北京字节跳动网络技术有限公司 | 一种可执行文件生成的方法、装置以及计算机存储介质 |
CN114564208A (zh) * | 2022-03-17 | 2022-05-31 | 杭州云深科技有限公司 | 安卓应用程序的反编译方法、电子设备和介质 |
CN115904384A (zh) * | 2022-11-08 | 2023-04-04 | 上海乾臻信息科技有限公司 | 应用程序发布的配置方法、装置、设备及存储介质 |
-
2023
- 2023-08-16 CN CN202311030159.3A patent/CN116755713A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573774A (zh) * | 2014-11-05 | 2016-05-11 | 中国银联股份有限公司 | 应用程序参数管理及配置方法 |
CN106933609A (zh) * | 2015-12-29 | 2017-07-07 | 北京五八信息技术有限公司 | Android应用程序安装包的生成方法及装置 |
CN107239303A (zh) * | 2017-05-11 | 2017-10-10 | 北京五八信息技术有限公司 | 应用程序更新包生成及应用程序更新的方法、装置 |
CN109117175A (zh) * | 2018-07-31 | 2019-01-01 | 成都华栖云科技有限公司 | 一种基于apk反编译快速封包桌面端打包方法及打包工具 |
CN111078223A (zh) * | 2018-10-22 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 一种应用程序的打包方法及装置 |
CN111209001A (zh) * | 2019-12-19 | 2020-05-29 | 福建升腾资讯有限公司 | 批量生成安卓各渠道apk的方法、系统、设备和介质 |
CN112052013A (zh) * | 2020-08-03 | 2020-12-08 | 完美世界(北京)软件科技发展有限公司 | 软件包的生成方法及装置、存储介质、电子装置 |
CN113127005A (zh) * | 2021-05-08 | 2021-07-16 | 北京字节跳动网络技术有限公司 | 一种可执行文件生成的方法、装置以及计算机存储介质 |
CN114564208A (zh) * | 2022-03-17 | 2022-05-31 | 杭州云深科技有限公司 | 安卓应用程序的反编译方法、电子设备和介质 |
CN115904384A (zh) * | 2022-11-08 | 2023-04-04 | 上海乾臻信息科技有限公司 | 应用程序发布的配置方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631618A (zh) * | 2020-12-16 | 2021-04-09 | 平安普惠企业管理有限公司 | 应用程序打包方法、应用程序测试方法、终端及存储介质 |
CN116974586A (zh) * | 2023-09-22 | 2023-10-31 | 深圳传趣网络技术有限公司 | 多渠道应用打包方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8347263B1 (en) | Repository including installation metadata for executable applications | |
US9086931B2 (en) | System for translating diverse programming languages | |
US8171141B1 (en) | Provisioning system including stack manager | |
US9965259B2 (en) | System for translating diverse programming languages | |
US8001083B1 (en) | Repository including version management | |
CN116755713A (zh) | 应用程序的生成方法、装置、设备及存储介质 | |
EP4002097B1 (en) | Load module compiler | |
EP4055477B1 (en) | Just-in-time containers | |
WO2008097436A1 (en) | Translation process component | |
US10417024B2 (en) | Generating verification metadata and verifying a runtime type based on verification metadata | |
US11625253B2 (en) | Application-level runtime environment for executing applications native to mobile devices without full installation | |
KR20080047444A (ko) | 확장 가능한 메타 데이터 | |
CN112667361B (zh) | 基于系统虚拟机的管理方法、装置、电子设备及存储介质 | |
CN106796521B (zh) | 独立于产品发布的api版本控制 | |
CN104134039A (zh) | 病毒查杀方法、客户端、服务器以及病毒查杀系统 | |
US10866803B2 (en) | Generating interaction libraries | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN116414774A (zh) | 文件迁移方法、装置、设备及存储介质 | |
CN114610364A (zh) | 应用程序更新、应用程序开发方法、装置及计算机设备 | |
CN109558121B (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
US9015180B1 (en) | Repository including file identification | |
CN114398102B (zh) | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 | |
CN114706586A (zh) | 代码编译、代码运行方法、装置、计算机设备及存储介质 | |
US20230093197A1 (en) | Generating executables for target operational environments | |
CN114860202A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20230915 |