0

所以我正在开发一个应该适合多个应用程序的 Xposed 模块,该模块的目的是为不同的应用程序自动创建一组模块,我需要知道的是,有没有办法知道所有的某个应用程序在运行时调用的方法,例如如果我可以制作一个 Xposed 模块,它将所有被调用方法的名称保存在一个数据库中,这将是一个很大的帮助,或者如果您对Xposed模块请指出我的方向。最后,该应用程序的目的是向用户显示应用程序中每种方法的功耗,并显示哪些方法比其他方法使用更多的功率,这就是我需要自动化该过程的原因,这样我就可以为不同的应用程序创建多个模块,而无需经历所有其他应用程序的代码。

4

1 回答 1

0

你想要做的在理论上是可能的:

例如,您可以在运行时加载应用程序的 dex 文件并检查每个类和方法并挂钩它们。然而,这将有几个显着的缺点:

  1. 在应用程序中挂钩许多功能时,执行速度会显着减慢。即使在高端设备上,用户也不会接受这一点。这也会增加有关无响应应用程序的 Android 错误消息,因为您的 Xposed 模块会减慢它们的速度。

  2. 从我的角度来看,更糟糕的问题是,速度变慢当然意味着 CPU 有更多的工作要做,因此最终你的 Xposed 模块会大大降低电池寿命。因此,最终使用 Xposed 模块管理的数据的电池使用监控应用程序必须显示 Xposed 和您的模块消耗了超过 50% 的电池(只是一个原始估计,可能高达 80%)因为有大量的钩子方法。

方法挂钩是一种技术,只有在您只执行一些不经常执行的方法时才会有效。

或者,您可以在特殊的测试设备上使用它来评估某些东西(因此它不会在每天使用的常规设备上使用)。在这种环境下,增加电池使用量和减慢应用程序并不是很成问题。

于 2021-01-06T08:24:31.043 回答