gpt4 book ai didi

java - 使用 Java 在 Android 中进行方法 Swizzling

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:02 25 4
gpt4 key购买 nike

是否可以使用 java 在 android 中进行方法调配?我想拦截一个系统方法并记录它的参数然后正常处理它

最佳答案

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

也许您可以使用 AOP 实现类似的结果。

但是在 Android 上,您可以用它做的事情看起来很有限。参见 Aspect-oriented programming in android .事实上,由于您不会编译目标代码(系统方法),因此编译时编织(这似乎是您可以在 Android 上使用的所有内容)对于这种情况将毫无用处。我想这个答案也是如此。

还有一个想法...我猜您想始终如一地执行此日志记录。但是如果你需要它来调试问题,你可以使用 conditional breakpoint in Eclipse 来完成。 .

A conditional expression can contain arbitrary Java code and may contain more than one statement, allowing breakpoint conditions to implement features like tracing. For example, a condition can execute a print statement and then return a hard coded value to never suspend ("System.out.println(...); return false;").

我不知道这是否适用于 Android SDK 中的方法。但它确实适用于 Java SDK 中的方法。例如,这是一个简单的代码:

    System.err.println("foo");

我在 PrintStream.print 中设置了条件断点,如下所示:

System.err.println("hello: " + arg0);
return false;

程序调试时的控制台输出是这样的:

hello: foo
foo

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

关于java - 使用 Java 在 Android 中进行方法 Swizzling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8403273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com