一种软件开发工具包的集成方法和装置与流程

文档序号:17396671发布日期:2019-04-13 00:52阅读:230来源:国知局
一种软件开发工具包的集成方法和装置与流程

本申请涉及编程技术领域,特别是涉及一种软件开发工具包的集成方法和装置。



背景技术:

随着移动互联网的发展,在开发sdk(中文:软件开发工具包;英文:softwaredevelopmentkit)的时候,需要进行大量的全面的测试,尽可能多的使用app(中文:应用程序;英文:application)进行集成测试,利用尽可能多的app源码,进行编译集成,由于整个测试过程非常繁琐,在没有充足的源码的情况下,会导致集成工作量是非常大。现有技术中,在测试sdk时,一般采用开源的app进行集成,以减少进行app反编译的操作;但如果app的功能不能和sdk的场景吻合,会无法达到预期的测试效果。



技术实现要素:

鉴于上述问题,本申请实施例提供一种软件开发工具包的集成方法,能够解决现有技术中对于sdk集成复杂不易实现的问题。

相应的,本申请实施例还提供了一种软件开发工具包的集成装置,用以保证上述方法的实现及应用。

为了解决上述问题,本申请实施例公开了一种软件开发工具包的集成方法,所述方法包括:

获取第一应用程序的安卓系统的安装包;

对所述安装包进行反编译,以确定所述安装包对应的第一smali语言文件;

在所述第一smali语言文件中确定用于集成smali语言格式的第一软件工具开发包的集成位置;

利用预设的应用程序集成工具,根据所述集成位置,确定第一集成应用,所述第一集成应用是在所述第一应用程序中集成了所述第一软件工具开发包的应用。

相应的,本申请实施例还公开了一种软件开发工具包的集成装置,所述装置包括:

获取模块,用于获取第一应用程序的安卓系统的安装包;

反编译模块,用于对所述安装包进行反编译,以确定所述安装包对应的第一smali语言文件;

位置确定模块,用于在所述第一smali语言文件中确定用于集成smali语言格式的第一软件工具开发包的集成位置;

应用确定模块,用于利用预设的应用程序集成工具,根据所述集成位置,确定第一集成应用,所述第一集成应用是在所述第一应用程序中集成了所述第一软件工具开发包的应用。

本申请实施例还提供一种装置,包括处理器以及存储器,其中,

所述处理器执行所述存储器所存放的计算机程序代码,以实现本申请所述的软件开发工具包的集成方法。

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现本申请所述的软件开发工具包的集成方法的步骤。

本申请实施例包括以下优点:

本申请实施例通过获取第一应用程序的安卓系统的安装包;对所述安装包进行反编译,以确定所述安装包对应的第一smali语言文件;在所述第一smali语言文件中确定用于集成smali语言格式的第一软件工具开发包的集成位置;利用预设的应用程序集成工具,根据所述集成位置,确定第一集成应用,所述第一集成应用是在所述第一应用程序中集成了所述第一软件工具开发包的应用。因此,能够在进行sdk集成时,简化集成操作,优化测试过程。

附图说明

图1是本申请的一种软件开发工具包的集成方法实施例的步骤流程图;

图2是本申请的一种软件开发工具包的集成方法可选实施例的步骤流程图;

图3是本申请的一种软件开发工具包的集成方法可选实施例的步骤流程图;

图4是本申请的另一种软件开发工具包的集成方法实施例的步骤流程图;

图5是本申请的又一种软件开发工具包的集成方法实施例的步骤流程图;

图6是本申请的一种软件开发工具包的集成装置实施例的结构框图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

参照图1,示出了本申请的一种软件开发工具包的集成方法实施例的步骤流程图,具体可以包括如下步骤:

步骤101,获取第一应用程序的安卓系统的安装包。

在基于安卓系统进行sdk的集成测试时,需要apk(中文:安卓系统安装包,英文:androidpackage代码)的源码,而apk的dex文件可以理解为java类(.java文件)的集合,这个dex文件会在dalvik或者art虚拟机上加载运行,因此将sdk集成到apk的源码中,再进行打包apk,最后安装到手机上测试效果。由于能找到的apk开源的源码非常有限,而且不同的开源代码的功能并不一定符合所要集成的sdk对应的场景,同时能够找到的开源的源码可能仍需要进行ide(中文:集成开发环境,英文:integrateddevelopmentenvironment)的转换,或者一些bug修复,才能让该apk运行起来。因此,为了更加便捷有效的进行sdk的集成,优选地,获取到符合集成条件的第一应用程序进行本申请的操作,其中集成条件是指并未加固且能够正常运行的应用程序,能够对应需要集成的第一软件开发包的应用场景的app,进而提升对该sdk调试的效果。

