CN113190263B - 一种集成第三方sdk的方法及装置 - Google Patents

一种集成第三方sdk的方法及装置 Download PDF

Info

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
Application number
CN202110429739.4A
Other languages
English (en)
Other versions
CN113190263A (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.)
Baobao Bus Co ltd
Original Assignee
Baobao Bus 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 Baobao Bus Co ltd filed Critical Baobao Bus Co ltd
Priority to CN202110429739.4A priority Critical patent/CN113190263B/zh
Publication of CN113190263A publication Critical patent/CN113190263A/zh
Application granted granted Critical
Publication of CN113190263B publication Critical patent/CN113190263B/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/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating 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的方法及装置。
背景技术
通常移动游戏开发商并不会只在一个渠道上线他们的游戏,接入越多的渠道,代表着可能获取越多的用户,但同时也代表着越多的接入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文件。
CN202110429739.4A 2021-04-21 2021-04-21 一种集成第三方sdk的方法及装置 Active CN113190263B (zh)

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)

* Cited by examiner, † Cited by third party
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 北京智游网安科技有限公司 一种提高应用反编译速度的方法、智能终端及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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