[发明专利]插件SDK生成方法、装置、计算机设备和存储介质在审
申请号: | 202011231744.6 | 申请日: | 2020-11-06 |
公开(公告)号: | CN112486569A | 公开(公告)日: | 2021-03-12 |
发明(设计)人: | 陶学诚;张国祥;朱晓鑫 | 申请(专利权)人: | 广州三七网络科技有限公司 |
主分类号: | G06F8/76 | 分类号: | G06F8/76;G06F11/36 |
代理公司: | 北京市万慧达律师事务所 11111 | 代理人: | 刘艳丽 |
地址: | 510655 广东省广州市天河*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 插件 sdk 生成 方法 装置 计算机 设备 存储 介质 | ||
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中的类,包括:
控制所述代理类通过识别所述标识信息并采用反射的方式调用所述插件SDK中的类,以加载所述插件SDK中的类。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述非插件版的SDK代码的第一资源包;
获取所述插件SDK中所述第一资源包对应的第一文件包;
将所述第一资源包替换所述插件SDK中的第一文件包,得到非插件版的替换后的SDK代码;
优选地,所述获取所述非插件版的SDK代码的第一资源包之前,还包括:
从所述非插件版的SDK代码提取一个或多个第一目标资源包,得到所述第一资源包,所述第一资源包包含一个或多个所述第一目标资源包。
7.根据权利要求6所述的方法,其特征在于,所述将所述第一资源包替换所述插件SDK中的第一文件包,得到非插件版的替换后的SDK代码之后,还包括:
获取所述插件SDK的第二资源包;
获取所述非插件版的替换后的SDK代码中所述第二资源包对应的第二文件包;
将所述第二资源包替换所述非插件版的替换后的SDK代码的第二文件包,得到插件版的替换后的SDK;
优选地,所述获取所述插件SDK的第二资源包,包括:
从所述插件SDK中提取一个或多个第二目标资源包,得到所述第二资源包,所述第二资源包包含所述一个或多个第二目标资源包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州三七网络科技有限公司,未经广州三七网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011231744.6/1.html,转载请声明来源钻瓜专利网。