0
AndroidのByteBuddyでクラスのメソッドを置き換えることは可能ですか?AndroidではByteBuddyでMethodDelegationインターセプトが可能ですか?
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で可能ですか、それとも選択肢がありますか?
おかげ