0

使用相同架构的其他设备上的 OAT 文件是否相同?如果不一样,你能告诉我为什么吗?谢谢你。

还有一个问题,我想知道ODEX文件在使用相同架构的其他设备上是否相同

4

1 回答 1

1

很可能不是。oat 文件严重依赖于编译它的设备框架。dex 文件使用的任何框架类的任何差异都可能导致 oat 文件不同。

我比较熟悉的 odex 案例也是如此,可以举一个更具体的例子。

在 odex 文件中进行的特定优化之一是针对虚拟方法调用,用要调用的方法的简单 vtable 索引替换要调用的方法的详细信息(类、名称、参数、返回类型)。

一个类的 vtable 布局当然取决于该类中定义的所有虚拟方法。因此,例如,有一个 A 类通常具有 5 个虚拟方法,但其中一个 OEM 添加了第 6 个方法(例如,可能是受保护的“帮助器”方法,无论如何),那么就有可能更改 vtable 的索引所有其他方法,这意味着引用该类的任何 odex 文件在 2 个设备之间可能会有所不同。

于 2018-08-20T02:28:57.410 回答