问题描述
有没有一种方法可以转换/修改由自定义注释注释的类和方法? #bytecode-manipulation(但适用于dex)
最好的方法是什么?
代理不是我要寻找的适当方法 。
1楼
可以基于Dex文件进行操作,但操作非常复杂,几乎没有好的工具。
相反,您应该在构建期间对仍表示为类文件的代码进行检测。 有各种各样的工具。 我编写了一个名为的工具,该工具使您可以在构建期间使用Maven或Gradle插件运行代码。
为了更改类,您必须实现库的Plugin
接口,该接口允许您指定要更改的类以及更改方式。
Byte Buddy内联所有类,因此您无需创建运行时代理。
对于Gradle,您必须创建引用您的插件代码的配置:
configuration {
myPlugin
}
dependencies {
myPlugin "my:plugin:1.0"
}
byteBuddy {
transformation {
plugin "pkg.MyPluginImpl"
classpath configuration.myPlugin
}
}
我认为这就是您为Android开发所使用的。