是否可以使用Java在Android中进行方法转换?我想拦截一个系统方法并记录其参数,然后正常处理

最佳答案

我认为在任何环境下都不能使用Java使用该技术。

也许您可以使用AOP获得类似的结果。

但是,您只能在Android上执行此操作。参见Aspect-oriented programming in android。实际上,由于您不会编译目标代码(系统方法),因此在这种情况下,编译时编织(似乎是您可以在Android上使用的所有东西)将毫无用处。正如我想的那样。

另一个想法...我想您希望一直进行此日志记录。但是,如果您需要此工具来调试问题,则可以使用conditional breakpoint in Eclipse来完成。



我具体不知道这是否适用于Android SDK中的方法。但是它可以与Java SDK中的方法一起使用。例如,下面是简单的代码:

    System.err.println("foo");

我在PrintStream.print中创建了一个条件断点,如下所示:
System.err.println("hello: " + arg0);
return false;

在程序中调试时的控制台输出是这样的:
hello: foo
foo

请注意,由于JDK并未使用调试符号进行编译,因此我无法按名称引用方法参数,而只能使用arg0..argn

10-04 10:54