一种SDK接入方法、客户端及系统与流程

文档序号:13471956阅读:4454来源:国知局
一种SDK接入方法、客户端及系统与流程

本发明涉及移动客户端软件开发技术领域,尤其涉及一种sdk接入方法、客户端及系统。



背景技术:

sdk(softwaredevelopmentkit,软件开发工具包)是开发工具的集合,是提供给开发人员进行应用程序开发的工具,开发人员可以直接使用相应功能,从而省去了编写相应功能代码的过程。

目前移动互联网正处于高速发展的阶段,特别是手机移动游戏的发展更是迅猛,催生了国内外众多的移动应用市场、移动游戏渠道。应用的推广、移动游戏的运营都需要借助依托这些市场渠道进行。而目前上架各个应用市场都必须接入应用市场的sdk,同时根据开发者或者运营方的需求,也需要在应用、游戏内接入各种的数据统计、分享、推送、广告等第三方sdk。由于sdk无法做到市场统一规范,所以每家的sdk都会有不同的接口、参数、资源文件、接入流程、原理等差异,开发人员在接入客户端软件时,需要熟知各家sdk的要求及规范。并且,每家sdk都会不定期的更新,每家sdk的接口和数据格式通常都不一样,开发人员维护各家sdk的难度大。所以,现有技术存在sdk接入所耗费的人工成本高且接入时间较长的技术问题。



技术实现要素:

本发明实施例提供一种sdk接入方法、客户端及系统,用以解决现有技术存在sdk接入所耗费的人工成本高且接入时间较长的技术问题。

本发明实施例提供的具体技术方案如下:

第一方面,本发明实施例提供了一种sdk接入方法,应用于客户端,包括:

将移动客户端软件接入sdk基础库,获得基础包;

获取所述移动客户端软件需要接入的第三方sdk的资源文件;

将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,在所述将移动客户端软件接入sdk基础库之前,所述方法还包括:

获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件。

可选的,将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,具体包括:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

第二方面,本发明实施例提供了一种sdk接入方法,应用于sdk接入系统,所述系统包括客户端和服务器,所述方法包括:

所述客户端将移动客户端软件接入sdk基础库,获得基础包;

所述客户端向所述服务器请求所述移动客户端软件需要接入的第三方sdk的资源文件;

所述服务器将所述第三方sdk的资源文件发送至所述客户端;

所述客户端将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,在所述客户端向所述服务器请求所述移动客户端软件需要接入的第三方sdk的资源文件之前,所述方法还包括:

所述服务器获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件,并将所述第三方sdk的资源文件保存至所述服务器的预设目录中。

可选的,所述方法还包括:

所述服务器按预设规则更新所述服务器中存储的不同第三方sdk对应的不同资源文件。

可选的,所述客户端将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,具体包括:

所述客户端对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

所述客户端获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

所述客户端将所述临时文件夹压缩后进行反编译操作,生成基础包临时文件;

所述客户端读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

所述客户端读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

所述客户端读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

所述客户端对所述基础包临时文件中的资源进行兼容性处理;

所述客户端调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

第三方面,本发明实施例提供了一种客户端,包括:

基础包获取模块,用于将移动客户端软件接入sdk基础库,获得基础包;

第三方sdk资源获取模块,用于获取所述移动客户端软件需要接入的第三方sdk的资源文件;

打包模块,用于将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,所述客户端还包括:

第三方sdk资源文件提取模块,用于在所述将移动客户端软件接入sdk基础库之前,获取所述第三方sdk的资源提取规则;分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件。

可选的,所述打包模块具体用于:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

第四方面,本发明实施例提供了一种客户端,包括:

客户端和服务器;

所述客户端将移动客户端软件接入sdk基础库,获得基础包;

所述客户端向所述服务器请求所述移动客户端软件需要接入的第三方sdk的资源文件;

所述服务器将所述第三方sdk的资源文件发送至所述客户端;

所述客户端将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,所述服务器还用于:

在所述客户端向所述服务器请求所述移动客户端软件需要接入的第三方sdk的资源文件之前,获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件,并将所述第三方sdk的资源文件保存至所述服务器的预设目录中。

可选的,所述服务器还用于:

按预设规则更新所述服务器中存储的不同第三方sdk对应的不同资源文件。

可选的,所述客户端在将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件时,具体用于:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

第五方面,本发明实施例提供了一种客户端,包括处理器、存储器,其中,存储器中保存有预设的程序,处理器读取存储器中的程序,按照该程序执行以下过程:

将移动客户端软件接入sdk基础库,获得基础包;

获取所述移动客户端软件需要接入的第三方sdk的资源文件;

将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,所述处理器,在所述将移动客户端软件接入sdk基础库之前,还用于:

获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件。

可选的,所述处理器,在将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件时,具体用于:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

基于上述技术方案,本发明实施例中的sdk接入方法,由于预先存储多个第三方sdk的资源文件,在移动客户端软件需要打包成需要接入的第三方sdk对应目标文件时,客户端安装本实施例中sdk接入方法对应的接入平台,开发人员仅需要将移动客户端软件接入该平台,客户端即可将移动客户端软件接入sdk基础库,获得基础包;从预先存储多个第三方sdk的资源文件中获取所述移动客户端软件需要接入的第三方sdk的资源文件;将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。应用本发明实施例中的sdk接入方法,能够实现移动客户端软件快速接入第三方sdk,节约人工成本,有效解决现有技术存在sdk接入所耗费的人工成本高且接入时间较长的技术问题。

附图说明

图1为本发明第一实施例中sdk接入方法的流程图;

图2为本发明第二实施例中sdk接入方法的流程图;

图3为本发明第三实施例中客户端的结构框图;

图4为本发明第四实施例中接入系统的结构框图;

图5为本发明第五实施例中客户端的结构框图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例提供一种sdk接入方法、客户端及系统,用以解决现有技术存在sdk接入所耗费的人工成本高且接入时间较长的技术问题。其中,本发明所述方法和装置基于同一发明构思,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

为了更加清晰地描述本发明实施例的技术方案,下面结合附图,对本发明实施例提供的一种sdk接入方法、客户端及系统进行详细说明。

本发明第一实施例提供的一种sdk接入方法,应用于客户端,参阅图1所示,该方法的具体流程包括:

步骤101:将移动客户端软件接入sdk基础库,获得基础包。

具体的,在本实施例中,客户端安装有本实施例中sdk接入方法对应的接入平台,该接入平台提供统一的接口实现快速接入,处理不同的第三方sdk规范的差异,接口提供了不同的语言实现,开发者可以使用适合自己的语言版本集成,不用关心第三方sdk内部的差异。

在本实施例中,将统一了第三方sdk规范差异的sdk称之为sdk基础库,sdk基础库提供了开发者接入的api,开发者根据api接入到移动客户端应用中形成的包成为基础包。移动客户端软件接入的sdk基础库将第三方sdk接口进行处理,封装为统一的接口。移动客户端软件接入的sdk基础库可提供的整合第三方sdk包括但不限于应用市场渠道sdk、用户登录充值sdk、社交软件分享sdk、应用更新sdk、应用数据统计sdk、应用加固sdk等,第三方sdk的整合个数不限制,可一个也可以多个同时整合接入。

sdk的接入分为客户端和服务器端,通常客户端的接口有用户登录、充值、统计、分享、广告、推送等几类;服务器端的接口有登录验证、充值验证、广告数据等几类;开发者跟进需要接入相应的接口,调用相关的函数及传递需要的参数,而不需要了解第三方sdk的不同接口规范。

以uc和小米这两个渠道sdk为例,uc的sdk必接接口有:registersdkeventreceiver(sdkeventreceivereventreceiver)、initsdk(activityactivity,sdkparamsparams)、login(activityactivity,sdkparamsparams)、pay(activityactivity,sdkparamsparams)、submitroledata(activityactivity,sdkparamsparams)、logout(activityactivity,sdkparamsparams)、exit(activityactivity,sdkparamsparams)。小米必接接口有:init(contextcontext,appinfoappinfo)、milogin(contextcontext,onloginprocesslistenerlistener)、miunipay(contextcontext,mibuyinfo,onpayprocesslistenerlistener)、miappexit(contextcontext,onexitlistnerlistener)。

不同的渠道在接口的名称、传递的参数和产生的回调三个点存在差异性;但都有相同的共性,接口名称各不相同,但要实现的功能都是一致的,必接接口可以统一为初始化、登录、注销、支付、退出、上传角色信息和activity生命周期7种类型;接口所需的不同参数,通过统一同一文件配置,通过指定的接口,获取对应的参数;产生的回调,也可以统一为三种类型成功、失败和取消。通过规范统一后,客户端只需实现本实施例中接入平台提供的接口和设置对应的回调,就能实现各个渠道所对应的接口。

本实施例中接入平台的接口包括:

生命周期相关接口,包括:oncreate(activityactivity)、onstart(activityactivity)、onrestart(activityactivity)、onresume(activityactivity)、onpause(activityactivity)、onstop(activityactivity)、ondestroy(activityactivity)、onactivityresult(activityactivity,intrequestcode,intresultcode,intentintent)、onnewintent(intentparamintent)。

功能接口,包括:初始化:init(activityactivity,stringproductcode,stringproductkey)、登录:login(activityactivity)、上传角色信息:setgameroleinfo(activityactivity,gameroleinforoleinfo,booleancreaterole)、支付:pay(finalactivityactivity,finalorderinfoorderinfo,finalgameroleinforoleinfo)、注销:logout(activityactivity)、退出:exit(activityactivity)。

设置回调,包括:初始化回调setinitnotifier、登录回调setloginnotifier、注销回调setlogoutnotifier、支付回调setpaynotifier、退出回调setexitnotifier、切换账号回调setswitchaccountnotifier。

在具体实施过程中,基础库的设计以及接入平台提供的接口可根据实际需要进行设定,在此本实施例不作限定。

生成基础包后,本实施例中的sdk接入方法便执行步骤102:获取所述移动客户端软件需要接入的第三方sdk的资源文件。

在步骤102之前,本实施例中的方法还包括如下步骤:

获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件。

具体的,在本实施例中,需要建立第三方sdk资源库,该资源库中包含不同第三方sdk的资源文件,该资源库中的资源可以保存在客户端,也可以保存在服务器端,生成第三方sdk的资源文件的步骤可以在客户端中执行,也可以在服务器端执行,在此,本申请并不限制。

在生成第三方sdk的资源文件时,首先获取第三方sdk的资源提取规则,该提取规则可以存储在客户端本地或服务器端。首先读取第三方sdk的配置文件资源,生成sdk描述文件,描述文件通常保护渠道名称、版本信息、关键配置字段信息、组件组成等信息。进而,解析第三方sdk的配置信息,如android系统中的androidmainfest.xml文件,生成配置表,配置表包含permission、activity、root节点等信息。提取res、assests、r文件等文件资源;提取库文件、代码文件,生成smali中间代码资源;对资源的特殊项进行标记,插入占位符,解决资源冲突。最后,根据所述资源提取规则将提取的资源打包,生成第三方sdk的资源文件。

