Search code examples
androidfluttergradlebyte-buddy

Can I transform compiled classes using Byte Buddy during compilation?


I need to modify some class in Flutter framework during compilation of my Flutter application. Thought, it's a good idea to use the byte-buddy-gradle-plugin for this purpose. Added this into my app/build.gradle:

apply plugin: "net.bytebuddy.byte-buddy-gradle-plugin"
byteBuddy {
    transformation {
        plugin = "com.example.BuildPlugin"
        // classPath = ...
    }
}

BuildPlugin is executed succesfully on compileDebugKotlin task, but it processes only my project classes. Is there any possibility to point it to flutter.jar somehow, maybe using classPath transformation parameter? I tried to use this part from plugin README:

configurations {
  examplePlugin "foo:bar:1.0"
}

with some modifications, but got "Gradle DSL method not found: 'examplePlugin()'" error.


Solution

  • Unfortunately, this is not really compatible to how build pipelines work. What you can do is that you use the shade plugin to copy a dependency's code into your project and then process it from there. Otherwise, Java agents would be the solution for this but Android does not support it.