CN113127005A - 一种可执行文件生成的方法、装置以及计算机存储介质 - Google Patents

一种可执行文件生成的方法、装置以及计算机存储介质 Download PDF

Info

Publication number
CN113127005A
CN113127005A CN202110499682.5A CN202110499682A CN113127005A CN 113127005 A CN113127005 A CN 113127005A CN 202110499682 A CN202110499682 A CN 202110499682A CN 113127005 A CN113127005 A CN 113127005A
Authority
CN
China
Prior art keywords
executable file
identification list
installation package
channel
basic installation
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
CN202110499682.5A
Other languages
English (en)
Other versions
CN113127005B (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.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology 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 Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN202110499682.5A priority Critical patent/CN113127005B/zh
Publication of CN113127005A publication Critical patent/CN113127005A/zh
Application granted granted Critical
Publication of CN113127005B publication Critical patent/CN113127005B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

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

一种可执行文件生成的方法、装置以及计算机存储介质
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种可执行文件生成的方法、装置以及计算机存储介质。
背景技术
随着计算机技术的快速发展,市场上出现越来越多的应用程序,应用程序开发商一般通过将应用程序上架到各种合作平台(即渠道)的方式,来提高应用程序的客户使用量。
在将应用程序上架到各种渠道之前,一般需要将渠道的软件工具开发包(Software Development Kit,SDK)与应用程序基础安装包进行合并,生成能够在渠道上发布的渠道包(即应用程序安装包),但是在将渠道的SDK与应用程序基础安装包合并过程中,可能会由于当前应用程序基础安装包的主可执行文件剩余容量不足,无法保证在可执行文件安装之前运行的代码位于主可执行文件中,这样,生成的渠道包会在运行时崩溃,导致无法正常安装渠道包。
发明内容
有鉴于此,本公开实施例至少提供一种可执行文件生成的方法、装置以及计算机存储介质。
第一方面,本公开实施例提供了一种可执行文件生成的方法,包括:
获取应用程序基础安装包的项目目录;
在所述项目目录中,查找所述基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;所述第一标识列表中包括所述基础安装包对应的至少一个第一主可执行文件标识;所述第二标识列表中包括所述待接入目标渠道对应的至少一个第二主可执行文件标识;
基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录。
在一种可选的实施方式中,获取应用程序基础安装包的项目目录之前,还包括:
调用目标编译插件,生成所述基础安装包对应的所述第一标识列表,以及生成待接入的至少一个渠道分别对应的所述第二标识列表;
将所述第一标识列表和所述第二标识列表保存到所述基础安装包的所述项目目录中。
在一种可选的实施方式中,调用目标编译插件,生成所述基础安装包对应的所述第一标识列表,以及生成待接入的至少一个渠道分别对应的所述第二标识列表,包括:
调用所述目标编译插件,针对所述应用程序,创建第一插件任务,以及针对每个待接入的渠道,创建对应的第二插件任务;
通过创建的所述第一插件任务和每个待接入的渠道对应的所述第二插件任务,生成所述第一标识列表,以及至少一个渠道分别对应的所述第二标识列表。
在一种可选的实施方式中,获取应用程序基础安装包的项目目录,包括:
反编译所述应用程序基础安装包,并在得到的反编译基础安装包中,查找所述应用程序基础安装包的项目目录。
在一种可选的实施方式中,基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录,包括:
从所述基础安装包的主可执行文件目录中,移出对应的文件标识没有存在于所述第一标识列表中的文件;
将所述基础安装包中存在于所述第一标识列表的文件,和所述目标渠道的渠道软件包中存在于所述第二标识列表的文件,移入所述基础安装包的主可执行文件目录中,得到所述合并后主可执行文件目录。
在一种可选的实施方式中,所述方法还包括:
将所述基础安装包中位于所述第一标识列表外的文件,和所述目标渠道的渠道软件包中位于所述第二标识列表外的文件,分别移入所述基础安装包的至少一个辅可执行文件目录中;
将所述合并后主可执行文件目录,与所述至少一个辅可执行文件目录,作为所述应用程序的可执行文件目录。
在一种可选的实施方式中,确定所述应用程序的可执行文件目录后,所述方法还包括:
采用目标反编译工具,对所述可执行文件目录下的文件进行反编译,生成所述应用程序的可执行文件。
在一种可选的实施方式中,采用目标反编译工具,对所述可执行文件目录下的文件进行反编译,生成所述应用程序的可执行文件,包括:
采用所述目标反编译工具,对所述合并后主可执行文件目录下的文件进行反编译,生成至少一个主可执行文件;
采用所述目标反编译工具,对所述至少一个辅可执行文件目录下的文件进行反编译,生成至少一个辅可执行文件;
将所述至少一个主可执行文件和所述至少一个辅可执行文件,作为所述应用程序的可执行文件。
第二方面,本公开实施例提供了一种可执行文件生成的装置,包括:
获取模块,用于获取应用程序基础安装包的项目目录;
查找模块,用于在所述项目目录中,查找所述基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;所述第一标识列表中包括所述基础安装包对应的至少一个第一主可执行文件标识;所述第二标识列表中包括所述待接入目标渠道对应的至少一个第二主可执行文件标识;
生成模块,用于基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录。
在一种可选的实施方式中,所述装置还包括:
第一处理模块,用于调用目标编译插件,生成所述基础安装包对应的所述第一标识列表,以及生成待接入的至少一个渠道分别对应的所述第二标识列表;将所述第一标识列表和所述第二标识列表保存到所述基础安装包的所述项目目录中。
在一种可选的实施方式中,所述第一处理模块,具体用于调用所述目标编译插件,针对所述应用程序,创建第一插件任务,以及针对每个待接入的渠道,创建对应的第二插件任务;通过创建的所述第一插件任务和每个待接入的渠道对应的所述第二插件任务,生成所述第一标识列表,以及至少一个渠道分别对应的所述第二标识列表。
在一种可选的实施方式中,所述获取模块,具体用于反编译所述应用程序基础安装包,并在得到的反编译基础安装包中,查找所述应用程序基础安装包的项目目录。
在一种可选的实施方式中,所述生成模块,具体用于从所述基础安装包的主可执行文件目录中,移出对应的文件标识没有存在于所述第一标识列表中的文件;将所述基础安装包中存在于所述第一标识列表的文件,和所述目标渠道的渠道软件包中存在于所述第二标识列表的文件,移入所述基础安装包的主可执行文件目录中,得到所述合并后主可执行文件目录。
在一种可选的实施方式中,所述装置还包括:
第二处理模块,用于将所述基础安装包中位于所述第一标识列表外的文件,和所述目标渠道的渠道软件包中位于所述第二标识列表外的文件,分别移入所述基础安装包的至少一个辅可执行文件目录中;将所述合并后主可执行文件目录,与所述至少一个辅可执行文件目录,作为所述应用程序的可执行文件目录。
在一种可选的实施方式中,所述装置还包括:
第三处理模块,用于采用目标反编译工具,对所述可执行文件目录下的文件进行反编译,生成所述应用程序的可执行文件。
在一种可选的实施方式中,所述第三处理模块,具体用于采用所述目标反编译工具,对所述合并后主可执行文件目录下的文件进行反编译,生成至少一个主可执行文件;采用所述目标反编译工具,对所述至少一个辅可执行文件目录下的文件进行反编译,生成至少一个辅可执行文件;将所述至少一个主可执行文件和所述至少一个辅可执行文件,作为所述应用程序的可执行文件。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的可执行文件生成的方法、装置以及计算机存储介质,首先获取应用程序基础安装包的项目目录;然后,在项目目录中,查找到应用程序基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;再基于第一标识列表和第二标识列表,生成应用程序在目标渠道下的合并后主可执行文件目录;这里,通过第一标识列表和第二标识列表,确定应用程序基础安装包和目标渠道中需要合并到主可执行文件中的文件,以使在将应用程序基础安装包和目标渠道进行合并的过程(即生成渠道包的过程)中,将上述确定的需要合并到主可执行文件中的文件合并到主可执行文件中;通过上述方法生成的渠道包可以保证在可执行文件安装之前运行的代码均位于主可执行文件中,从而保证渠道包能够在安装过程中正常运行。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种可执行文件生成的方法的流程图;
图2示出了本公开实施例所提供的一种可执行文件生成的装置的示意图;
图3示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
随着计算机技术的快速发展,市场上出现越来越多的应用程序,应用程序开发商一般通过将应用程序上架到各种合作平台(即渠道)的方式,来提高应用程序的客户使用量;在将应用程序上架到各种渠道之前,一般需要将渠道的软件工具开发包与应用程序基础安装包进行合并,生成能够在渠道上发布的渠道包(即应用程序安装包),但是在将渠道的SDK与应用程序基础安装包合并过程中,可能会由于当前应用程序基础安装包的主可执行文件剩余容量不足,无法保证在可执行文件安装之前运行的代码位于主可执行文件中,这样,生成的渠道包会在运行时崩溃,导致无法正常安装渠道包。
基于上述研究,本公开提供了一种可执行文件生成的方法、装置以及计算机存储介质,通过第一标识列表和第二标识列表,确定应用程序基础安装包和目标渠道中需要合并到主可执行文件中的文件,以使在将应用程序基础安装包和目标渠道进行合并过程(即渠道包的生成过程)中,将上述确定的需要合并到主可执行文件中的文件合并到主可执行文件中;通过上述方法生成的渠道包可以保证在可执行文件安装之前运行的代码均位于主可执行文件中,从而保证渠道包能够在安装过程中正常运行。
以上问题的发现过程以及解决办法的提出过程,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种可执行文件生成的方法进行详细介绍,本公开实施例所提供的可执行文件生成的方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:服务器或其它处理设备。在一些可能的实现方式中,该可执行文件生成的方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为服务器为例对本公开实施例提供的可执行文件生成的方法加以说明。
参见图1所示,为本公开实施例提供的可执行文件生成的方法的流程图,所述方法包括步骤S101~S103,其中:
S101、获取应用程序基础安装包的项目目录。
其中,应用程序指完成某项或多项特定工作的计算机程序,比如,可以包括游戏类、办公类、媒体内容播放类等多种类型;在本公开实施例中,以游戏应用程序为例作详细介绍。
在本公开实施例中,以游戏应用程序基础安装包为例进行详细介绍;游戏应用程序基础安装包是由游戏项目的代码文件、游戏引擎代码文件和游戏资源文件构成的程序包;这里,应用程序基础安装包的项目目录可以包括assets目录,该目录下存放的内容在编译、调用等各种处理过程中均不会被改变,因此,为了使应用程序基础安装包和渠道的软件开发工具包SDK进行合并,生成渠道包的过程中,根据应用程序基础安装包对应的第一标识列表和渠道对应的第二标识列表,将应用程序的母包中的第一主可执行文件与渠道中第二主可执行文件合并为主可执行文件,这里,为了保证应用程序基础安装包对应的第一标识列表和渠道对应的第二标识列表在任何处理过程中,都不被改变,因此,需要将应用程序基础安装包对应的第一标识列表和渠道对应的第二标识列表存储到assets目录下。
这里,渠道包括Android应用分发商或应用平台,一般渠道都有自己的客户体系以及相应的支付方式,如果产品要上架到该渠道,一般需要接入该渠道的登录以及支付功能;当应用程序需要上架到渠道时,需要将应用程序基础安装包与渠道SDK合并,生成能够在渠道上发布的渠道包。
其中,第一标识列表中包括应用程序基础安装包对应的至少一个第一主可执行文件标识,即第一标识列表中包含在生成渠道包时,应用程序基础安装包中需要编入到主可执行文件中的至少一个类的标识信息;第二标识列表中包括待接入目标渠道对应的至少一个第二主可执行文件标识,即第二标识列表中包含在生成渠道包时,渠道SDK中需要编入到主可执行文件中的至少一个类的标识信息;这里,主可执行文件用来表征可以直接在Dalvik虚拟机中加载运行的主dex文件,一般点击android手机上面的应用程序图标,都会运行一个Dalvik虚拟机,并且运行dex文件。
在具体实施中,在获取应用程序基础安装包的项目目录之前,可以调用目标编译插件,生成基础安装包对应的第一标识列表,以及生成待接入的至少一个渠道分别对应的第二标识列表;将第一标识列表和第二标识列表保存到应用程序基础安装包的项目目录中。
其中,目标编译插件可以包括gradle插件,该gradle插件用于对应用程序代码进行分析,构建应用程序基础安装包;第一插件任务和第二插件任务均为D8MainDexListTask任务。
具体的,游戏方在构建游戏母包时,安卓构建系统使用gradle插件针对游戏应用程序的代码执行D8MainDexListTask任务,对游戏应用程序的代码进行分析,确定在生成渠道包的过程中,需要编入主可执行文件(即主dex文件)中的类,在确定该游戏应用程序的代码对应的需要编入主可执行文件中的类后,基于这些类的标识信息,构建该游戏应用程序对应的第一标识列表;并且,在构建游戏基础安装包的过程中,gradle插件会为该游戏应用程序需要上架到的每个渠道,分别插入对应的D8MainDexListTask任务,以使gradle插件针对每个渠道的渠道SDK执行D8MainDexListTask任务,对每个渠道的渠道SDK进行分析,确定在生成渠道包的过程中,需要编入主可执行文件(即主dex文件)中的类,在确定每个渠道的渠道SDK对应的需要编入主可执行文件中的类后,基于这些类的标识信息,构建每个渠道的渠道SDK对应的第二标识列表。
需要说明的是,gradle插件确定在生成渠道包的过程中,需要编入主可执行文件(即主dex文件)中的类的数量不会超出dex文件方法数量的限制。
在具体实施中,在确定游戏应用程序对应的第一标识列表、以及每个渠道的渠道SDK对应的第二标识列表之后,为了保证在任何处理过程中,都不改变应用程序基础安装包对应的第一标识列表和渠道对应的第二标识列表中的类的标识信息,将应用程序基础安装包对应的第一标识列表和渠道对应的第二标识列表存储到assets目录下。
这里,在获取应用程序基础安装包的项目目录时,可以通过反编译应用程序基础安装包,并在得到的反编译基础安装包中,查找应用程序基础安装包的项目目录。
在具体实施中,在将游戏应用程序基础安装包和每个渠道的渠道SDK进行合并,生成相应的渠道包时,可以通过反编译游戏应用程序基础安装包,将游戏应用程序基础安装包由二进制文件转换为可以进行合并的文本文件,并在得到的反编译后的游戏应用程序基础安装包中,查找应用程序基础安装包的assets目录。
在具体实施中,在应用程序基础安装包中查找到assets目录后,可以执行如下步骤。
S102、在项目目录中,查找基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;第一标识列表中包括基础安装包对应的至少一个第一主可执行文件标识;第二标识列表中包括待接入目标渠道对应的至少一个第二主可执行文件标识。
在具体实施中,在基于步骤S101在应用程序基础安装包中查找到assets目录后,可以在assets目录下查找到游戏应用程序基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表。
其中,待接入目标渠道用来表征当前与游戏应用程序基础安装包进行合并的任一渠道。
这里,assets目录下不仅存储游戏应用程序基础安装包对应的第一标识列表,还存储有每个待接入渠道对应的第二标识列表。
在具体实施中,当确定将游戏应用程序基础安装包与目标渠道的渠道SDK合并,生成目标渠道包时,则需要在assets目录下查找游戏应用程序基础安装包对应的第一标识列表,以及该目标渠道对应的第二标识列表;在确定查找到后,可以基于下述步骤S103,生成应用程序在目标渠道下的合并后主可执行文件目录,具体描述如下所示。
S103、基于第一标识列表和第二标识列表,生成应用程序在目标渠道下的合并后主可执行文件目录。
这里,一般在生成渠道包之前,游戏应用程序基础安装包中包括一个主可执行文件和多个辅可执行文件,即一个主dex文件和多个子dex文件;其中,游戏应用程序基础安装包中的主可执行文件目录中可能存在第一标识列表中的文件,还可能存在没有出现在第一标识列表中的文件;游戏应用程序基础安装包中的辅可执行文件目录中可能存在第一标识列表中的文件,还可能存在没有出现在第一标识列表中的文件。
在具体实施中,为了保证生成的渠道包能够正常运行,所以需要在生成渠道包时,将没有出现在第一标识列表中的文件,从游戏应用程序基础安装包中的主可执行文件目录中移除;然后,将游戏应用程序基础安装包中存在于第一标识列表中的文件,以及目标渠道的渠道SDK中存在于第二标识列表的文件,移入到游戏应用程序基础安装包中的主可执行文件目录,从而得到合并后主可执行文件目录。
在具体实施中,在确定合并后主可执行目录之后,可以将游戏应用程序基础安装包中位于第一标识列表外的文件、以及目标渠道的渠道SDK中位于第二标识列表外的文件,分别移入到游戏应用程序基础安装包中的至少一个辅可执行文件目录(即子dex文件目录)中;将合并后主可执行文件目录(即主dex文件目录),与至少一个辅可执行文件目录(即至少一个子dex文件目录),作为游戏应用程序的可执行文件目录。
这里,在确定应用程序的可执行文件目录后,可以采用目标反编译工具,对可执行文件目录下的文件进行反编译,生成应用程序的可执行文件。
在具体实施中,在确定游戏应用程序的可执行文件目录后,可以采用目标反编译工具,对可执行文件目录下的文件进行反编译,生成游戏应用程序的可执行文件。
其中,目标反编译工具可以包括baksmali工具。
具体的,在确定游戏应用程序的合并后主可执行文件目录以及至少一个辅可执行文件目录后,可以采用baksmali工具,对合并后主可执行文件目录下的类文件进行反编译,生成至少一个主可执行文件(即主dex文件),并对辅可执行文件目录下的类文件进行反编译,生成辅可执行文件(即子dex文件),从而构建出所有的dex文件。
本公开实施例中,通过第一标识列表和第二标识列表,确定应用程序基础安装包和目标渠道中需要合并到主可执行文件中的文件,以使在将应用程序基础安装包和目标渠道进行合并的过程(即渠道包的生成过程)中,将上述确定的需要合并到主可执行文件中的文件合并到主可执行文件中;通过上述方法生成的渠道包可以保证在可执行文件安装之前运行的代码均位于主可执行文件中,从而保证渠道包能够在安装过程中正常运行。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与可执行文件生成的方法对应的可执行文件生成的装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述可执行文件生成的方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图2所示,为本公开实施例提供的一种可执行文件生成的装置200的示意图,所述装置包括:获取模块201、查找模块202和生成模块203;
其中,
获取模块201,用于获取应用程序基础安装包的项目目录。
查找模块202,用于在所述项目目录中,查找所述基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;所述第一标识列表中包括所述基础安装包对应的至少一个第一主可执行文件标识;所述第二标识列表中包括所述待接入目标渠道对应的至少一个第二主可执行文件标识。
生成模块203,用于基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录。
在一种可选的实施方式中,所述装置还包括:
第一处理模块,用于调用目标编译插件,生成所述基础安装包对应的所述第一标识列表,以及生成待接入的至少一个渠道分别对应的所述第二标识列表;将所述第一标识列表和所述第二标识列表保存到所述基础安装包的所述项目目录中。
在一种可选的实施方式中,所述第一处理模块,具体用于调用所述目标编译插件,针对所述应用程序,创建第一插件任务,以及针对每个待接入的渠道,创建对应的第二插件任务;通过创建的所述第一插件任务和每个待接入的渠道对应的所述第二插件任务,生成所述第一标识列表,以及至少一个渠道分别对应的所述第二标识列表。
在一种可选的实施方式中,获取模块201,具体用于反编译所述应用程序基础安装包,并在得到的反编译基础安装包中,查找所述应用程序基础安装包的项目目录。
在一种可选的实施方式中,生成模块203,具体用于从所述基础安装包的主可执行文件目录中,移出对应的文件标识没有存在于所述第一标识列表中的文件;将所述基础安装包中存在于所述第一标识列表的文件,和所述目标渠道的渠道软件包中存在于所述第二标识列表的文件,移入所述基础安装包的主可执行文件目录中,得到所述合并后主可执行文件目录。
在一种可选的实施方式中,所述装置还包括:
第二处理模块,用于将所述基础安装包中位于所述第一标识列表外的文件,和所述目标渠道的渠道软件包中位于所述第二标识列表外的文件,分别移入所述基础安装包的至少一个辅可执行文件目录中;将所述合并后主可执行文件目录,与所述至少一个辅可执行文件目录,作为所述应用程序的可执行文件目录。
在一种可选的实施方式中,所述装置还包括:
第三处理模块,用于采用目标反编译工具,对所述可执行文件目录下的文件进行反编译,生成所述应用程序的可执行文件。
在一种可选的实施方式中,所述第三处理模块,具体用于采用所述目标反编译工具,对所述合并后主可执行文件目录下的文件进行反编译,生成至少一个主可执行文件;采用所述目标反编译工具,对所述至少一个辅可执行文件目录下的文件进行反编译,生成至少一个辅可执行文件;将所述至少一个主可执行文件和所述至少一个辅可执行文件,作为所述应用程序的可执行文件。
本公开实施例中,通过第一标识列表和第二标识列表,确定应用程序基础安装包和目标渠道中需要合并到主可执行文件中的文件,以使在将应用程序基础安装包和目标渠道进行合并的过程(即渠道包的生成过程)中,将上述确定的需要合并到主可执行文件中的文件合并到主可执行文件中;通过上述方法生成的渠道包可以保证在可执行文件安装之前运行的代码均位于主可执行文件中,从而保证渠道包能够在安装过程中正常运行。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本申请实施例还提供了一种计算机设备。参照图3所示,为本申请实施例提供的计算机设备300的结构示意图,包括处理器301、存储器302、和总线303。其中,存储器302用于存储执行指令,包括内存3021和外部存储器3022;这里的内存3021也称内存储器,用于暂时存放处理器301中的运算数据,以及与硬盘等外部存储器3022交换的数据,处理器301通过内存3021与外部存储器3022进行数据交换,当计算机设备300运行时,处理器301与存储器302之间通过总线303通信,使得处理器301执行以下指令:
获取应用程序基础安装包的项目目录;
在所述项目目录中,查找所述基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;所述第一标识列表中包括所述基础安装包对应的至少一个第一主可执行文件标识;所述第二标识列表中包括所述待接入目标渠道对应的至少一个第二主可执行文件标识;
基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录。
其中,处理器301的具体处理流程可以参照上述方法实施例的记载,这里不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的可执行文件生成的方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的可执行文件生成的方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (11)

1.一种可执行文件生成的方法,其特征在于,包括:
获取应用程序基础安装包的项目目录;
在所述项目目录中,查找所述基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;所述第一标识列表中包括所述基础安装包对应的至少一个第一主可执行文件标识;所述第二标识列表中包括所述待接入目标渠道对应的至少一个第二主可执行文件标识;
基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录。
2.根据权利要求1所述的方法,其特征在于,获取应用程序基础安装包的项目目录之前,还包括:
调用目标编译插件,生成所述基础安装包对应的所述第一标识列表,以及生成待接入的至少一个渠道分别对应的所述第二标识列表;
将所述第一标识列表和所述第二标识列表保存到所述基础安装包的所述项目目录中。
3.根据权利要求2所述的方法,其特征在于,调用目标编译插件,生成所述基础安装包对应的所述第一标识列表,以及生成待接入的至少一个渠道分别对应的所述第二标识列表,包括:
调用所述目标编译插件,针对所述应用程序,创建第一插件任务,以及针对每个待接入的渠道,创建对应的第二插件任务;
通过创建的所述第一插件任务和每个待接入的渠道对应的所述第二插件任务,生成所述第一标识列表,以及至少一个渠道分别对应的所述第二标识列表。
4.根据权利要求1~3任一所述的方法,其特征在于,获取应用程序基础安装包的项目目录,包括:
反编译所述应用程序基础安装包,并在得到的反编译基础安装包中,查找所述应用程序基础安装包的项目目录。
5.根据权利要求1所述的方法,其特征在于,基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录,包括:
从所述基础安装包的主可执行文件目录中,移出对应的文件标识没有存在于所述第一标识列表中的文件;
将所述基础安装包中存在于所述第一标识列表的文件,和所述目标渠道的渠道软件包中存在于所述第二标识列表的文件,移入所述基础安装包的主可执行文件目录中,得到所述合并后主可执行文件目录。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述基础安装包中位于所述第一标识列表外的文件,和所述目标渠道的渠道软件包中位于所述第二标识列表外的文件,分别移入所述基础安装包的至少一个辅可执行文件目录中;
将所述合并后主可执行文件目录,与所述至少一个辅可执行文件目录,作为所述应用程序的可执行文件目录。
7.根据权利要求6所述的方法,其特征在于,确定所述应用程序的可执行文件目录后,所述方法还包括:
采用目标反编译工具,对所述可执行文件目录下的文件进行反编译,生成所述应用程序的可执行文件。
8.根据权利要求7所述的方法,其特征在于,采用目标反编译工具,对所述可执行文件目录下的文件进行反编译,生成所述应用程序的可执行文件,包括:
采用所述目标反编译工具,对所述合并后主可执行文件目录下的文件进行反编译,生成至少一个主可执行文件;
采用所述目标反编译工具,对所述至少一个辅可执行文件目录下的文件进行反编译,生成至少一个辅可执行文件;
将所述至少一个主可执行文件和所述至少一个辅可执行文件,作为所述应用程序的可执行文件。
9.一种可执行文件生成的装置,其特征在于,包括:
获取模块,用于获取应用程序基础安装包的项目目录;
查找模块,用于从所述项目目录中,查找所述基础安装包对应的第一标识列表,以及待接入目标渠道对应的第二标识列表;所述第一标识列表中包括所述基础安装包对应的至少一个第一主可执行文件标识;所述第二标识列表中包括所述待接入目标渠道对应的至少一个第二主可执行文件标识;
生成模块,用于基于所述第一标识列表和所述第二标识列表,生成所述应用程序在所述目标渠道下的合并后主可执行文件目录。
10.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至8任一所述的可执行文件生成的方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至8任一项所述的可执行文件生成的方法的步骤。
CN202110499682.5A 2021-05-08 2021-05-08 一种可执行文件生成的方法、装置以及计算机存储介质 Active CN113127005B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110499682.5A CN113127005B (zh) 2021-05-08 2021-05-08 一种可执行文件生成的方法、装置以及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110499682.5A CN113127005B (zh) 2021-05-08 2021-05-08 一种可执行文件生成的方法、装置以及计算机存储介质

Publications (2)

Publication Number Publication Date
CN113127005A true CN113127005A (zh) 2021-07-16
CN113127005B CN113127005B (zh) 2024-05-24

Family

ID=76781139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110499682.5A Active CN113127005B (zh) 2021-05-08 2021-05-08 一种可执行文件生成的方法、装置以及计算机存储介质

Country Status (1)

Country Link
CN (1) CN113127005B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755713A (zh) * 2023-08-16 2023-09-15 深圳传趣网络技术有限公司 应用程序的生成方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008039958A2 (en) * 2006-09-27 2008-04-03 Bright Hub, Inc. Software development and sales life-cycle services
CN107122200A (zh) * 2016-02-25 2017-09-01 博雅网络游戏开发(深圳)有限公司 加载插件sdk的方法、系统及客户端
CN108829405A (zh) * 2018-06-04 2018-11-16 网易(杭州)网络有限公司 渠道包的生成方法及装置、存储介质、电子装置
CN109542461A (zh) * 2018-10-16 2019-03-29 深圳壹账通智能科技有限公司 应用安装包的发布方法、终端设备及介质
CN110764791A (zh) * 2019-10-25 2020-02-07 网易(杭州)网络有限公司 小程序的渠道适配方法、装置及电子设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107797808A (zh) * 2016-08-31 2018-03-13 腾讯科技(深圳)有限公司 应用安装包处理方法及装置
CN108280341B (zh) * 2016-12-30 2020-06-30 腾讯科技(深圳)有限公司 渠道号添加、安装包校验方法及装置
CN111443918A (zh) * 2018-12-29 2020-07-24 北京奇虎科技有限公司 业务对象安装包的渠道接入方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008039958A2 (en) * 2006-09-27 2008-04-03 Bright Hub, Inc. Software development and sales life-cycle services
CN107122200A (zh) * 2016-02-25 2017-09-01 博雅网络游戏开发(深圳)有限公司 加载插件sdk的方法、系统及客户端
CN108829405A (zh) * 2018-06-04 2018-11-16 网易(杭州)网络有限公司 渠道包的生成方法及装置、存储介质、电子装置
CN109542461A (zh) * 2018-10-16 2019-03-29 深圳壹账通智能科技有限公司 应用安装包的发布方法、终端设备及介质
CN110764791A (zh) * 2019-10-25 2020-02-07 网易(杭州)网络有限公司 小程序的渠道适配方法、装置及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄浩华;崔展齐;潘敏学;王林章;李宣东;: "静动态结合的恶意Android应用自动检测技术", 信息安全学报, no. 04 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755713A (zh) * 2023-08-16 2023-09-15 深圳传趣网络技术有限公司 应用程序的生成方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113127005B (zh) 2024-05-24

Similar Documents

Publication Publication Date Title
CN108829378B (zh) 一种应用软件的开发方法、装置及电子设备
CN111209005B (zh) 程序文件的编译方法、装置和计算机可读存储介质
CN111399840A (zh) 一种模块开发方法及装置
CN106850650B (zh) 用于游戏客户端访问数据的方法及客户端游戏系统
CN106055375A (zh) 应用程序安装方法及装置
CN114089975B (zh) 计算软件的扩展方法、装置、非易失性存储介质及处理器
CN110059456A (zh) 代码保护方法、代码保护装置、存储介质与电子设备
CN105138351A (zh) 一种为宿主配置插件包的方法与装置
CN113127005A (zh) 一种可执行文件生成的方法、装置以及计算机存储介质
CN113590144B (zh) 一种依赖处理方法及装置
Xie et al. Trimming mobile applications for bandwidth-challenged networks in developing regions
CN112835587B (zh) 一种编译集成方法及装置
CN111488286A (zh) 一种Android模块独立开发的方法及装置
CN110555185A (zh) 基于pc客户端的页面定制方法及系统
CN114706586A (zh) 代码编译、代码运行方法、装置、计算机设备及存储介质
CN113703753B (zh) 用于产品开发的方法、装置和产品开发系统
CN113239328B (zh) 一种业务功能获取方法、装置、电子设备和存储介质
CN114356379A (zh) 基于备份的服务升级方法、装置、设备及存储介质
CN114253595A (zh) 代码仓库管理方法、装置、计算机设备及存储介质
CN114356342A (zh) 一种编译方法及装置
CN113127055A (zh) 动态链接库文件的生成方法、应用校验方法、装置及设备
CN113326046A (zh) 获取编译时长的方法和装置
CN112486465A (zh) 一种代码更新方法及装置
CN114371852B (zh) 一种编译方法及装置
CN113986240A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: Tiktok vision (Beijing) Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant