动态加载和执行预编译代码(oat 文件)

Load and execute precompiled code (oat file) dynamically

由于 Google 在较新的 Android 版本中删除了 "openDexFile(byte[] fileContents)",我们正在寻找替代品,此外我们更愿意使用预编译代码(参见 dex2oat),也是。

有人知道执行该任务的函数吗?我们也不想将文件存储在磁盘上。

也许替换内存中的应用程序代码怎么样?这在新的 ART VM 下可能吗?我正在寻找有关此主题的更多信息。我知道以前的 Dalvik VM 是可能的。

感谢任何帮助。谢谢。

一般情况下,您无法加载预编译的 odex/oat 文件。这些文件严重依赖于编译它们时使用的确切框架,因此它们不能在设备之间移植。

您可以使用 DexClassLoader. See, e.g. http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

在 dalvik 和 art 上动态加载 dex 文件