通过注释转换 类 / 方法
Transform classes / methods by annotations
有没有办法transform/modify 类 和自定义注解的方法? #bytecode-manipulation(但对于 dex)
最好的方法是什么?
代理不是我正在寻找的合适方式。
Dex-file 基本操作是可能的,但非常复杂,几乎没有好的工具。
相反,当代码仍表示为 class 文件时,您应该在构建期间对其进行检测。有各种各样的工具。我编写了一个名为 Byte Buddy 的工具,它允许您在构建期间使用 Maven 或 Gradle 插件 运行 编写代码。
为了更改 class,您必须实现库的 Plugin
接口,它允许您指定要更改的内容 class 以及如何更改更改。 Byte Buddy 内联所有 class,因此您无需创建 运行 时间代理。
对于 Gradle,您必须创建一个引用您的插件代码的配置:
configuration {
myPlugin
}
dependencies {
myPlugin "my:plugin:1.0"
}
byteBuddy {
transformation {
plugin "pkg.MyPluginImpl"
classpath configuration.myPlugin
}
}
我假设这就是你用来为 Android 开发的东西。
有没有办法transform/modify 类 和自定义注解的方法? #bytecode-manipulation(但对于 dex)
最好的方法是什么?
代理不是我正在寻找的合适方式。
Dex-file 基本操作是可能的,但非常复杂,几乎没有好的工具。
相反,当代码仍表示为 class 文件时,您应该在构建期间对其进行检测。有各种各样的工具。我编写了一个名为 Byte Buddy 的工具,它允许您在构建期间使用 Maven 或 Gradle 插件 运行 编写代码。
为了更改 class,您必须实现库的 Plugin
接口,它允许您指定要更改的内容 class 以及如何更改更改。 Byte Buddy 内联所有 class,因此您无需创建 运行 时间代理。
对于 Gradle,您必须创建一个引用您的插件代码的配置:
configuration {
myPlugin
}
dependencies {
myPlugin "my:plugin:1.0"
}
byteBuddy {
transformation {
plugin "pkg.MyPluginImpl"
classpath configuration.myPlugin
}
}
我假设这就是你用来为 Android 开发的东西。