ASM插桩
张鹿鹿
这个作者很懒,什么都没留下…
展开
-
Android ASM 插桩实践
上一章知道了如何获取 class 文件,那该如何进行插桩呢?本章告诉你!什么是 ASM?ASM 是一个字节码操作库,它可以直接修改已经存在的 class 文件或者生成 class 文件。 ASM 提供了一系列便捷的功能来操作字节码内容,与其它字节码的操作框架相比(例如 AspectJ),ASM 更加偏向于底层,直接操作字节码,在设计上更小、更快,性能上更好,而且几乎可以修改任意字节码。参考网易乐得团队关于插桩库的实验结果:通过上表,ASM 效率更高。不过效率高的代价就是 ASM 直接操作字节.原创 2020-07-26 21:47:26 · 4970 阅读 · 2 评论 -
Android Transform API
上一章知道如何自定义 Gradle插件后,我们到底可以用来做什么呢?难道只是用来定义一些简单的 Task?本章给你答案!什么是 Transform APIAndroid Gradle 工具从 1.5.0-beta1 版本开始,包含了 Transform API,它允许第三方插件在将编译后的类文件转换为 dex 文件之前对 .class 文件进行操作。Transform 的工作原理接下来看下它的工作原理:很明显它是一个链式结构,每个 Transform 都是一个 Gradle 的 Task,.原创 2020-07-26 21:46:38 · 1500 阅读 · 1 评论 -
Android Gradle 插件基础
本章跟大家一起探讨下 Gradle 基础知识:Project、Task和插件,由于是作为插桩的铺垫,所以我们重点放在 Gradle 插件 上,其他基础知识自行查阅。Project(项目)以咱们熟悉的 Android 项目举例说明:通过 Android Studio 创建项目会自动生成两个模块,一个就是以项目名来命名的根模块(ASMInjectDemo),另外一个就是 app 模块。这两个模块都有 build.gradle 文件,我们知道每个 build.gradle 文件都代表一个 Projec.原创 2020-07-26 21:45:30 · 776 阅读 · 0 评论