下面以提取百度sdk资源文件为例,对本实施例中生成第三方sdk的资源文件的过程进行详细描述。

提取百度渠道项目所在的路径及提取的资源存储路径;

读取百度渠道项目中的配置文件quicksdk.xml,获取到渠道号14;

通过渠道号,从服务器中获取到线上渠道资源版本信息(资源名称:baidu资源版本:37);

存储路径中创建资源文件夹baidu;

将项目assets文件夹中的文件,存储到baidu\files\assets文件夹中;

将项目res文件夹中的文件,存储到baidu\files\res文件夹中;

将项目libs文件夹中与.so文件相关的文件夹(包括:armeabiarmeabi-v7amipsx86),存储到baidu\files\lib文件夹中;

将项目中的java代码文件,打包成.jar文件,并对jar包进行混淆处理,得到quicksdk_channel_proguard.jar文件;

将项目libs文件夹中的.jar文件和quicksdk_channel_proguard.jar文件进行smali处理,生出smali文件,存储到baidu\files\smali文件夹中;

读取项目androidmanifest.xml配置文件,查找uses-permission权限内容,生成permission.txt文件记,查找android组件内容,生成active.txt文件,查找其他配置,生成root.txt文件,最后存储到\baidu文件夹中;

读取生成的permission.txt、active.txt和root.txt文件,查找出是否有<!--{{#参数名:值#}}-->结构的内容,将此行中的实际参数值替换为参数名的占位符;

读取项目androidmanifest.xml配置文件,查找是否有<!--r:pack-->标记,生成r文件,存储在baidu\files\r文件夹下;

解压项目中libs文件夹中的.jar文件,判断其中是否包含asstes及res文件夹,拷贝到渠道资源对应路径中;

移除资源baidu\files\assets中的quicksdk.xml文件;

移除资源baidu\files\res文件夹下所有的ic_launcher.png文件,防止与游戏资源冲突;

遍历资源baidu\files\res\values文件夹中文件的内容,移除<stringname="app_name">、<stringname="action_settings">、<stringname="hello_world">、<dimenname="activity_horizontal_margin">和<dimenname="activity_vertical_margin">资源,防止与游戏资源冲突;

遍历资源baidu\files\res\values文件夹中文件的名称,将有通用命名的文件添加qk_前缀,防止与游戏资源冲突;

生成description.txt文件,记录资源版本号,渠道版本号,存储到baidu文件夹中,完成资源的提取工作。

在本实施例中,还会定期更新存储的资源文件,比如:每隔10天检测第三方sdk是否发行了新版本,如果发行了新版本,就更新该第三方sdk对应的资源文件。当然,还可以是维护人员手动更新,在具体实施过程中,更新不同第三方sdk对应的不同资源文件的方式可根据实际需要进行设定,在此,本申请不作限制。

进而,在通过步骤102获取到移动客户端软件需要接入的第三方sdk的资源文件后,本实施例中方法执行步骤103:将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

步骤103,在具体实施过程中,可通过如下步骤实现:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

具体的,在本实施例中,在进行整合打包之前,需要检查打包工具主体程序的版本,如果有更新的版本,自动从服务器下载更新文件进行更新。检查打包工具所需的组件版本,如果有更新的版本,自动从服务器下载更新组件进行更新。检查本地基础库sdk版本是否最新的,如果不是,则从服务器下载最新版本。确认要整合接入的第三方sdk,该步骤可以通过服务器web控制台操作,也可以在打包工具上操作,根据要整合接入的第三方sdk,检查本地是否有缓存的sdk资源及配置文件,并检查版本,如果缺少资源及配置文件或者服务器端有更新的版本,则从服务器下载sdk资源及参数配置文件;下载的资源及参数文件可缓存在本地供下次使用。

完成上述步骤后,开始进行整合打包,在android(安卓)平台中,打包工具对基础包进行反编译,生成基础包临时文件。对基础包进行反编译时,需要首先对基础包进行解压缩,获得与基础包对应的源资源文件。进而,提取该源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;将临时文件夹压缩后进行反编译操作,生成基础包临时文件。由于不用对基础包中所有文件进行反编译,缩短了打包时间,进而缩短了sdk接入的时间。

在生成基础包临时文件后,读取前置步骤生成的第三方sdk的资源文件。资源文件可以保存在服务器端,也可以保存在本地客户端。保存在服务器端时,根据资源文件的描述文件读取对比版本信息,如果服务器端的资源文件有较新的版本,则下载较新的版本进行更新。

读取第三方sdk的资源文件中的配置文件资源,根据该资源的配置信息修改基础包的配置信息。针对android系统,通常修改androidmainfest.xml的root、permission、activity等节点,根据资源生成工具生成的root、permission、activity配置文件信息,进行逐一的增加或者替换修改处理。读取第三方sdk的资源文件的res、assets、r文件等文件资源,将资源文件整合到基础包临时文件的资源文件目录中。并且,读取第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中。

接着,对基础包临时文件中的资源进行兼容性处理,读取资源文件特殊配置项,将从服务器端获取的第三方sdk参数信息写入占位符中,删除基础包的多余文件,解决资源冲突问题。最后,调用系统的编译环境,将基础包临时文件进行重新编译,打包生成整合了第三方sdk的目标文件。

下面对本实施例中在android平台下打包生成整合了第三方sdk的目标文件的过程提供完整实施例进行详细描述。以使用游戏a生成“小米应用商品”这个渠道的apk游戏包为例,打包工具生成渠道包的流程如下:

打包工具启动后,完成自检,确保当前的工具的版本,渠道处理库版本均为最新;

获取游戏开发者提供的已接入基础库的游戏a的基础包,复制一份游戏基础包以备最终合并;

将游戏a的基础包进行解压缩,得到assets,lib,res,smali及androidmanifest.xml等源资源,提取其中非静态资源部分的res,lib,androidmanifest.xml生成临时文件夹temp;

记录res中非png和xml格式的所有文件的名字;

将临时文件夹重新压缩成apk文件,命名为temp.apk,对temp.apk进行反编译操作,得到源文件文件夹temppack;

将获取到的最新的“小米应用商店”接入包的渠道资源,按规则加入temppack,对temppack中的文件进行一些处理,包括替换占位符,以及闪屏等一些各渠道兼容操作;

将temppack文件夹编译成临时apk文件,并命名为“xiaomi_temp.apk”,解压“xiaomitemp.apk”文件得到“xiaomi_temp”文件夹,并删除记录的所有文件名,将处理后的“xiaomi_temp”文件夹添加到游戏基础包中。

将处理后的文件夹中的res,assets子目录中的非png和xml文件,使用aapt工具覆盖添加,包体进行一些优化对齐操作,进行重新签名,得到最终可使用小米帐号登录支付的游戏安装包“游戏a_小米应用商店.apk”。

在本实施例中,还提供了在苹果的ios平台下进行整合打包的过程,包括如下步骤:

获取本地ios开发者可用的证书;

复制所述基础包的xcodeproj文件,生成临时工作调试工程;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源,修改所述临时工作调试工程的bundleid、证书、签名、需要的系统框架;

添加所述第三方sdk的资源文件至所述临时工作调试工程,替换兼容库;

根据所述配置文件资源的配置规则,添加和/或修改需要的scheme系统和info.plist的特定参数;

使用xcodebuild编译目标调试工程,生成app;

将app压缩为ipa,生成整合了所述第三方sdk的目标文件。

具体的,在本实施例中,对ios平台中进行打包时需要用到的术语进行解释。

xcode是ios平台开发集成环境,xcode工程通常是以.xcodeproj结尾的文件,里面包含了工程的资源引用关系和编译生成目标等其他基础信息。该文件内没有实实在在的包含库和资源文件,目前文件内容大小通常在100kb左右。

xcode工程的targetxcode工程名为target的配置指定了编译生成目标的类型,常用的目标类型有app、.a库,.framework库。一个xcode工程可能有多个target,游戏开发的工程的通常只有.app,因为游戏需要生成一个运行程序包。

渠道号为和游戏开发者约定好的,能够唯一定位到某个渠道的编号。

.framework文件是ios平台上包含头文件的库。

.a文件是ios平台不包含头文件的库,也常用于单独提供文件的场合。

smpcquicksdk.framework,本实施例中sdk接入方法的核心基础库,向开发者提供统一的接入接口,但不并承担接入渠道sdk的具体代码。

渠道资源quickchannel,从渠道sdk中抽取的渠道资源和库,建立分类结构,并添加了识别渠道资源quickchannel的版本管理配置文件。

渠道接入实现库libsmpcquickchannel.a,对应每个渠道sdk都会生成一个libsmpcquickchannel.a,向smpcquicksdk.framework提供统一接口,但每个渠道接入实现却不同,libsmpcquickchannel.a是很重要的兼容层接口实现。ios的测试母包也是当成一个渠道生成了libsmpcquickchannel.a。quicksdk开发包中的libsmpcquickchannel.a就是测试母包的libsmpcquickchannel.a。

渠道参数配置文件quickchannel.cfg,包含了渠道sdk在客户端需要填写的sdk参数和在quicksdk后台配置的渠道其他自定义参数。

打包工具,这里指ios打包工具mac端。

签名证书和签名描述文件,ios的应用程序需要适当的签名才能安装运行或者提交appstore,证书有调试证书(development)和发布证书(distribution)2个类型,描述文件基于证书而创建,一个证书可以对应多个描述文件。

xcodebuildios提供的xcode工程命令行工具,可以编译指定xcode工程的target生成target的目标。

ios平台下打包原理是通过修改xcode工程.xcodeproj中的资源引用关系、添加新的资源,将渠道sdk的库文件和资源文件添加到工程的编译生成目标上,替换libsmpcquickchannel.a为接入该渠道的libsmpcquickchannel.文件。在实施过程中,将复制游戏的xcode工程,避免影响游戏的原始xcode工程。

下面对本实施例中在ios平台下打包生成整合了第三方sdk的目标文件的过程提供完整实施例进行详细描述。

获取接入quicksdk基础库的code工程.xcodeproj文件,简称为母包工程;

复制一个母包工程,命名为母包工程的文件名追加渠道号的。如母包工程为game.xcodeproj,渠道号为34,复制的工程副本将命名为game-34.xcodeproj,这个新的code工程称为渠道调试工程;

找到调试工程中测试母包libsmpcquickchannel.a的引用,并删除该引用;

向调试工程中添加渠道sdk库文件,添加渠道接入的libsmpcquickchannel.a文件;

向调试工程中添加渠道sdk的资源文件,通常有配置文件和图片资源文件;

向调试工程中添加quickchannel.cfg文件;

修改调试工程的签名为游戏配置的签名信息;

编译调试工程生成.app文件,将.app制作为.ipa的安装文件。

本发明实施例中的sdk接入方法,由于预先存储多个第三方sdk的资源文件,在移动客户端软件需要打包成需要接入的第三方sdk对应目标文件时,客户端安装本实施例中sdk接入方法对应的接入平台,开发人员仅需要将移动客户端软件接入该平台,客户端即可将移动客户端软件接入sdk基础库,获得基础包;从预先存储多个第三方sdk的资源文件中获取所述移动客户端软件需要接入的第三方sdk的资源文件;将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。应用本发明实施例中的sdk接入方法,能够实现移动客户端软件快速接入第三方sdk,节约人工成本,有效解决现有技术存在sdk接入所耗费的人工成本高且接入时间较长的技术问题。

基于同一发明构思,本发明第二实施例中还提供了一种sdk接入方法,应用于sdk接入系统,所述系统包括客户端和服务器,参阅图2所示,该方法的具体流程包括:

步骤201:所述客户端将移动客户端软件接入sdk基础库,获得基础包;

具体的,在本实施例中,客户端安装有本实施例中sdk接入方法对应的接入平台,该接入平台提供统一的接口实现快速接入,处理不同的第三方sdk规范的差异,接口提供了不同的语言实现,开发者可以使用适合自己的语言版本集成,不用关心第三方sdk内部的差异。

在本实施例中,将统一了第三方sdk规范差异的sdk称之为sdk基础库,sdk基础库提供了开发者接入的api,开发者根据api接入到移动客户端应用中形成的包成为基础包。移动客户端软件接入的sdk基础库将第三方sdk接口进行处理,封装为统一的接口。移动客户端软件接入的sdk基础库可提供的整合第三方sdk包括但不限于应用市场渠道sdk、用户登录充值sdk、社交软件分享sdk、应用更新sdk、应用数据统计sdk、应用加固sdk等,第三方sdk的整合个数不限制,可一个也可以多个同时整合接入。

sdk的接入分为客户端和服务器端,通常客户端的接口有用户登录、充值、统计、分享、广告、推送等几类;服务器端的接口有登录验证、充值验证、广告数据等几类;开发者跟进需要接入相应的接口,调用相关的函数及传递需要的参数,而不需要了解第三方sdk的不同接口规范。

以uc和小米这两个渠道sdk为例,uc的sdk必接接口有:registersdkeventreceiver(sdkeventreceivereventreceiver)、initsdk(activityactivity,sdkparamsparams)、login(activityactivity,sdkparamsparams)、pay(activityactivity,sdkparamsparams)、submitroledata(activityactivity,sdkparamsparams)、logout(activityactivity,sdkparamsparams)、exit(activityactivity,sdkparamsparams)。小米必接接口有:init(contextcontext,appinfoappinfo)、milogin(contextcontext,onloginprocesslistenerlistener)、miunipay(contextcontext,mibuyinfo,onpayprocesslistenerlistener)、miappexit(contextcontext,onexitlistnerlistener)。

不同的渠道在接口的名称、传递的参数和产生的回调三个点存在差异性;但都有相同的共性,接口名称各不相同,但要实现的功能都是一致的,必接接口可以统一为初始化、登录、注销、支付、退出、上传角色信息和activity生命周期7种类型;接口所需的不同参数,通过统一同一文件配置,通过指定的接口,获取对应的参数;产生的回调,也可以统一为三种类型成功、失败和取消。通过规范统一后,客户端只需实现本实施例中接入平台提供的接口和设置对应的回调,就能实现各个渠道所对应的接口。

本实施例中接入平台的接口包括:

生命周期相关接口,包括:oncreate(activityactivity)、onstart(activityactivity)、onrestart(activityactivity)、onresume(activityactivity)、onpause(activityactivity)、onstop(activityactivity)、ondestroy(activityactivity)、onactivityresult(activityactivity,intrequestcode,intresultcode,intentintent)、onnewintent(intentparamintent)。

功能接口,包括:初始化:init(activityactivity,stringproductcode,stringproductkey)、登录:login(activityactivity)、上传角色信息:setgameroleinfo(activityactivity,gameroleinforoleinfo,booleancreaterole)、支付:pay(finalactivityactivity,finalorderinfoorderinfo,finalgameroleinforoleinfo)、注销:logout(activityactivity)、退出:exit(activityactivity)。

设置回调,包括:初始化回调setinitnotifier、登录回调setloginnotifier、注销回调setlogoutnotifier、支付回调setpaynotifier、退出回调setexitnotifier、切换账号回调setswitchaccountnotifier。

在具体实施过程中,基础库的设计以及接入平台提供的接口可根据实际需要进行设定,在此本实施例不作限定。

生成基础包后,本实施例中的sdk接入方法便执行步骤202:所述客户端向所述服务器请求所述移动客户端软件需要接入的第三方sdk的资源文件;所述服务器将所述第三方sdk的资源文件发送至所述客户端。

在所述客户端向所述服务器请求所述移动客户端软件需要接入的第三方sdk的资源文件之前,所述方法还包括:

所述服务器获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件,并将所述第三方sdk的资源文件保存至所述服务器的预设目录中。

具体的,在本实施例中,服务器中需要建立第三方sdk资源库,该资源库中包含不同第三方sdk的资源文件。在服务器生成第三方sdk的资源文件时,首先获取第三方sdk的资源提取规则,该提取规则可以存储在客户端本地或服务器端。首先读取第三方sdk的配置文件资源,生成sdk描述文件,描述文件通常保护渠道名称、版本信息、关键配置字段信息、组件组成等信息。进而,解析第三方sdk的配置信息,如android系统中的androidmainfest.xml文件,生成配置表,配置表包含permission、activity、root节点等信息。提取res、assests、r文件等文件资源;提取库文件、代码文件,生成smali中间代码资源;对资源的特殊项进行标记,插入占位符,解决资源冲突。最后,根据所述资源提取规则将提取的资源打包,生成第三方sdk的资源文件。

下面以提取百度sdk资源文件为例,对本实施例中生成第三方sdk的资源文件的过程进行详细描述。

提取百度渠道项目所在的路径及提取的资源存储路径;

读取百度渠道项目中的配置文件quicksdk.xml,获取到渠道号14;

通过渠道号,从服务器中获取到线上渠道资源版本信息(资源名称:baidu资源版本:37);

存储路径中创建资源文件夹baidu;

将项目assets文件夹中的文件,存储到baidu\files\assets文件夹中;

将项目res文件夹中的文件,存储到baidu\files\res文件夹中;

将项目libs文件夹中与.so文件相关的文件夹(包括:armeabiarmeabi-v7amipsx86),存储到baidu\files\lib文件夹中;

将项目中的java代码文件,打包成.jar文件,并对jar包进行混淆处理,得到quicksdk_channel_proguard.jar文件;

将项目libs文件夹中的.jar文件和quicksdk_channel_proguard.jar文件进行smali处理,生出smali文件,存储到baidu\files\smali文件夹中;

读取项目androidmanifest.xml配置文件,查找uses-permission权限内容,生成permission.txt文件记,查找android组件内容,生成active.txt文件,查找其他配置,生成root.txt文件,最后存储到\baidu文件夹中;

读取生成的permission.txt、active.txt和root.txt文件,查找出是否有<!--{{#参数名:值#}}-->结构的内容,将此行中的实际参数值替换为参数名的占位符;

读取项目androidmanifest.xml配置文件,查找是否有<!--r:pack-->标记,生成r文件,存储在baidu\files\r文件夹下;

解压项目中libs文件夹中的.jar文件,判断其中是否包含asstes及res文件夹,拷贝到渠道资源对应路径中;

移除资源baidu\files\assets中的quicksdk.xml文件;

移除资源baidu\files\res文件夹下所有的ic_launcher.png文件,防止与游戏资源冲突;

遍历资源baidu\files\res\values文件夹中文件的内容,移除<stringname="app_name">、<stringname="action_settings">、<stringname="hello_world">、<dimenname="activity_horizontal_margin">和<dimenname="activity_vertical_margin">资源,防止与游戏资源冲突;

遍历资源baidu\files\res\values文件夹中文件的名称,将有通用命名的文件添加qk_前缀,防止与游戏资源冲突;

生成description.txt文件,记录资源版本号,渠道版本号,存储到baidu文件夹中,完成资源的提取工作。

在服务器通过上述方式提取获得不同第三方sdk的资源文件后,所述方法还包括:

所述服务器按预设规则更新所述服务器中存储的不同第三方sdk对应的不同资源文件。

具体的,在本实施例中,服务器还会定期更新存储的资源文件,比如:每隔10天检测第三方sdk是否发行了新版本,如果发行了新版本,服务器就更新该第三方sdk对应的资源文件。当然,还可以是维护人员手动更新,在具体实施过程中,更新不同第三方sdk对应的不同资源文件的方式可根据实际需要进行设定,在此,本申请不作限制。

服务器通过上述方式获得并预先存储了不同第三方sdk的资源文件,在开发人员将移动客户端软件接入基础库生成基础包后,客户端可向服务器端请求移动客户端软件需要接入的第三方sdk的资源文件,服务器将对应的资源文件反馈至客户端。

进而,在通过步骤202获取到移动客户端软件需要接入的第三方sdk的资源文件后,本实施例中方法执行步骤203:所述客户端将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

步骤103,在具体实施过程中,可通过如下步骤实现:

所述客户端对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

所述客户端获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

所述客户端将所述临时文件夹压缩后进行反编译操作,生成所述基础包临时文件;

所述客户端读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

所述客户端读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

所述客户端读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

所述客户端对所述基础包临时文件中的资源进行兼容性处理;

所述客户端调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

具体的,在本实施例中,客户端在进行整合打包之前,需要检查打包工具主体程序的版本,如果有更新的版本,自动从服务器下载更新文件进行更新。检查打包工具所需的组件版本,如果有更新的版本,自动从服务器下载更新组件进行更新。检查本地基础库sdk版本是否最新的,如果不是,则从服务器下载最新版本。确认要整合接入的第三方sdk,该步骤可以通过服务器web控制台操作,也可以在打包工具上操作,根据要整合接入的第三方sdk,检查本地是否有缓存的sdk资源及配置文件,并检查版本,如果缺少资源及配置文件或者服务器端有更新的版本,则从服务器下载sdk资源及参数配置文件;下载的资源及参数文件可缓存在本地供下次使用。

完成上述步骤后,客户端开始进行整合打包,在android(安卓)平台中,打包工具对基础包进行反编译,生成基础包临时文件。对基础包进行反编译时,需要首先对基础包进行解压缩,获得与基础包对应的源资源文件。进而,提取该源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;将临时文件夹压缩后进行反编译操作,生成基础包临时文件。由于不用对基础包中所有文件进行反编译,缩短了打包时间,进而缩短了sdk接入的时间。

在生成基础包临时文件后,读取前置步骤生成的第三方sdk的资源文件。资源文件可以保存在服务器端,也可以保存在本地客户端。保存在服务器端时,根据资源文件的描述文件读取对比版本信息,如果服务器端的资源文件有较新的版本,则下载较新的版本进行更新。

读取第三方sdk的资源文件中的配置文件资源,根据该资源的配置信息修改基础包的配置信息。针对android系统,通常修改androidmainfest.xml的root、permission、activity等节点,根据资源生成工具生成的root、permission、activity配置文件信息,进行逐一的增加或者替换修改处理。读取第三方sdk的资源文件的res、assets、r文件等文件资源,将资源文件整合到基础包临时文件的资源文件目录中。并且,读取第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中。

接着,对基础包临时文件中的资源进行兼容性处理,读取资源文件特殊配置项,将从服务器端获取的第三方sdk参数信息写入占位符中,删除基础包的多余文件,解决资源冲突问题。最后,调用系统的编译环境,将基础包临时文件进行重新编译,打包生成整合了第三方sdk的目标文件。

下面对本实施例中在android平台下打包生成整合了第三方sdk的目标文件的过程提供完整实施例进行详细描述。以使用游戏a生成“小米应用商品”这个渠道的apk游戏包为例,打包工具生成渠道包的流程如下:

打包工具启动后,完成自检,确保当前的工具的版本,渠道处理库版本均为最新;

获取游戏开发者提供的已接入基础库的游戏a的基础包,复制一份游戏基础包以备最终合并;

将游戏a的基础包进行解压缩,得到assets,lib,res,smali及androidmanifest.xml等源资源,提取其中非静态资源部分的res,lib,androidmanifest.xml生成临时文件夹temp;

记录res中非png和xml格式的所有文件的名字;

将临时文件夹重新压缩成apk文件,命名为temp.apk,对temp.apk进行反编译操作,得到源文件文件夹temppack;

将获取到的最新的“小米应用商店”接入包的渠道资源,按规则加入temppack,对temppack中的文件进行一些处理,包括替换占位符,以及闪屏等一些各渠道兼容操作;

将temppack文件夹编译成临时apk文件,并命名为“xiaomi_temp.apk”,解压“xiaomitemp.apk”文件得到“xiaomi_temp”文件夹,并删除记录的所有文件名,将处理后的“xiaomi_temp”文件夹添加到游戏基础包中。

将处理后的文件夹中的res,assets子目录中的非png和xml文件,使用aapt工具覆盖添加,包体进行一些优化对齐操作,进行重新签名,得到最终可使用小米帐号登录支付的游戏安装包“游戏a_小米应用商店.apk”。

在本实施例中,还提供了在苹果的ios平台下进行整合打包的过程,包括如下步骤:

客户端获取本地ios开发者可用的证书;

客户端复制所述基础包的xcodeproj文件,生成临时工作调试工程;

客户端读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源,修改所述临时工作调试工程的bundleid、证书、签名、需要的系统框架;

客户端添加所述第三方sdk的资源文件至所述临时工作调试工程,替换兼容库;

客户端根据所述配置文件资源的配置规则,添加和/或修改需要的scheme系统和info.plist的特定参数;

客户端调试xcodebuild编译目标调试工程,生成app;

客户端将app压缩为ipa,生成整合了所述第三方sdk的目标文件。

具体的,在本实施例中,对ios平台中进行打包时需要用到的术语进行解释。

xcode是ios平台开发集成环境,xcode工程通常是以.xcodeproj结尾的文件,里面包含了工程的资源引用关系和编译生成目标等其他基础信息。该文件内没有实实在在的包含库和资源文件,目前文件内容大小通常在100kb左右。

xcode工程的targetxcode工程名为target的配置指定了编译生成目标的类型,常用的目标类型有app、.a库,.framework库。一个xcode工程可能有多个target,游戏开发的工程的通常只有.app,因为游戏需要生成一个运行程序包。

渠道号为和游戏开发者约定好的,能够唯一定位到某个渠道的编号。

.framework文件是ios开发平台上包含头文件的库。

.a文件是ios平台不包含头文件的库,也常用于单独提供文件的场合。

smpcquicksdk.framework,本实施例中sdk接入方法的核心基础库,向开发者提供统一的接入接口,但不并承担接入渠道sdk的具体代码。

渠道资源quickchannel,从渠道sdk中抽取的渠道资源和库,建立分类结构,并添加了识别渠道资源quickchannel的版本管理配置文件。

渠道接入实现库libsmpcquickchannel.a,对应每个渠道sdk都会生成一个libsmpcquickchannel.a,向smpcquicksdk.framework提供统一接口,但每个渠道接入实现却不同,libsmpcquickchannel.a是很重要的兼容层接口实现。ios的测试母包也是当成一个渠道生成了libsmpcquickchannel.a。quicksdk开发包中的libsmpcquickchannel.a就是测试母包的libsmpcquickchannel.a。

渠道参数配置文件quickchannel.cfg,包含了渠道sdk在客户端需要填写的sdk参数和在quicksdk后台配置的渠道其他自定义参数。

打包工具,这里指ios打包工具mac端。

签名证书和签名描述文件,ios的应用程序需要适当的签名才能安装运行或者提交appstore,证书有调试证书(development)和发布证书(distribution)2个类型,描述文件基于证书而创建,一个证书可以对应多个描述文件。

xcodebuildios平台提供的xcode工程命令行工具,可以编译指定xcode工程的target生成target的目标。

ios平台下打包原理是通过修改xcode工程.xcodeproj中的资源引用关系、添加新的资源,将渠道sdk的库文件和资源文件添加到工程的编译生成目标上,替换libsmpcquickchannel.a为接入该渠道的libsmpcquickchannel.文件。在实施过程中,将复制游戏的xcode工程,避免影响游戏的原始xcode工程。

下面对本实施例中在客户端的ios平台下打包生成整合了第三方sdk的目标文件的过程提供完整实施例进行详细描述。

客户端获取接入quicksdk基础库的code工程.xcodeproj文件,简称为母包工程;

客户端复制一个母包工程,命名为母包工程的文件名追加渠道号的。如母包工程为game.xcodeproj,渠道号为34,复制的工程副本将命名为game-34.xcodeproj,这个新的code工程称为渠道调试工程;

客户端找到调试工程中测试母包libsmpcquickchannel.a的引用,并删除该引用;

客户端向调试工程中添加渠道sdk库文件,添加渠道接入的libsmpcquickchannel.a文件;

客户端向调试工程中添加渠道sdk的资源文件,通常有配置文件和图片资源文件;

客户端向调试工程中添加quickchannel.cfg文件;

客户端修改调试工程的签名为游戏配置的签名信息;

客户端编译调试工程生成.app文件,将.app制作为.ipa的安装文件。

基于同一发明构思,本发明第三实施例中还提供了一种客户端,参阅图3所示,该客户端包括:

基础包获取模块301,用于将移动客户端软件接入sdk基础库,获得基础包;

第三方sdk资源获取模块302,用于获取所述移动客户端软件需要接入的第三方sdk的资源文件;

打包模块303,用于将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,所述客户端还包括:

第三方sdk资源文件提取模块,用于在所述将移动客户端软件接入sdk基础库之前,获取所述第三方sdk的资源提取规则;分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件。

可选的,所述打包模块303具体用于:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成所述基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

基于同一发明构思,本发明第四实施例中还提供了一种客户端,参阅图4所示,该客户端包括:

客户端401和服务器402;

所述客户端401将移动客户端401软件接入sdk基础库,获得基础包;

所述客户端401向所述服务器402请求所述移动客户端401软件需要接入的第三方sdk的资源文件;

所述服务器402将所述第三方sdk的资源文件发送至所述客户端401;

所述客户端401将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端401软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,所述服务器402还用于:

在所述客户端401向所述服务器402请求所述移动客户端401软件需要接入的第三方sdk的资源文件之前,获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件,并将所述第三方sdk的资源文件保存至所述服务器402的预设目录中。

可选的,所述服务器402还用于:

按预设规则更新所述服务器402中存储的不同第三方sdk对应的不同资源文件。

可选的,所述客户端401在将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件时,具体用于:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成所述基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

基于同一发明构思,本发明第五实施例中还提供了一种客户端,参阅图5所示,该客户端包括处理器501、存储器502,其中,存储器502中保存有预设的程序,处理器501读取存储器中的程序,按照该程序执行以下过程:

将移动客户端软件接入sdk基础库,获得基础包;

获取所述移动客户端软件需要接入的第三方sdk的资源文件;

将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,以使得用户能通过所述目标文件将所述移动客户端软件接入所述第三方sdk,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。

可选的,所述处理器501,在所述将移动客户端软件接入sdk基础库之前,还用于:

获取所述第三方sdk的资源提取规则;

分类提取所述第三方sdk的代码资源、文件资源、配置文件资源;

根据所述资源提取规则将提取的资源打包,生成所述第三方sdk的资源文件。

可选的,所述处理器501,在将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件时,具体用于:

对所述基础包进行解压缩,获得与所述基础包对应的源资源文件;

获取所述源资源文件中的非静态资源,将所述非静态资源存储至临时文件夹;

将所述临时文件夹压缩后进行反编译操作,生成基础包临时文件;

读取所述第三方sdk的资源文件的配置文件资源,基于所述配置文件资源修改所述基础包临时文件的配所述第三方sdk的资源文件配置信息;

读取所述第三方sdk的资源文件的文件资源,将文件资源整合到所述基础包临时文件的资源文件目录中;

读取所述第三方sdk的资源文件的代码资源,将代码资源整合到所述基础包临时文件的代码目录中;

对所述基础包临时文件中的资源进行兼容性处理;

调用系统的编译环境,将所述基础包临时文件进行重新编译,打包生成整合了所述第三方sdk的目标文件。

本发明实施例中的sdk接入方法、客户端及系统,由于预先存储多个第三方sdk的资源文件,在移动客户端软件需要打包成需要接入的第三方sdk对应目标文件时,客户端安装本实施例中sdk接入方法对应的接入平台,开发人员仅需要将移动客户端软件接入该平台,客户端即可将移动客户端软件接入sdk基础库,获得基础包;从预先存储多个第三方sdk的资源文件中获取所述移动客户端软件需要接入的第三方sdk的资源文件;将所述基础包与所述第三方sdk的资源文件进行整合打包,生成整合了所述第三方sdk的目标文件,其中,所述目标文件为在android平台中通过分离出所述基础包中的非静态文件,并将所述非静态文件进行反编译后生成的基础包临时文件结合所述第三方sdk的资源文件整合打包后获得。应用本发明实施例中的sdk接入方法、客户端及系统,能够实现移动客户端软件快速接入第三方sdk,节约人工成本,有效解决现有技术存在sdk接入所耗费的人工成本高且接入时间较长的技术问题。

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

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

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

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

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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