CN112052013B - 软件包的生成方法及装置、存储介质、电子装置 - Google Patents
软件包的生成方法及装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN112052013B CN112052013B CN202010765803.1A CN202010765803A CN112052013B CN 112052013 B CN112052013 B CN 112052013B CN 202010765803 A CN202010765803 A CN 202010765803A CN 112052013 B CN112052013 B CN 112052013B
- Authority
- CN
- China
- Prior art keywords
- file
- resource
- apk
- target
- configuration information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012545 processing Methods 0.000 claims description 28
- 238000004806 packaging method and process Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 18
- 238000012856 packing Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 230000006835 compression Effects 0.000 claims description 2
- 238000007906 compression Methods 0.000 claims description 2
- 238000009517 secondary packaging Methods 0.000 claims 2
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000006978 adaptation Effects 0.000 abstract description 4
- 238000011161 development Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000012858 packaging process Methods 0.000 description 2
- DWDGSKGGUZPXMQ-UHFFFAOYSA-N OPPO Chemical compound OPPO DWDGSKGGUZPXMQ-UHFFFAOYSA-N 0.000 description 1
- 108010092377 aminoalcoholphosphotransferase Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 238000012360 testing method Methods 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/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种软件包的生成方法及装置、存储介质、电子装置,其中,该方法应用于历史数据之间的关联展示,包括:获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;对所述源APK文件进行反编译,得到中间文件;根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,其中,每个第一目标APK文件对应一个目标发布渠道。通过本发明,解决了相关技术生成多渠道APK文件效率低的技术问题,提高了APK文件的开发效率,提高了APK文件的渠道适配率。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种软件包的生成方法及装置、存储介质、电子装置。
背景技术
相关技术中,互联网在近些年发展迅速,智能手机已经成为人们生活中不可缺少的组成部分。以智能手机作为依托,移动端游戏飞速发展,移动端网络游戏的上线推广依托于各种渠道发行平台,如应用宝、豌豆荚、华为、魅族、联想、VIVO、OPPO应用商店等。各渠道发行平台通过多种方式进行游戏推广,并为用户提供下载、登录、支付服务发布到发行平台的游戏需要接入对应平台所提供的SDK(Software DevelopmentKit),使用发行平台所提供的用户***与支付***。这就需要游戏开发者逐个接入各个发行平台的SDK,而面对众多发行平台的各类SDK及接入文档,要想正常完成这些平台SDK的接入不仅工作量大并且过程极易出现差错。
相关技术中,游戏使用第三方的多渠道接入平台,用户的登录数据和支付数据将使用第三方平台提供的功能,这样对公司和用户都存在巨大的安全隐患,有些应用商店也不会允许这种APK包上线,为了避免安全隐患,选择将渠道的登录配置信息和支付配置信息等都封装至APK包,为了适配多个第三个的接入渠道,在打包APK文件时,需要针对不同的渠道分别做一个软件包,导致软件开发效率低。
针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
发明内容
本发明实施例提供了一种软件包的生成方法及装置、存储介质、电子装置。
根据本发明的一个实施例,提供了一种软件包的生成方法,包括:获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;对所述源APK文件进行反编译,得到中间文件;根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,其中,每个第一目标APK文件对应一个目标发布渠道。
可选的,在根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件之后,所述方法还包括:读取配置参数模板,其中,所述配置参数模板包括多个与目标发布渠道分别对应的需求参数,所述需求参数包括所述配置信息和拓展参数;根据所述中间文件和所述配置参数模板分别生成多个第二目标APK文件。
可选的,在获取线上游戏的源APK文件,以及多个目标发布渠道的配置信息之后,所述方法还包括:确定所述目标发布渠道的属性信息,其中,所述属性信息用于表征通过所述目标发布渠道待发布的APK文件是否允许压缩;若所述属性信息表征APK文件不允许压缩,将所述配置信息打包生成压缩文件,在所述源APK文件中添加所述压缩文件,得到第三目标APK文件。
可选的,根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件包括:获取所述中间文件中的第一资源和第二资源,其中,所述第一资源和第二资源分别适配aapt编译工具和aapt2编译工具;采用所述第二资源覆盖所述第一资源,并使用aapt2编译工具编译所述第二资源和多个所述配置信息,分别生成多个第一目标APK文件。
可选的,采用所述第二资源覆盖所述第一资源包括:对所述第一资源进行去重、编译和反编译,得到对应的第二资源。
可选的,对所述源APK文件进行反编译,得到中间文件,包括:采用APKTOOL组件反编译所述源APK文件,得到第一smali文件、第一资源文件及资源描述文件,其中,所述第一资源文件包括:图片资源、布局资源、字符串资源;采用aapt、appt2对所述第一资源文件及资源描述文件重新进行编译、链接生成新的资源文件、资源描述文件及R.java文件;采用javac.exe组件、jar.exe组件、dx.jar组件、baksmali.jar组件分别对所述R.java文件进行处理,对应生成class文件、jar文件、dex文件、第二smali文件,并与所述第一smali文件合并。
可选的,根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件包括:根据所述中间文件生成第二资源文件和安卓接口定义语言AIDL文件,其中,所述第二资源文件包括所述源APK文件中的资源标识和资源索引;将所述第二资源文件和所述AIDL文件编译成第一JAR包;将所述第一JAR包和第二JAR包编译成Dex文件,其中,所述配置信息包括所述第二JAR包;打包所述Dex文件和第三资源文件得到APK文件,其中,所述配置信息包括所述第三资源文件,所述第三资源文件包括所述配置信息中的资源标识和资源索引;对所述APK文件进行签名,并通过内存映射机制对所述APK文件进行内存对齐处理,得到所述第一目标APK文件。
根据本发明的另一个实施例,提供了一种软件包的生成装置,包括:获取模块,用于获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;处理模块,用于对所述源APK文件进行反编译,得到中间文件;第一生成模块,用于根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,其中,每个第一目标APK文件对应一个目标发布渠道。
可选的,所述装置还包括:读取模块,用于在所述第一生成模块根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件之后,读取配置参数模板,其中,所述配置参数模板包括多个与目标发布渠道分别对应的需求参数,所述需求参数包括所述配置信息和拓展参数;第二生成模块,用于根据所述中间文件和所述配置参数模板分别生成多个第二目标APK文件。
可选的,所述装置还包括:读取模块,用于在所述获取模块获取线上游戏的源APK文件,以及多个目标发布渠道的配置信息之后,确定所述目标发布渠道的属性信息,其中,所述属性信息用于表征通过所述目标发布渠道待发布的APK文件是否允许压缩;第三生成模块,用于若所述属性信息表征APK文件不允许压缩,将所述配置信息打包生成压缩文件,在所述源APK文件中添加所述压缩文件,得到第三目标APK文件。
可选的,所述第一生成模块包括:获取单元,用于获取所述中间文件中的第一资源和第二资源,其中,所述第一资源和第二资源分别适配aapt编译工具和aapt2编译工具;第一生成单元,用于采用所述第二资源覆盖所述第一资源,并使用aapt2编译工具编译所述第二资源和多个所述配置信息,分别生成多个第一目标APK文件。
可选的,所述生成单元包括:处理子单元,用于对所述第一资源进行去重、编译和反编译,得到对应的第二资源。
可选的,所述处理模块包括:反编译单元,用于采用APKTOOL组件反编译所述源APK文件,得到第一smali文件、第一资源文件及资源描述文件,其中,所述第一资源文件包括:图片资源、布局资源、字符串资源;生成单元,用于采用aapt、appt2对所述第一资源文件及资源描述文件重新进行编译、链接生成新的资源文件、资源描述文件及R.java文件;处理单元,用于采用javac.exe组件、jar.exe组件、dx.jar组件、baksmali.jar组件分别对所述R.java文件进行处理,对应生成class文件、jar文件、dex文件、第二smali文件,并与所述第一smali文件合并。
可选的,所述第一生成模块包括:第二生成单元,用于根据所述中间文件生成第二资源文件和安卓接口定义语言AIDL文件,其中,所述第二资源文件包括所述源APK文件中的资源标识和资源索引;第一编译单元,用于将所述第二资源文件和所述AIDL文件编译成第一JAR包;第二编译单元,用于将所述第一JAR包和第二JAR包编译成Dex文件,其中,所述配置信息包括所述第二JAR包;打包单元,用于打包所述Dex文件和第三资源文件得到APK文件,其中,所述配置信息包括所述第三资源文件,所述第三资源文件包括所述配置信息中的资源标识和资源索引;处理单元,用于对所述APK文件进行签名,并通过内存映射机制对所述APK文件进行内存对齐处理,得到所述第一目标APK文件。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息,然后对源APK文件进行反编译,得到中间文件,最后根据中间文件和多个配置信息分别生成多个第一目标APK文件,通过逆向功能反编译源APK文件,并结合各个发布渠道的配置信息进行重新打包,可以同时打包和生成多个渠道包,解决了相关技术生成多渠道APK文件效率低的技术问题,提高了APK文件的开发效率,提高了APK文件的渠道适配率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种软件包的生成计算机的硬件结构框图;
图2是根据本发明实施例的一种软件包的生成方法的流程图;
图3是本发明实施例的多渠道打包工具前端后端整体架构图;
图4是根据本发明实施例的一种软件包的生成装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本申请实施例一所提供的方法实施例可以在手机、平板、服务器、计算机或者类似的电子终端中执行。以运行在计算机上为例,图1是本发明实施例的一种软件包的生成计算机的硬件结构框图。如图1所示,计算机10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机的结构造成限定。例如,计算机10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种软件包的生成方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种软件包的生成方法,图2是根据本发明实施例的一种软件包的生成方法的流程图,如图2所示,该流程包括:
步骤S202,获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;
本实施例的源APK文件是开发人员制作的线上游戏的软件包,包括对应游戏后台策略的代码文件和游戏前端的资源文件,资源文件包括图片,布局,文字等信息。
配置信息包括渠道资源包、渠道配置文件、SDKCore框架包、公共资源文件等,不同的配置信息可以适配不同发布渠道中的登录界面、支付接口,下载链路,安装工具等。
步骤S204,对源APK文件进行反编译,得到中间文件;
通过将APK文件反编译为中间文件,可以源APK文件包括的子文件和资源、配置表结合目标发布渠道的配置信息进行二次封装打包,以使软件包可以上传到不同的应用商店,并被用户从不同的渠道下载使用。
步骤S206,根据中间文件和多个配置信息分别生成多个第一目标APK文件,其中,每个第一目标APK文件对应一个目标发布渠道;
目标APK文件也叫渠道包,在生成之后,还可以根据渠道标识发布到对应的应用商店。
通过上述步骤,获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息,然后对源APK文件进行反编译,得到中间文件,最后根据中间文件和多个配置信息分别生成多个第一目标APK文件,通过逆向功能反编译源APK文件,并结合各个发布渠道的配置信息进行重新打包,可以同时打包和生成多个渠道包,解决了相关技术生成多渠道APK文件效率低的技术问题,提高了APK文件的开发效率,提高了APK文件的渠道适配率。
在本实施例中,在根据中间文件和多个配置信息分别生成多个第一目标APK文件之后,还包括:读取配置参数模板,其中,配置参数模板包括多个与目标发布渠道分别对应的需求参数,需求参数包括配置信息和拓展参数;根据中间文件和配置参数模板分别生成多个第二目标APK文件。
在一个示例中,第一目标APK文件为正式版,第二目标APK文件为测试版或者beta版,第二目标APK文件会根据运营或者产品的需求修改一些配置,从而对同一款线上游戏发布多个版本,以供用户进行多样性选择,版本间差异化的功能包括分享,推送,热修复等。
在一些场景中,电子游戏的商务运营根据现有业务需求及考虑到后续业务拓展,对同一款游戏发布多个版本,二次分发的差异主要在各个配置文件、参数的不同,所以依据也主要着重考虑未来有不同的参数、配置加入时的扩展。这种情况下,已经生成和发布的渠道包(第一目标APK文件)需要进行二次分发,还需要对原有分享等相应的参数都需要做调整修改。以往,这个工作需要一个一个的出包,对于一次需要生成上百个子渠道而言,工作量非常巨大。本实施例针对这种场景,设计了配置参数模板,可以针对不同的渠道动态的添加不同类型的参数,一次性生成所有不同的二次分包,做到一次生成该渠道包及其所有的二次分包,也能大大减少游戏开发出包的时间。
在本实施例的一个实施方式中,在获取线上游戏的源APK文件,以及多个目标发布渠道的配置信息之后,还包括:确定目标发布渠道的属性信息,其中,属性信息用于表征通过目标发布渠道待发布的APK文件是否允许压缩;若属性信息表征APK文件不允许压缩,将配置信息打包生成压缩文件,在源APK文件中添加压缩文件,得到第三目标APK文件。
在一些场景中,有些游戏在生成APK时,对资源的压缩方式有比较特殊的要求,比如不能压缩,也没有统一的后缀名约束。这会导致使用已有的工具在进行重新打包时,不能满足游戏快速加载的需求。本实施例通过使用替代手段,重新用无压缩的方式,将配置信息中的资源通过添加压缩文件的方式重新添加进去,绕过所使用的打包方式,以压缩文件的形式重新无压缩添加这些文件,从而解决了上述问题,避免了游戏开发人员重新修改代码的问题。
在本实施例中,根据中间文件和多个配置信息分别生成多个第一目标APK文件包括:
S11,获取中间文件中的第一资源和第二资源,其中,第一资源和第二资源分别适配aapt(Android Asset Packaging Tool)编译工具和aapt2编译工具;
本实施例的aapt和aapt2都是编译和打包资源的工具,aapt2是在aapt上做了优化,分别可以编译和打包不同类型的资源。在打包过程中,自动调用aapt,将资源文件编译成二进制文件。以aapt2为例,将原先的资源编译打包过程拆分成了两部分,即编译和链接,编译:将资源文件编译为二进制格式文件,链接:将编译后的所有文件合并,打包成一个单独文件。这种方式可以很好的提升资源的编译性能,比如只有一个资源文件发送改变时,只需要重新编译改变的文件,然后将其与其他未改变的资源进行链接即可。而aapt是将所有资源进行merge,merge完后将所有资源进行编译,产生一个资源ap文件,该文件是一个压缩包,这样带来的后果就是即使只改变了一个资源文件,也要进行全量编译。
S12,采用第二资源覆盖第一资源,并使用aapt2编译工具编译第二资源和多个配置信息,分别生成多个第一目标APK文件。
可选的,采用第二资源覆盖第一资源包括:对第一资源进行去重、编译和反编译,得到对应的第二资源。
由于aapt与aapt2对资源的编译方式差异明显,可能会面临渠道包与游戏母包使用的资源不兼容。本实施例引入aapt2的资源编译方式。使得之前必须要求游戏降开发工具版本出包的问题,得到改善。目前aapt2开发的游戏日渐增多,游戏与渠道资源冲突的问题以往较为突出。在提供了资源的覆盖选项之后,特别是aapt2的引入改变了资源的编译方式,对这种状况有了很大的改善,提高了适配能力。
在本实施例的一个实施方式中,对源APK文件进行反编译,得到中间文件,包括:采用APKTOOL组件反编译所述源APK文件,得到第一smali文件、第一资源文件及资源描述文件,其中,所述第一资源文件包括:图片资源、布局资源、字符串资源;采用aapt、appt2对所述第一资源文件及资源描述文件重新进行编译、链接生成新的资源文件、资源描述文件及R.java文件;采用javac.exe组件、jar.exe组件、dx.jar组件、baksmali.jar组件分别对所述R.java文件进行处理,对应生成class文件、jar文件、dex文件、第二smali文件,并与所述第一smali文件合并。
在本实施方式中,采用APKTOOL组件反编译所述源APK文件,得到smali文件、资源文件及资源描述文件。采用aapt、appt2对资源文件及资源描述文件重新进行编译、链接生成新的资源、资源描述文件及R.java文件。采用javac.exe、jar.exe、dx.jar、baksmali.jar组件对R.java文件处理,依次生成.class、.jar、.dex、.smali文件。与前述反编译得到的smali文件合并。最后采用APKTOOL组件正向编译新的资源、资源描述文件,以及合并后的smali文件,重新生成APK文件。
本实施例利用资源APKTOOL工具反编译APK文件得到资源文件,可以还原源APK文件中的9-patch图片、布局、字符串等一系列资源。
在本实施例的一个实施方式中,根据中间文件和多个配置信息分别生成多个第一目标APK文件包括:根据中间文件生成第二资源文件和安卓接口定义语言AIDL文件,其中,第二资源文件包括源APK文件中的资源标识和资源索引;将第二资源文件和AIDL文件编译成第一JAR包;将第一JAR包和第二JAR包编译成Dex文件,其中,配置信息包括第二JAR包;打包Dex文件和第三资源文件得到APK文件,其中,配置信息包括第三资源文件,第三资源文件包括配置信息中的资源标识和资源索引;对APK文件进行签名,并通过内存映射机制对APK文件进行内存对齐处理,得到第一目标APK文件。
APK文件在逆向之后通常需要重新打包成APK文件,打包流程如下所述,这个操作过程需要用到APKTOOL等工具。打包过程分为以下三步:
第一步,是生成R.java和resources.arsc文件等资源文件以及生成aidl对应的文件,生成R.java和resources.arsc文件主要利用到AAPT工具,而生成aidl对应的文件主要利用到AIDL工具:
第二步,则是把资源文件和代码一起编译成APK,首先将第一步生成的R.java和aidl对应的文件、以及Java代码放在一起,使用JDK里的JAVAC工具将Java代码编译成Class文件并打成JAR包;然后将得到的JAR包和第三方JAR包放在一起,使用DX工具编译成Dex文件;接着将得到的Dex文件和其他资源放在一起,通过APKBUILDER工具生成APK文件,这一步得到的APK文件是未签名的;
第三步,将未签名的APK进行签名,给APK签名主要使用JARSIGNER工具;对签名后的APK使用ZIPALIGN工具进行内存对齐优化处理,ZIPALIGN处理过的APK通过内存映射机制,使访问速度得到极大提升。
图3是本发明实施例的多渠道打包工具前端后端整体架构图,包括游戏服务端、游戏接入端、包括渠道接入端的服务端、打包工具、渠道服务器。通过增加SDK服务端(服务端)及SDK客户端(打包工具)作为中转层,由SDK服务端与SDKCore框架负责对接所有发行平台渠道,不由游戏直接接触,为了自动化实现,故而增加打包工具,而打包工具目的是将游戏客户端,SDKCore框架以及渠道SDK整合在一起完成渠道。
打包的过程游戏接入端将游戏相关资源放入打包工具中,打包工具通过打包工具服务端下载所需渠道接入端中渠道资源包、SDKCore框架包、渠道配置文件,最终经过用户的一系列对于打包工具的操作,形成多个渠道游戏包。
对于游戏接入端,首先根据配合打包工具的对外SDK接入包(亦称SDKCore框架包)与对应文档进行接入,该包对游戏提供了统一接入接口,接口为游戏提供了所使用发行平台服务的抽象规约,主要目的为统一对外游戏接入,框架内部内置接口打点监控,方便后期排查接口传参,游戏接入SDKCore框架包形成母包APK,将母包APK放入打包工具中,选择需要的渠道,进行一键打包。框架内部提供了模板规定渠道模块包的实现流程标准,利用动态加载技术将打包工具下载的渠道包与游戏包进行完整融合,最终完成代码接口调用完整流程。
对于渠道接入端,首先根据各个发行平台所提供SDK(亦称渠道SDK)的接入文档。在SDKCore框架包的模板流程控制下接入渠道SDK相关功能。通过自定义渠道打包脚本,将接入的代码生成指定自定义格式的渠道资源包,上传打包工具服务器,用于之后打包工具根据用户选择相应的渠道,下载对应渠道资源包与游戏母包APK进行打包操作。
针对渠道配置文件,首先根据各个发行平台对于指定游戏所申请的渠道配置参数,运营配置到服务端指定位置。打包工具会根据用户选择相应的渠道,下载对应渠道配置文件,SDKCore框架包会读取渠道配置参数文件,获取指定游戏渠道配置参数。对于SDKCore框架包,对外给游戏提供统一接口,对内给渠道接入端提供接入渠道SDK模板,并且自身完成统一登录、支付流程控制及相关打点工作。
对于多渠道打包工具,从模块角度划分,包含界面配置模块,资源下载模块、多渠道打包模块、日志管理模块等各个模块。首先根据游戏提供的母包APK,使用用户使用打包工具所选相关配置,将游戏母包APK,渠道资源包,SDKCore框架包,渠道资源文件,一起进行打包,完成打包操作,实现发行平台所要求的相关功能。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种软件包的生成装置,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供了一种软件包的生成装置,应用于历史数据之间的关联展示,所述装置用于:输入需要查询的两个历史数据节点,通过搜索,将所述两个历史数据节点之间的关联节点用路径连接展现。
图4是根据本发明实施例的一种软件包的生成装置的结构框图,应用在客户端,如图4所示,该装置包括:获取模块40,处理模块42,第一生成模块44,其中,
获取模块40,用于获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;
处理模块42,用于对所述源APK文件进行反编译,得到中间文件;
第一生成模块44,用于根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,其中,每个第一目标APK文件对应一个目标发布渠道。
可选的,所述装置还包括:读取模块,用于在所述第一生成模块根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件之后,读取配置参数模板,其中,所述配置参数模板包括多个与目标发布渠道分别对应的需求参数,所述需求参数包括所述配置信息和拓展参数;第二生成模块,用于根据所述中间文件和所述配置参数模板分别生成多个第二目标APK文件。
可选的,所述装置还包括:读取模块,用于在所述获取模块获取线上游戏的源APK文件,以及多个目标发布渠道的配置信息之后,确定所述目标发布渠道的属性信息,其中,所述属性信息用于表征通过所述目标发布渠道待发布的APK文件是否允许压缩;第三生成模块,用于若所述属性信息表征APK文件不允许压缩,将所述配置信息打包生成压缩文件,在所述源APK文件中添加所述压缩文件,得到第三目标APK文件。
可选的,所述第一生成模块包括:获取单元,用于获取所述中间文件中的第一资源和第二资源,其中,所述第一资源和第二资源分别适配aapt编译工具和aapt2编译工具;第一生成单元,用于采用所述第二资源覆盖所述第一资源,并使用aapt2编译工具编译所述第二资源和多个所述配置信息,分别生成多个第一目标APK文件。
可选的,所述生成单元包括:处理子单元,用于对所述第一资源进行去重、编译和反编译,得到对应的第二资源。
可选的,所述处理模块包括:反编译单元,用于采用APKTOOL组件反编译所述源APK文件,得到第一smali文件、第一资源文件及资源描述文件,其中,所述第一资源文件包括:图片资源、布局资源、字符串资源;生成单元,用于采用aapt、appt2对所述第一资源文件及资源描述文件重新进行编译、链接生成新的资源文件、资源描述文件及R.java文件;处理单元,用于采用javac.exe组件、jar.exe组件、dx.jar组件、baksmali.jar组件分别对所述R.java文件进行处理,对应生成class文件、jar文件、dex文件、第二smali文件,并与所述第一smali文件合并。
可选的,所述第一生成模块包括:第二生成单元,用于根据所述中间文件生成第二资源文件和安卓接口定义语言AIDL文件,其中,所述第二资源文件包括所述源APK文件中的资源标识和资源索引;第一编译单元,用于将所述第二资源文件和所述AIDL文件编译成第一JAR包;第二编译单元,用于将所述第一JAR包和第二JAR包编译成Dex文件,其中,所述配置信息包括所述第二JAR包;打包单元,用于打包所述Dex文件和第三资源文件得到APK文件,其中,所述配置信息包括所述第三资源文件,所述第三资源文件包括所述配置信息中的资源标识和资源索引;处理单元,用于对所述APK文件进行签名,并通过内存映射机制对所述APK文件进行内存对齐处理,得到所述第一目标APK文件。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;
S2,对所述源APK文件进行反编译,得到中间文件;
S3,根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,其中,每个第一目标APK文件对应一个目标发布渠道。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;
S2,对所述源APK文件进行反编译,得到中间文件;
S3,根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,其中,每个第一目标APK文件对应一个目标发布渠道。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (6)
1.一种软件包的生成方法,其特征在于,包括:
获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;
对所述源安卓应用程序包APK文件进行反编译,得到中间文件,包括:采用APKTOOL组件反编译所述源安卓应用程序包APK文件,得到第一smali文件、第一资源文件及资源描述文件,其中,所述第一资源文件包括:图片资源、布局资源、字符串资源;采用aapt、appt2对所述第一资源文件及资源描述文件重新进行编译、链接生成新的资源文件、资源描述文件及R.java文件;采用javac.exe组件、jar.exe组件、dx.jar组件、baksmali.jar组件分别对所述R.java文件进行处理,对应生成class文件、jar文件、dex文件、第二smali文件,并与所述第一smali文件合并;
根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,包括:获取所述中间文件中的第一资源和第二资源,其中,所述第一资源和第二资源分别适配aapt编译工具和aapt2编译工具;采用所述第二资源覆盖所述第一资源,并使用aapt2编译工具编译所述第二资源和多个所述配置信息,分别生成多个第一目标APK文件;以使得源安卓应用程序包APK文件包括子文件和资源、配置表结合目标发布渠道的配置信息进行二次封装打包,以使软件包上传到不同应用平台,其中,每个第一目标APK文件对应一个目标发布渠道;
在根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件之后,读取配置参数模板,其中,所述配置参数模板包括多个与目标发布渠道分别对应的需求参数,所述需求参数包括所述配置信息和拓展参数;根据所述中间文件和所述配置参数模板分别生成多个第二目标APK文件;
在获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息之后,确定所述目标发布渠道的属性信息,其中,所述属性信息用于表征通过所述目标发布渠道待发布的APK文件是否允许压缩;若所述属性信息表征APK文件不允许压缩,将所述配置信息打包生成压缩文件,在所述源安卓应用程序包APK文件中添加所述压缩文件,得到第三目标APK文件。
2.根据权利要求1所述的方法,其特征在于,采用所述第二资源覆盖所述第一资源包括:
对所述第一资源进行去重、编译和反编译,得到对应的第二资源。
3.根据权利要求1所述的方法,其特征在于,根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件包括:
根据所述中间文件生成第二资源文件和安卓接口定义语言AIDL文件,其中,所述第二资源文件包括所述源安卓应用程序包APK文件中的资源标识和资源索引;
将所述第二资源文件和所述AIDL文件编译成第一JAR包;
将所述第一JAR包和第二JAR包编译成Dex 文件,其中,所述配置信息包括所述第二JAR包;
打包所述Dex 文件和第三资源文件得到APK 文件,其中,所述配置信息包括所述第三资源文件,所述第三资源文件包括所述配置信息中的资源标识和资源索引;
对所述APK 文件进行签名,并通过内存映射机制对所述APK 文件进行内存对齐处理,得到所述第一目标APK文件。
4.一种软件包的生成装置,其特征在于,包括:
获取模块,用于获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息;
处理模块,用于对所述源安卓应用程序包APK文件进行反编译,得到中间文件,包括:采用APKTOOL组件反编译所述源安卓应用程序包APK文件,得到第一smali文件、第一资源文件及资源描述文件,其中,所述第一资源文件包括:图片资源、布局资源、字符串资源;采用aapt、appt2对所述第一资源文件及资源描述文件重新进行编译、链接生成新的资源文件、资源描述文件及R.java文件;采用javac.exe组件、jar.exe组件、dx.jar组件、baksmali.jar组件分别对所述R.java文件进行处理,对应生成class文件、jar文件、dex文件、第二smali文件,并与所述第一smali文件合并;
第一生成模块,用于根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件,包括:获取所述中间文件中的第一资源和第二资源,其中,所述第一资源和第二资源分别适配aapt编译工具和aapt2编译工具;采用所述第二资源覆盖所述第一资源,并使用aapt2编译工具编译所述第二资源和多个所述配置信息,分别生成多个第一目标APK文件;以使得源安卓应用程序包APK文件包括子文件和资源、配置表结合目标发布渠道的配置信息进行二次封装打包,以使软件包上传到不同应用平台,其中,每个第一目标APK文件对应一个目标发布渠道;
所述装置还包括:读取模块,用于在所述第一生成模块根据所述中间文件和多个所述配置信息分别生成多个第一目标APK文件之后,读取配置参数模板,其中,所述配置参数模板包括多个与目标发布渠道分别对应的需求参数,所述需求参数包括所述配置信息和拓展参数;第二生成模块,用于根据所述中间文件和所述配置参数模板分别生成多个第二目标APK文件;
所述装置还包括:确定模块,用于在所述获取模块获取线上游戏的源安卓应用程序包APK文件,以及多个目标发布渠道的配置信息之后,确定所述目标发布渠道的属性信息,其中,所述属性信息用于表征通过所述目标发布渠道待发布的APK文件是否允许压缩;第三生成模块,用于若所述属性信息表征APK文件不允许压缩,将所述配置信息打包生成压缩文件,在所述源安卓应用程序包APK文件中添加所述压缩文件,得到第三目标APK文件。
5.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至3任一项中所述的方法。
6.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至3任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010765803.1A CN112052013B (zh) | 2020-08-03 | 2020-08-03 | 软件包的生成方法及装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010765803.1A CN112052013B (zh) | 2020-08-03 | 2020-08-03 | 软件包的生成方法及装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112052013A CN112052013A (zh) | 2020-12-08 |
CN112052013B true CN112052013B (zh) | 2024-06-14 |
Family
ID=73602227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010765803.1A Active CN112052013B (zh) | 2020-08-03 | 2020-08-03 | 软件包的生成方法及装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112052013B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905170B (zh) * | 2021-03-09 | 2024-04-19 | 百果园技术(新加坡)有限公司 | 渠道包的生成方法、装置、设备及存储介质 |
CN113076147B (zh) * | 2021-03-09 | 2024-02-02 | 北京一亩田新农网络科技有限公司 | 动态apk的资源加载方法、装置、***以及介质 |
CN112905194A (zh) * | 2021-03-18 | 2021-06-04 | 北京字节跳动网络技术有限公司 | 一种安装包生成方法及装置 |
CN113094121B (zh) * | 2021-04-30 | 2023-03-10 | 腾讯科技(成都)有限公司 | 一种数据处理方法、设备以及计算机可读存储介质 |
CN113656124B (zh) * | 2021-07-30 | 2024-06-28 | 北京百度网讯科技有限公司 | 登录页面的生成方法及其装置 |
CN114399065A (zh) * | 2022-01-10 | 2022-04-26 | 厦门点触科技股份有限公司 | 面向多渠道的游戏后台配置管理*** |
CN116755713A (zh) * | 2023-08-16 | 2023-09-15 | 深圳传趣网络技术有限公司 | 应用程序的生成方法、装置、设备及存储介质 |
CN116974586A (zh) * | 2023-09-22 | 2023-10-31 | 深圳传趣网络技术有限公司 | 多渠道应用打包方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844301A (zh) * | 2017-12-12 | 2018-03-27 | 苏州蜗牛数字科技股份有限公司 | 一种安卓应用渠道合包方法及装置 |
CN108829405A (zh) * | 2018-06-04 | 2018-11-16 | 网易(杭州)网络有限公司 | 渠道包的生成方法及装置、存储介质、电子装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893008A (zh) * | 2015-11-16 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 一种定制多渠道安装包的方法及装置 |
CN111443918A (zh) * | 2018-12-29 | 2020-07-24 | 北京奇虎科技有限公司 | 业务对象安装包的渠道接入方法及装置 |
CN111209001A (zh) * | 2019-12-19 | 2020-05-29 | 福建升腾资讯有限公司 | 批量生成安卓各渠道apk的方法、***、设备和介质 |
-
2020
- 2020-08-03 CN CN202010765803.1A patent/CN112052013B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844301A (zh) * | 2017-12-12 | 2018-03-27 | 苏州蜗牛数字科技股份有限公司 | 一种安卓应用渠道合包方法及装置 |
CN108829405A (zh) * | 2018-06-04 | 2018-11-16 | 网易(杭州)网络有限公司 | 渠道包的生成方法及装置、存储介质、电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112052013A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112052013B (zh) | 软件包的生成方法及装置、存储介质、电子装置 | |
US11762634B2 (en) | Systems and methods for seamlessly integrating multiple products by using a common visual modeler | |
CN108279902B (zh) | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 | |
WO2017185606A1 (zh) | 基于overlay机制的APK开发方法及*** | |
US20160170712A1 (en) | Method for integrally implementing development and release of APP | |
CN107967139B (zh) | 游戏的热更新方法及装置 | |
CN105302587B (zh) | 数据更新方法及装置 | |
CN110531962B (zh) | 小程序的开发处理方法、设备及计算机可读存储介质 | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
CN104991793A (zh) | 一种用于应用程序分包的方法、装置以及*** | |
CN112416353A (zh) | 渠道包打包方法、装置及计算机设备 | |
CN104346184A (zh) | 应用打包装置及方法 | |
CN110032392A (zh) | 服务治理方法及装置、存储介质和电子设备 | |
WO2016058488A1 (zh) | 一种用于提供sdk文件的方法与设备 | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN107239309B (zh) | 补丁生成方法及装置、更新方法、电子设备、存储介质 | |
CN112631622A (zh) | 应用安装方法、装置、服务器及计算机可读介质 | |
CN111045683A (zh) | 小程序代码编译方法、装置、设备及介质 | |
WO2019029451A1 (zh) | 发布移动应用的方法和电子设备 | |
CN110532016B (zh) | 版本管理方法、版本更新方法和版本管理*** | |
CN112286586A (zh) | 一种插件的配置方法及相关设备 | |
CN112181366B (zh) | 基于跨平台交互的移动应用开发框架 | |
CN112363771B (zh) | 应用程序的处理方法及相关产品 | |
CN109857374B (zh) | 移动应用的开发方法及装置 | |
CN116775087A (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 |