我想知道是否可以通过解析classes.dex文件来计算调用API的次数。我知道如何获得所有api的调用,但我想知道是否有一种方法可以在不运行应用程序的情况下获得调用api的次数,只需解析classes.dex
即可。这些信息存储在dex文件中吗?
我快速查看了dex文件格式,但未能找到该信息。
例:如果substring()
只在class1、class2和class3中使用过一次,我应该能够获得被调用3次的子字符串的信息。
发布于 2015-05-26 22:45:13
仅仅解析代码就无法知道API调用的次数。例如,foo()
被调用了多少次?
public static void bar(int x) {
for ( int i = 0; i < x; i++ ) {
foo();
}
}
如果您只看源代码,答案是一次,但如果您分析语义,答案是x
时间。
如果您只想知道API调用在源代码中存在的次数,那么您可以很容易地得到它。
这只能被认为是实际API调用计数的粗略代理。如果你想要更准确的东西,你必须做符号分析。不幸的是,没有一个关键的解决方案,您可以使用,我知道。
https://stackoverflow.com/questions/30072076
复制相似问题