步骤102,对安装包进行反编译,以确定安装包对应的第一smali语言文件。

示例地,smali语言是apk通过反编译工具例如,apktool反编译后里面的smali文件夹中以.smali结尾的文件的展示语言,安卓系统利用自身的虚拟机,对应用程序的安装包进行编译时,均采用smali语言的代码,也就是说如果反编译apk得到的smali代码可以正确的理解原应用程序的逻辑,dex文件在本地的情况下,可以将其转换为smali汇编代码,本申请提出的技术方案就基于smali语言,将需要进行集成的第一软件工具开发包转换成的smali代码插入到第一应用程序对应的第一smali语言文件中的集成位置,进而再进行封装打包,之后就可以进行sdk的测试。因此,首先对第一应用程序的安装包进行反编译,以确定第一应用程序对应的第一smali语言文件,便于之后步骤在该文件内确定集成位置。

步骤103,在第一smali语言文件中确定用于集成smali语言格式的第一软件工具开发包的集成位置。

示例地,通过在第一smali语言文件中找到第一应用程序用于描述该应用程序安装包中暴露的所有组件的androidmanifest.xml文件,即入口文件,并再其中查找确定androidmanifest.xml文件中对应的应用程序入口,也就是application标签入口,在该标签下声明了应用程序的每一个组件和对应属性,并且其中包括oncreate()函数,是应用程序启动时,最先启动的部分,将sdk的smali代码插入在此位置,能够确保该sdk充分集成在第一应用程序中,以便对其进行测试。

步骤104,利用预设的应用程序集成工具,根据集成位置,确定第一集成应用。

其中,第一集成应用是在第一应用程序中集成了第一软件工具开发包的应用。

示例地,在根据上面步骤确定的集成位置处插入该第一软件工具开发包的smali代码后,再通过apktool对所有代码进行打包封装,重新编译成apk,也就是dex格式,进而能够对新的apk进行运行测试。

此外,本申请提出的技术方案还可以包括日志系统,用于在进行安全测试的过程中,查看第一软件工具开发包的smali代码是否成功注入到第三方应用中;以及崩溃统计,以对插入了第一软件工具开发包的smali代码后的应用程序在运行过程中因为一些bug导致崩溃的事件进行统计,以确定错误堆栈信息。同时,利用本申请提出的技术方案对sdk进行有针对性的集成,在通过apktool重新编译成apk后完成签名认证,能够更有效的测试sdk的集成效果。

需要说明的是,对于进行加固和/或带有签名认证的应用程序,也可以对应用程序apk进行解包处理,以获取到smali文件,即可进行本申请提出的sdk集成方法的步骤,且利用本申请的技术方案能够快速(例如,1分钟)实现对sdk在第三方应用程序上的集成,无需在集成前根据传统的集成方法,对开源的app进行代码的测试和消除bug,将本申请的技术方案作为预设的脚本,进而自动化实现sdk集成。

综上所述,本申请实施例提供的软件开发工具包的集成方法,获取第一应用程序的安卓系统的安装包;对安装包进行反编译,以确定安装包对应的第一smali语言文件;在第一smali语言文件中确定用于集成smali语言格式的第一软件工具开发包的集成位置;利用预设的应用程序集成工具,根据集成位置,确定第一集成应用,该第一集成应用是在第一应用程序中集成了第一软件工具开发包的应用。因此,能够在进行sdk集成时,简化集成操作,优化测试过程。

参照图2,示出了本申请的一种软件开发工具包的集成方法可选实施例的步骤流程图,步骤103所述的在第一smali语言文件中确定用于集成smali语言格式的第一软件工具开发包的集成位置,可以包括如下步骤:

步骤1031,在第一smali语言文件中确定第一应用程序的入口文件。

