插件SDK生成方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:27655255 阅读:19 留言:0更新日期:2021-03-12 14:17
本申请涉及一种插件SDK生成方法、装置、计算机设备和存储介质,所述方法包括:获取非插件版的SDK代码;获取非插件版的SDK代码中系统类的第一代码以及第一对外接口类的第一名称;将第一代码转换为非组件基类的第二代码,将第一名称转换为预设的第二名称,以使得名称转换后第一对外接口类的名称和宿主中与第一对外接口类对应的第二对外接口类的名称不同,得到待转换代码;根据待转换代码生成插件版的插件SDK,插件SDK通过宿主的第二对外接口类对外通信。上述方法能够减少SDK代码的生成量以降低资源浪费并减少人工维护游戏app代码的维护成本。

【技术实现步骤摘要】
插件SDK生成方法、装置、计算机设备和存储介质
本申请涉及代码处理
,特别是涉及一种插件SDK生成方法、装置、计算机设备和存储介质。
技术介绍
SDK(SoftwareDevelopmentKit,软件开发工具包)是指辅助开发某一特定的app(Application,应用软件)时提供的相关文档、范例和开发工具的集合,包括用于调试和其他用途的实用工具。它可以简单的为某个程序设计语言提供应用程序接口api(ApplicationProgrammingInterface,应用程序接口)的一些文件,也可能包括能与某种嵌入式系统通讯的复杂的硬件,还可能包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。游戏app发行中,涉及到研发SDK代码、发行方SDK代码以及渠道方SDK代码这三方代码的结合。因此实现插件化时需要考虑当多方方案冲突时的回退方案。比如渠道方SDK使用了插件化技术,发行方在提供游戏app代码时也使用了插件化技术,则技术实现上存在冲突,需要发行方将插件SDK回退为非插件的方式。反之,发行方对外提供插件SDK。在此情况下,发行方实现一套插件版本和一套非插件版本的SDK在后续维护上,成本将会很高。同时需要提供一套插件版本的SDK和一套非插件版本的SDK,以便于匹配两种方案。因此研发需要生成两套SDK代码,不仅造成资源浪费并且需要耗费的人工量大。
技术实现思路
基于此,有必要针对上述技术问题,提供一种能够减少SDK代码的生成量以降低资源浪费并减少人工维护游戏app代码的维护成本的插件SDK生成方法、装置、计算机设备和存储介质。一种插件SDK生成方法,该方法包括:获取非插件版的SDK代码;查询非插件版的SDK代码中系统类的第一代码以及第一对外接口类的第一名称;将第一代码转换为非组件基类的第二代码,将第一名称转换为预设的第二名称,以使得名称转换后第一对外接口类的名称和宿主中与第一对外接口类对应的第二对外接口类的名称不同,得到待转换代码;根据待转换代码生成插件版的插件SDK,插件SDK通过宿主的第二对外接口类对外通信。在其中一个实施例中,系统类包括Activity组件的类、Service组件的类、ContentProvider组件的类、BroadcastReceiver组件的类和Application类中的一个或多个,将第一代码转换为非组件基类的第二代码,包括:在gradle插件的transform环节中,将Activity组件的类的代码或Service组件的类的代码或ContentProvider组件的类的代码或BroadcastReceiver组件的类的代码或Application类的代码转换为非组件基类的第二代码。优选地,将第一名称转换为预设的第二名称,包括:在gradle插件的transform环节中,采用javassist的修改java字节码技术将第一名称转换为预先的第二名称。在其中一个实施例中,一种插件SDK生成方法还包括:生成宿主的宿主代码,宿主代码中第二对外接口类的名称与非插件版的SDK代码中第三对外接口类的名称相同,非插件版的SDK代码通过第三对外接口类对外通信。在其中一个实施例中,一种插件SDK生成方法还包括:获取插件SDK中的类的标识信息;获取宿主代码中与插件SDK中的类对应的代理类;将插件SDK中的类的标识信息和代理类关联,以使得代理类通过标识信息加载插件SDK中的类。在其中一个实施例中,将插件SDK中的类的标识信息和代理类关联,以使得代理类通过标识信息加载插件SDK中的类,包括:控制代理类通过识别标识信息并采用反射的方式调用插件SDK中的类,以加载插件SDK中的类。在其中一个实施例中,一种插件SDK生成方法还包括:获取非插件版的SDK代码的第一资源包;获取插件SDK中第一资源包对应的第一文件包;将第一资源包替换插件SDK中的第一文件包,得到非插件版的替换后的SDK代码。优选地,获取非插件版的SDK代码的第一资源包之前,还包括:从非插件版的SDK代码提取一个或多个第一目标资源包,得到第一资源包,第一资源包包含一个或多个第一目标资源包。在其中一个实施例中,将第一资源包替换插件SDK中的第一文件包,得到非插件版的替换后的SDK代码之后,还包括:获取插件SDK的第二资源包;获取非插件版的替换后的SDK代码中第二资源包对应的第二文件包;将第二资源包替换非插件版的替换后的SDK代码的第二文件包,得到插件版的替换后的SDK。优选地,获取插件SDK的第二资源包,包括:从插件SDK中提取一个或多个第二目标资源包,得到第二资源包,第二资源包包含一个或多个第二目标资源包。一种插件SDK生成装置,该装置包括:获取模块,用于获取非插件版的SDK代码;查询模块,用于查询非插件版的SDK代码中系统类的第一代码以及第一对外接口类的第一名称;转换模块,用于将第一代码转换为非组件基类的第二代码,将第一名称转换为预设的第二名称,以使得名称转换后第一对外接口类的名称和宿主中与第一对外接口类对应的第二对外接口类的名称不同,得到待转换代码;生成模块,用于根据待转换代码生成插件版的插件SDK,插件SDK通过宿主的第二对外接口类对外通信。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。上述插件SDK生成方法、装置、计算机设备和存储介质,发行方系统获取非插件版的SDK代码,查询非插件版的SDK代码中系统类的第一代码以及第一对外接口类的第一名称,将第一代码转换为非组件基类的第二代码,将第一名称转换为预设的第二名称,以使得名称转换后第一对外接口类的名称和宿主中与第一对外接口类对应的第二对外接口类的名称不同,得到待转换代码。最终,根据待转换代码生成插件版的插件SDK,插件SDK通过宿主的第二对外接口类对外通信。因此,在需要对外提供插件SDK和非插件SDK时,系统内部只需要维护一套非插件版的SDK代码即可。当对外提供非插件版的SDK代码进行测试,发现可以对外使用插件SDK时,将系统内维护的非插件版的SDK代码中系统类的第一代码以及第一对外接口类的第一名称进行修改,生成对应的插件SDK。由于第一对外接口类的转换后的第二名称与宿主的第二对外接口类的名称不同,即可实现插件SDK通过宿主的第二对外接口类进行对外通信,从而实现将非插件版的SDK代码转化为插件SDK,无需再单独设置一套插件SDK,减少了系统内资源的浪费。同时,系统也无需同时维护两套SDK,减少了人工维护游戏app代码的维护成本。附图说明图1为一个实施例中一种插件SDK生成方法的应用环境图;图2为一个实施例中一种插件SDK生成方法的流程示意图;图3为一个实施例中一种插件SDK的应用方法的流程示意图;图4为一个实施例中一种插件SDK生成装置的结本文档来自技高网...

