使用相同体系结构的其他设备上的OAT文件是否相同? 如果不一样,你能告诉我为什么吗?谢谢。
还有一个问题,我想知道ODEX文件在使用相同体系结构的其他设备上是否相同
答案 0 :(得分:1)
很有可能不会。燕麦文件在很大程度上取决于在其上编译的设备的框架。 dex文件使用的任何框架类的任何差异都可能导致燕麦文件不同。
与odex盒类似,我稍微熟悉了它,并且可以举一个更具体的例子。
在odex文件中完成的一项特定优化是针对虚拟方法调用,用要调用的方法的简单vtable索引替换要调用的方法的详细信息(类,名称,参数,返回类型)。 / p>
一个类的vtable的布局取决于该类中定义的所有虚拟方法。因此,例如,有一个A类,通常具有5个虚拟方法,但其中一个OEM增加了第6种方法(例如,受保护的“辅助”方法,无论如何),那么就有可能更改以下对象的vtable索引所有其他方法,这意味着引用该类的任何odex文件在两个设备之间可能都不同。