示例地,将第一smali语言文件中的androidmanifest.xml文件,作为入口文件。

步骤1032,查找入口文件中的第一应用程序的组件定义部分。

示例地,在该androidmanifest.xml文件中查找到组件定义部分,也就是application的标签下的部分,在该标签下声明了每一个应用程序的组件及其属性。

步骤1033,在组件定义部分查找目标函数所在位置。

在application的标签下的oncreate()作为目标函数,查找其所在位置,示例地,可以通过字符串的特征查询,确定oncreate()所在位置。

步骤1034,将目标函数所在位置确定为集成位置。

由于oncreate()作为应用程序的入口位置,每次启动应用程序的时候,首先会运行该部分,将sdk集成在入口位置,能够确保sdk随应用程序的启动而运行,以实现sdk的集成效果。

参照图3,示出了本申请的一种软件开发工具包的集成方法可选实施例的步骤流程图,步骤104所述的利用预设的应用程序集成工具,根据集成位置,确定第一集成应用,包括如下步骤:

步骤1041,获取smali语言格式的第一软件工具开发包。

步骤1042,在集成位置处插入smali语言格式的第一软件工具开发包。

步骤1043,利用应用程序集成工具,对插入smali语言格式的第一软件工具开发包的第一smali语言文件进行打包处理,以确定第一集成应用。

示例地,根据步骤103确定的集成位置,将smali语言格式的第一软件工具开发包插入在该位置,之后再利用apktool对集成后的smali语言重新打包处理,封装成为新的apk。

参照图4,示出了本申请的另一种软件开发工具包的集成方法实施例的步骤流程图,该方法还包括如下步骤:

步骤105,利用预设的编译工具,对第一软件工具开发包进行编译,以确定smali语言格式的第一软件工具开发包。

示例地,利用dex2jar将第一软件工具开发包转换为smali代码格式,以便于之后进行插入。

参照图5,示出了本申请的又一种软件开发工具包的集成方法实施例的步骤流程图,该方法还包括如下步骤:

步骤106,根据对第一集成应用的调试,生成第一集成应用的系统日志。

步骤107,根据系统日志,确定第一软件开发包是否成功集成在第一应用程序中。

示例地,在确定第一集成应用之后,对其进行调试以确定该sdk在第一应用程序中的集成效果,并将调试过程记录在日志系统中,生成可查看的系统日志,之后开发者可以根据系统日志中的内容,确定该sdk是否集成成功,以及在不成功时,根据系统日志分析确定存在的问题。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。

参照图6,示出了本申请的一种软件开发工具包的集成装置实施例的结构框图,具体可以包括如下模块:

获取模块610,用于获取符合集成条件的第一应用程序。

反编译模块620,用于对安装包进行反编译,以确定安装包对应的第一smali语言文件。

位置确定模块630,用于在在第一smali语言文件中确定用于集成smali语言格式的第一软件工具开发包的集成位置。

应用确定模块640,用于利用预设的应用程序集成工具,根据集成位置,确定第一集成应用,第一集成应用是在第一应用程序中集成了第一软件工具开发包的应用。

在本申请的一个可选实施例中,位置确定模块630,包括如下子模块:

文件确定子模块,用于在第一smali语言文件中确定第一应用程序的入口文件。

组件查找子模块,用于查找入口文件中的第一应用程序的组件定义部分。

位置查找子模块,用于在组件定义部分查找目标函数所在位置。

位置确定子模块,用于将目标函数所在位置确定为集成位置。

在本申请的一个可选实施例中,应用确定模块640,包括如下子模块:

开发包获取子模块,用于获取smali语言格式的第一软件工具开发包。

插入子模块,用于在集成位置处插入smali语言格式的第一软件工具开发包。

打包处理子模块,用于利用应用程序集成工具,对插入smali语言格式的第一软件工具开发包的第一smali语言文件进行打包处理,以确定第一集成应用。

可选的,本申请实施例所示的装置600还包括:

反编译模块,用于利用预设的编译工具,对第一软件工具开发包进行编译,以确定smali语言格式的第一软件工具开发包。

日志生成模块,用于根据对第一集成应用的调试,生成第一集成应用的系统日志。

确定模块,用于根据系统日志,确定第一软件开发包是否成功集成在第一应用程序中。

本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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