通过注释转换 类 / 方法

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 开发的东西。