一种集成第三方SDK的方法及装置与流程

文档序号:26101559发布日期:2021-07-30 18:12阅读:100来源:国知局
一种集成第三方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文件夹使用的是androidsupportlibrary还是androidxlibrary,是否与所述源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文件夹使用的是androidsupportlibrary还是androidxlibrary,是否与所述源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执行所述程序时实现实施例一中的各个步骤。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1