Можно ли заменить метод класса ByteBuddy на Android?Возможно ли перехват MethodDelegation с ByteBuddy на Android?
public class DoSomething {
public void saySomething() {
Log.d("DoSomething", "Hello World");
}
}
public class ModifiedDoSomething {
public void saySomething() {
Log.d("ModifiedDoSomething", "Hello Injected");
}
}
new ByteBuddy()
.subclass(DoSomething.class)
.method(ElementMatchers.named("saySomething"))
.intercept(MethodDelegation.to(ModifiedDoSomething.class))
.make()
.load(DoSomething.class.getClassLoader(),
new AndroidClassLoadingStrategy(f))
.getLoaded()
.newInstance()
.saySomething();
Когда я пытаюсь этот код, он бросает:
java.lang.IllegalArgumentException: None of [] allows for delegation from public void DoSomething.saySomething()
Когда я перехватывать с FixedValue, он прекрасно работает, но я должен был бы полностью заменить реализацию метода или, по крайней мере, перехватите начало, вызовите оригинал, а затем снова перехватите его. Это как-то возможно с ByteBuddy или есть альтернативы?
Благодаря