CN113190263B - 一种集成第三方sdk的方法及装置 - Google Patents
一种集成第三方sdk的方法及装置 Download PDFInfo
- Publication number
- CN113190263B CN113190263B CN202110429739.4A CN202110429739A CN113190263B CN 113190263 B CN113190263 B CN 113190263B CN 202110429739 A CN202110429739 A CN 202110429739A CN 113190263 B CN113190263 B CN 113190263B
- Authority
- CN
- China
- Prior art keywords
- apk
- folder
- file
- source
- 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.)
- Active
Links
Images
Classifications
-
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供的一种集成第三方SDK的方法及装置,通过反编译对源apk文件进行解码后,得到源apk文件夹;通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;将目标apk文件夹的数据集成到所述源apk文件夹中,完成第三方SDK的集成,基于一个源apk就能够批量生成多渠道多附加功能的apk文件包,并且不再需要关心SDK的版本更新工作;大量减少接入时间,根据接入的文档接入一次,所花时间仅与接入一个渠道SDK的时间相同,提高SDK的集成效率。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种集成第三方SDK的方法及装置。
背景技术
通常移动游戏开发商并不会只在一个渠道上线他们的游戏,接入越多的渠道,代表着可能获取越多的用户,但同时也代表着越多的接入SDK工作量、工期和费用。一款游戏要有足够的用户,甚至需要接入30家以上的各种渠道,以保障自己的市场覆盖率。单个SDK接入流程在一位有经验的全职客户端程序、一位全职服务端程序员、一位全职QA处理的情况下,需要3天时间才能完成。因此当一款产品面对30个甚至更多不同需求的渠道SDK时,人员成本和时间成本就会急剧增加。
按当前的SDK接入方式,需要分别接入并根据渠道重新打包,不同渠道包往往包含不同渠道相关代码,打包过程中需要重新完整编译,此种方式工作量大,费时费力,已经无法满足开发者的快速上线需求。
因此,需要一种集成第三方SDK的方法及装置,能够基于一个源apk,批量生成多渠道多附加功能的apk文件包,提高SDK的集成速度。
发明内容
(一)要解决的技术问题
为了解决现有技术的上述问题,本发明提供一种集成第三方SDK的方法及装置,能够基于一个源apk批量生成多渠道多附加功能的apk文件包,提高SDK的集成效率。
(二)技术方案
为了达到上述目的,本发明采用的一种技术方案为:
一种集成第三方SDK的方法,包括步骤:
S1、通过反编译对源apk文件进行解码后,得到源apk文件夹;
S2、通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;
S3、将目标apk文件夹的数据集成到所述源apk文件夹中,完成第三方SDK的集成。
为了达到上述目的,本发明采用的另一种技术方案为:
一种集成第三方SDK的装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
S1、通过反编译对源apk文件进行解码后,得到源apk文件夹;
S2、通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;
S3、将目标apk文件夹的数据集成到所述源apk文件夹中,完成第三方SDK的集成。
(三)有益效果
本发明的有益效果在于:通过反编译对源apk文件进行解码后,得到源apk文件夹;通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;将目标apk文件夹的数据集成到所述源apk文件夹中,完成第三方SDK的集成,基于一个源apk就能够批量生成多渠道多附加功能的apk文件包,并且不再需要关心SDK的版本更新工作;大量减少接入时间,根据接入的文档接入一次,所花时间仅与接入一个渠道SDK的时间相同,提高SDK的集成效率。
附图说明
图1为本发明实施例的集成第三方SDK的方法的流程图;
图2为本发明实施例的集成第三方SDK的装置的整体结构示意图。
【附图标记说明】
1:集成第三方SDK的装置;
2:存储器;
3:处理器。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
请参照图1,一种集成第三方SDK的方法,包括步骤:
S1、通过反编译对源apk文件进行解码后,得到源apk文件夹;
步骤S1具体为:
获取当前输入的apk文件,并判断所述apk文件是源apk还是源apk解码文件夹;
若是源apk,则对所述apk文件进行解码,得到相应的源apk解码文件夹,并生成输出路径;
若是源apk解码文件夹,则直接生成输出路径。
所述源apk文件夹中包括二进制dex代码、资源文件和so文件;
所述目标apk文件夹中包括二进制dex代码、资源文件和so文件。
S2、通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;
S3、将目标apk文件夹的数据集成到所述源apk文件夹中,完成第三方SDK的集成。
步骤S3具体包括:
S31、判断所述目标apk文件夹下的so文件支持的CPU类型是否多余所述源apk文件夹下的so文件支持的CPU类型,若是,则执行步骤S32;
S32、拷贝所述目标apk文件夹下的so文件到所述源apk文件夹下对应CPU的目录;
S33、对比所述目标apk文件夹和源apk文件夹,检测所述目标apk文件夹使用的是Android Support Library还是AndroidX Library,是否与所述源apk文件夹使用的一致;
若一致,则合并所述目标apk文件夹和源apk文件夹下的YML配置文件;
S34、在所述源apk文件夹下新建smali_classesX目录,其中X为整数值;
S35、拷贝所述目标apk文件夹下的smali文件到所述smali_classesX目录;
S36、合并所述目标apk文件夹下的AndroidManifest.xml和源apk文件夹下的AndroidManifest.xml;
S37、拷贝所述目标apk文件夹下的res文件到所述源apk文件夹的res文件夹,若所述源apk文件夹下已存在同名文件则忽略,并记录拷贝的文件列表;
S38、对比所述目标apk文件夹下的XML文件和源apk文件夹下的XML文件,拷贝所述源apk文件夹下不存在的属性值,记并录拷贝的属性值列表;
S39、根据所述文件列表和属性值列表,在所述源apk文件夹下新增文件配置和属性配置;
S310、获取所述源apk文件夹下所有R.smali文件,并将所述文件配置和属性配置按照资源类型名称,顺序增加到R.smali中各资源类型定义里;
S311、获取所述源apk文件夹下applicaion所在的smali文件,在onCreate方法中插入smali片段,调用目标apk的指定方法,目标apk的此方法使用hook方式来对源apk进行代码注入操作,完成第三方SDK的集成。
实施例二
本实施例和实施例一的区别在于,本实施例将结合具体的应用场景,进一步说明本发明上述集成第三方SDK的方法是如何实现的:
渠道SDK可分为两类:一是需要与原APP功能或者界面深度关联,如支付、广告等接口,需要App给出调用入口;二是是功能独立,仅需要在某一特定的系统方法入口调用其初始化命令,即可完成此SDK的接入。针对第一种SDK,在使用本工具之前,需要在原APP定义调用入口,并给出入口名称和调用方式,方便渠道打包工具集成完渠道SDK后调用。
apk文件作为Android构建完成后的应用文件,为zip格式,内部是为经过编译后的中间代码,包含二进制dex代码、资源文件、so文件等组成部分。即利用反编译工具解码apk后得到解码文件夹,根据apk的编译构建规则,将第三方SDK的二进制dex代码、资源文件、so文件等集成到解码后的解码文件夹中,以实现更加快速更加通用的SDK集成方式。
具体通过以下步骤,描述如何根据apk的编译构建规则,为一个apk文件插入sdk代码,并重新签名,生成可发布的apk。
1.1、获取当前输入的apk文件,并判断所述apk文件是源apk还是源apk解码文件夹;
若是源apk,则使用apkTool工具对所述apk文件进行解码,得到相应的源apk解码文件夹,并生成输出路径;
若是源apk解码文件夹,则直接生成输出路径。
所述源apk文件夹中包括二进制dex代码、资源文件和so文件;
所述目标apk文件夹中包括二进制dex代码、资源文件和so文件。
2、通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;
3.1、判断所述目标apk文件夹下的so文件支持的CPU类型是否多余所述源apk文件夹下的so文件支持的CPU类型,若是,则执行步骤3.2;
若是少于则提示so库检查错误,退出流程。
3.2、拷贝所述目标apk文件夹下的so文件到所述源apk文件夹下对应CPU的目录;
3.3、对比所述目标apk文件夹和源apk文件夹,检测所述目标apk文件夹使用的是Android Support Library还是AndroidX Library,是否与所述源apk文件夹使用的一致;
若一致,则合并所述目标apk文件夹和源apk文件夹下的YML配置文件,修改targetSdkVersion为28;
3.4、在所述源apk文件夹下新建smali_classesX目录,其中X为整数值,原目录下以smali_classes为前缀的文件夹最大值加1;
3.5、拷贝所述目标apk文件夹下的smali文件到所述smali_classesX目录;
3.6、合并所述目标apk文件夹下的AndroidManifest.xml和源apk文件夹下的AndroidManifest.xml;
3.7、拷贝所述目标apk文件夹下的res文件(不包括values文件夹)到所述源apk文件夹的res文件夹,若所述源apk文件夹下已存在同名文件则忽略,并记录拷贝的文件列表;
3.8、对比所述目标apk文件夹下/res/values文件夹下各XML文件和源apk文件夹下/res/values文件夹下各XML文件,拷贝所述源apk文件夹下不存在的属性值,记并录拷贝的属性值列表;
3.9、根据所述文件列表和属性值列表,在所述源apk文件夹下res/values/public.xml新增文件配置和属性配置;
3.10、获取所述源apk文件夹下所有R.smali文件,并将所述文件配置和属性配置按照资源类型名称,顺序增加到R.smali中各资源类型定义里;
3.11、获取所述源apk文件夹下applicaion所在的smali文件,在onCreate方法中插入smali片段,调用目标apk的指定方法,目标apk的此方法使用hook方式来对源apk进行代码注入操作,完成第三方SDK的集成。
实施例三
请参照图2,一种集成第三方SDK的装置1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述程序时实现实施例一中的各个步骤。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种集成第三方SDK的方法,其特征在于,包括步骤:
S1、通过反编译对源apk文件进行解码后,得到源apk文件夹;
S2、通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;
S3、将目标apk文件夹的数据集成到所述源apk文件夹中,完成第三方SDK的集成;
步骤S3具体包括:
S31、判断所述目标apk文件夹下的so文件支持的CPU类型是否多于所述源apk文件夹下的so文件支持的CPU类型,若是,则执行步骤S32;
S32、拷贝所述目标apk文件夹下的so文件到所述源apk文件夹下对应CPU的目录;
S33、对比所述目标apk文件夹和源apk文件夹,检测所述目标apk文件夹使用的是Android Support Library还是AndroidX Library,是否与所述源apk文件夹使用的一致;
若一致,则合并所述目标apk文件夹和源apk文件夹下的YML配置文件;
S34、在所述源apk文件夹下新建smali_classesX目录,其中X为整数值;
S35、拷贝所述目标apk文件夹下的smali文件到所述smali_classesX目录;
S36、合并所述目标apk文件夹下的AndroidManifest.xml和源apk文件夹下的AndroidManifest.xml;
S37、拷贝所述目标apk文件夹下的res文件到所述源apk文件夹的res文件夹,若所述源apk文件夹下已存在同名文件则忽略,并记录拷贝的文件列表;
S38、对比所述目标apk文件夹下的XML文件和源apk文件夹下的XML文件,拷贝所述源apk文件夹下不存在的属性值,记并录拷贝的属性值列表;
S39、根据所述文件列表和属性值列表,在所述源apk文件夹下新增文件配置和属性配置;
S310、获取所述源apk文件夹下所有R.smali文件,并将所述文件配置和属性配置按照资源类型名称,顺序增加到R.smali中各资源类型定义里;
S311、获取所述源apk文件夹下applicaion所在的smali文件,在onCreate方法中插入smali片段,调用目标apk的指定方法,目标apk的此方法使用hook方式来对源apk进行代码注入操作,完成第三方SDK的集成。
2.根据权利要求1所述的集成第三方SDK的方法,其特征在于,步骤S1具体为:
获取当前输入的apk文件,并判断所述apk文件是源apk还是源apk解码文件夹;
若是源apk,则对所述apk文件进行解码,得到相应的源apk解码文件夹。
3.根据权利要求1所述的集成第三方SDK的方法,其特征在于,所述源apk文件夹中包括二进制dex代码、资源文件和so文件;
所述目标apk文件夹中包括二进制dex代码、资源文件和so文件。
4.一种集成第三方SDK的装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
S1、通过反编译对源apk文件进行解码后,得到源apk文件夹;
S2、通过反编译对第三方SDK的目标apk文件进行解码后,得到目标apk文件夹;
S3、将目标apk文件夹的数据集成到所述源apk文件夹中,完成第三方SDK的集成;
步骤S3具体包括:
S31、判断所述目标apk文件夹下的so文件支持的CPU类型是否多于所述源apk文件夹下的so文件支持的CPU类型,若是,则执行步骤S32;
S32、拷贝所述目标apk文件夹下的so文件到所述源apk文件夹下对应CPU的目录;
S33、对比所述目标apk文件夹和源apk文件夹,检测所述目标apk文件夹使用的是Android Support Library还是AndroidX Library,是否与所述源apk文件夹使用的一致;
若一致,则合并所述目标apk文件夹和源apk文件夹下的YML配置文件;
S34、在所述源apk文件夹下新建smali_classesX目录,其中X为整数值;
S35、拷贝所述目标apk文件夹下的smali文件到所述smali_classesX目录;
S36、合并所述目标apk文件夹下的AndroidManifest.xml和源apk文件夹下的AndroidManifest.xml;
S37、拷贝所述目标apk文件夹下的res文件到所述源apk文件夹的res文件夹,若所述源apk文件夹下已存在同名文件则忽略,并记录拷贝的文件列表;
S38、对比所述目标apk文件夹下的XML文件和源apk文件夹下的XML文件,拷贝所述源apk文件夹下不存在的属性值,记并录拷贝的属性值列表;
S39、根据所述文件列表和属性值列表,在所述源apk文件夹下新增文件配置和属性配置;
S310、获取所述源apk文件夹下所有R.smali文件,并将所述文件配置和属性配置按照资源类型名称,顺序增加到R.smali中各资源类型定义里;
S311、获取所述源apk文件夹下applicaion所在的smali文件,在onCreate方法中插入smali片段,调用目标apk的指定方法,目标apk的此方法使用hook方式来对源apk进行代码注入操作,完成第三方SDK的集成。
5.根据权利要求4所述的集成第三方SDK的装置,其特征在于,步骤S1具体为:
获取当前输入的apk文件,并判断所述apk文件是源apk还是源apk解码文件夹;
若是源apk,则对所述apk文件进行解码,得到相应的源apk解码文件夹。
6.根据权利要求4所述的集成第三方SDK的装置,其特征在于,所述源apk文件夹中包括二进制dex代码、资源文件和so文件;
所述目标apk文件夹中包括二进制dex代码、资源文件和so文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429739.4A CN113190263B (zh) | 2021-04-21 | 2021-04-21 | 一种集成第三方sdk的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429739.4A CN113190263B (zh) | 2021-04-21 | 2021-04-21 | 一种集成第三方sdk的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190263A CN113190263A (zh) | 2021-07-30 |
CN113190263B true CN113190263B (zh) | 2022-05-17 |
Family
ID=76977861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110429739.4A Active CN113190263B (zh) | 2021-04-21 | 2021-04-21 | 一种集成第三方sdk的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190263B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016201853A1 (zh) * | 2015-06-15 | 2016-12-22 | 中兴通讯股份有限公司 | 加解密功能的实现方法、装置及服务器 |
CN107589947A (zh) * | 2017-08-02 | 2018-01-16 | 成都极娱网络科技有限公司 | 一种sdk接入方法、客户端及系统 |
CN107844301A (zh) * | 2017-12-12 | 2018-03-27 | 苏州蜗牛数字科技股份有限公司 | 一种安卓应用渠道合包方法及装置 |
CN108829405A (zh) * | 2018-06-04 | 2018-11-16 | 网易(杭州)网络有限公司 | 渠道包的生成方法及装置、存储介质、电子装置 |
CN111045686A (zh) * | 2019-12-16 | 2020-04-21 | 北京智游网安科技有限公司 | 一种提高应用反编译速度的方法、智能终端及存储介质 |
-
2021
- 2021-04-21 CN CN202110429739.4A patent/CN113190263B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016201853A1 (zh) * | 2015-06-15 | 2016-12-22 | 中兴通讯股份有限公司 | 加解密功能的实现方法、装置及服务器 |
CN107589947A (zh) * | 2017-08-02 | 2018-01-16 | 成都极娱网络科技有限公司 | 一种sdk接入方法、客户端及系统 |
CN107844301A (zh) * | 2017-12-12 | 2018-03-27 | 苏州蜗牛数字科技股份有限公司 | 一种安卓应用渠道合包方法及装置 |
CN108829405A (zh) * | 2018-06-04 | 2018-11-16 | 网易(杭州)网络有限公司 | 渠道包的生成方法及装置、存储介质、电子装置 |
CN111045686A (zh) * | 2019-12-16 | 2020-04-21 | 北京智游网安科技有限公司 | 一种提高应用反编译速度的方法、智能终端及存储介质 |
Non-Patent Citations (1)
Title |
---|
《SDK接入安卓》;TheAI;《https://blog.csdn.net/qq_36565626/article/details/78668558》;20171129;第1-5页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113190263A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810359B2 (en) | System and method for provisioning a mobile software application to a mobile device | |
US10007501B1 (en) | Method of deploying applications rapidly based on customized android platform | |
US10795660B1 (en) | Live code updates | |
US20210073015A1 (en) | Java native interface and windows universal app hooking | |
CN109614165B (zh) | 一种com组件的多版本并行运行方法和装置 | |
CN111767092A (zh) | 作业执行方法、装置、系统及计算机可读存储介质 | |
CN107924326B (zh) | 对经更新的类型的迁移方法进行覆盖 | |
CN105159788B (zh) | 一种Android应用间动态共享资源的方法及系统 | |
CN108536451B (zh) | 应用程序的埋点注入方法和装置 | |
US20040268301A1 (en) | Adding new compiler methods to an integrated development environment | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
WO2006009287A1 (ja) | 自動変換用プログラムおよびプログラム変換サーバ | |
CN107402792B (zh) | 应用软件安装包的集成方法、装置、设备及存储介质 | |
CN111209001A (zh) | 批量生成安卓各渠道apk的方法、系统、设备和介质 | |
CN107977274B (zh) | Sdk调用的控制方法及装置 | |
CN110333872B (zh) | 一种应用的处理方法、装置、设备和介质 | |
CN116755713A (zh) | 应用程序的生成方法、装置、设备及存储介质 | |
EP3147781A1 (en) | Wrapper calls identification | |
CN113190263B (zh) | 一种集成第三方sdk的方法及装置 | |
CN110941443B (zh) | 修改sdk中文件名的方法、装置及电子设备 | |
CN112988175A (zh) | 跨平台应用安装包的生成方法、装置、介质及电子设备 | |
CN115374083A (zh) | 数据源的切换方法、装置、电子设备及存储介质 | |
CN111399842A (zh) | 一种代码编译方法及装置 | |
EP4307108A1 (en) | Data processing method and apparatus | |
CN113535566B (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 |