[发明专利]基于ksp生成描述文件的方法及快速插桩的gradle编译系统有效
申请号: | 202211611995.6 | 申请日: | 2022-12-15 |
公开(公告)号: | CN115617353B | 公开(公告)日: | 2023-03-21 |
发明(设计)人: | 沈黎明;叶玎玎;骆晓广;张溪梦;张金银 | 申请(专利权)人: | 杭州比智科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/73;G06F11/36 |
代理公司: | 北京云科知识产权代理事务所(特殊普通合伙) 11483 | 代理人: | 王素贞 |
地址: | 311121 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 ksp 生成 描述 文件 方法 快速 gradle 编译 系统 | ||
本发明公开了一种基于ksp生成描述文件的方法及快速插桩的gradle编译系统,其中方法包括如下步骤:声明配置描述文件的自定义注解及其属性字段;根据自定义注解对需要注入的类进行描述,以自定义描述接口类;根据描述接口类,通过ksp自动生成不同插桩类型的实体集合,实体集合中包括需要插桩的类名,方法和位置;根据插桩的实体集合通过Gradle编译期间对代码进行快速自动插桩。本发明通过在接口描述文件上声明插桩的目标,方法和位置,方便直接观测到所有插桩的描述,能够自动的生成所有需要插桩的类路径和方法,能够自动在编译期间对代码进行插桩,能够大幅提高项目编译开发的效率。
技术领域
本发明涉及计算机技术领域,特别涉及一种基于ksp生成描述文件的方法及快速插桩的gradle编译系统。
背景技术
Kotlin(科特林)是一个用于现代多平台应用的静态编程语言,由 JetBrains 公司开发,它可以被编译成多种语言在不同的机器上运行。现已作为安卓开发的官方语言。Ksp (Kotlin Symbol Processing 谷歌的基于Kotlin编译器提供的符号处理工具)是新一代的 Kotlin 注解处理工具,它基于 Kotlin 编译器实现,相对于 KAPT(可插入式注解处理Kotlin版)性能得到很大提升。Android Gradle 是开发安卓的默认构建工具,它提高了安卓的开发效率,能管理项目中的依赖、打包和编译。代码插桩指在目标程序代码编译的过程中某些位置插入或修改成一些代码,从而在目标程序运行过程中获取某些程序状态并加以分析,即代码中插入代码。
目前代码插桩的技术方案都是在 Gradle 编译期间手动编写需要插桩的代码类路径,方法和参数等一系列配置,每次修改都需要技术人员完全熟悉编译开发的技术细节和代码逻辑,同时还不能直接的观测到所有代码插桩的类路径和方法,极其容易发生错误和影响开发效率。
发明内容
针对现有技术存在的问题,本发明的目的在于通过在接口描述文件上声明插桩的目标,方法和位置,方便直接观测到所有插桩的描述,能够自动的生成所有需要插桩的类路径和方法,能够自动在编译期间对代码进行插桩,能够大幅提高项目编译开发的效率。
为实现上述目的,本发明提供一种基于ksp生成描述文件的方法,所述方法包括以下步骤:
S1.声明配置描述文件的自定义注解及其属性字段;根据不同类型的插桩情况分别对应创建多种类型注解和一种通用型注解;并设置标识注解Belong来提供给ksp进行识别;
S2.根据自定义注解对需要注入的类进行描述,以自定义描述接口类;由标识注解Belong声明接口描述文件,相应注解属性声明该接口描述文件将要插桩的代码类路径;
S3.根据描述接口类,通过ksp自动生成不同插桩类型的类路径方法的集合;
S4.根据插桩的实体集合通过Gradle 编译期间对代码进行快速插桩;通过AGP读取实体集合,遍历所有的用户代码和第三方jar包,与内存中的实例集合进行匹配,对代码进行插桩处理,将插桩后的代码同项目一起打包进行发布。
进一步,步骤S1中声明配置描述文件的自定义注解及其属性字段,包括:
S101.根据不同的插桩方式和位置声明各种类型的自定义注解;
S102.通过注解属性声明插桩目标的类和方法。
进一步,步骤S101中,所述不同的插桩方式包括插入插入目标类的目标方法、插入目标类的目标方法调用时的上下行和插入目标类其一级子类的目标方法。
进一步,步骤S102中,通过注解属性声明插桩目标的类和方法,包括:
声明目标类,目标方法,方法参数,返回值,位置前后,插桩目标属性以确定插桩位置的唯一性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州比智科技有限公司,未经杭州比智科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211611995.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:密封水冷电机控制器
- 下一篇:一种高精度水体取样箱及取样方法