【技术保护点】
1.一种插件SDK生成方法,所述方法包括:/n获取非插件版的SDK代码;/n查询所述非插件版的SDK代码中系统类的第一代码以及第一对外接口类的第一名称;/n将所述第一代码转换为非组件基类的第二代码,将所述第一名称转换为预设的第二名称,以使得名称转换后所述第一对外接口类的名称和宿主中与所述第一对外接口类对应的第二对外接口类的名称不同,得到待转换代码;/n根据所述待转换代码生成插件版的插件SDK,所述插件SDK通过所述宿主的所述第二对外接口类对外通信。/n

【技术特征摘要】
1.一种插件SDK生成方法,所述方法包括:
获取非插件版的SDK代码;
查询所述非插件版的SDK代码中系统类的第一代码以及第一对外接口类的第一名称;
将所述第一代码转换为非组件基类的第二代码,将所述第一名称转换为预设的第二名称,以使得名称转换后所述第一对外接口类的名称和宿主中与所述第一对外接口类对应的第二对外接口类的名称不同,得到待转换代码;
根据所述待转换代码生成插件版的插件SDK,所述插件SDK通过所述宿主的所述第二对外接口类对外通信。


2.根据权利要求1所述的方法,其特征在于,所述系统类包括Activity组件的类、Service组件的类、ContentProvider组件的类、BroadcastReceiver组件的类和Application类中的一个或多个,所述将所述第一代码转换为非组件基类的第二代码,包括:
在gradle插件的transform环节中,将所述Activity组件的类的代码或所述Service组件的类的代码或所述ContentProvider组件的类的代码或所述BroadcastReceiver组件的类的代码或所述Application类的代码转换为非组件基类的第二代码;
优选地,所述将所述第一名称转换为预设的第二名称,包括:
在gradle插件的transform环节中,采用javassist的修改java字节码技术将所述第一名称转换为预先的第二名称。


3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
生成所述宿主的宿主代码,所述宿主代码中所述第二对外接口类的名称与所述非插件版的SDK代码中第三对外接口类的名称相同,所述非插件版的SDK代码通过所述第三对外接口类对外通信。


4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取所述插件SDK中的类的标识信息;
获取所述宿主代码中与所述插件SDK中的类对应的代理类;
将所述插件SDK中的类的标识信息和所述代理类关联,以使得所述代理类通过所述标识信息加载所述插件SDK中的类。


5.根据权利要求4所述的方法,其特征在于,所述将所述插件SDK中的类的标识信息和所述代理类关联,以使得所述代理类通过所述标识信息加载所述插件SDK中的类,包括:
控制所述代理类通过识别所述...

【专利技术属性】
技术研发人员:陶学诚张国祥朱晓鑫
申请(专利权)人:广州三七网络科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1