Android ART – 在 dalvik-cache 中使用.oat文件?

Android ART – 在 dalvik-cache 中使用.oat文件?,第1张

概述在玩 Android ART和在应用程序安装过程中创建的“本机”代码文件.oat / .elf时,我注意到了一些奇怪的事情. 根据我的理解,如果设备使用ART(Android> = 5.0),应用程序将从编译的燕麦文件(/ data / dalvik-cache / arm64 /)开始. 这就是为什么我在检查应用程序的使用过的fd并且没有在那里找到文件时有点惊讶.那里只列出了普通的apk(/da 在玩 Android ART和在应用程序安装过程中创建的“本机”代码文件.oat / .elf时,我注意到了一些奇怪的事情.

根据我的理解,如果设备使用ART(AndroID> = 5.0),应用程序将从编译的燕麦文件(/ data / dalvik-cache / arm64 /)开始.

这就是为什么我在检查应用程序的使用过的fd并且没有在那里找到文件时有点惊讶.那里只列出了普通的apk(/data/app//base.apk).

检查我的“ls -l / proc / PID / fd”的输出

所以我想也许它只是没有列在那里.所以我通过使用dex2oat工具编译另一个classes.dex来自己交换该应用程序的oat文件.

因此,即使在更改文件后,应用程序也会正常启动,没有任何奇怪的消息或错误(也在logcat中).

对此有何解释?在ART下启动应用程序时AndroID的详细流程是什么?

我希望有人可以为我解决这个问题.非常感谢.

解决方法 根据@Paschalis评论,我在这里调查,燕麦文件确实是在AndroID 5.0设备(模拟器)上映射的内存:

a6af4000-a6af9000 r – p 00000000 1f:01 7366 /data/dalvik-cache/x86/data@app@my.app.works-1@base.apk@classes.dex

检查通过:

cat / proc /< PID> / maps | grep dex

遗憾的是,AndroID 6.0设备(Nexus 5& arm-Emulator)不再适用.

odex文件位于/ data / app /< APP> / oat /< ARCHITECTURE> /文件夹中,作为’base.odex`

/data/app/app.app.works-1/oat/arm/base.odex

我仍然没有找到有效的参考资料,它是基于实验和观察

总结

以上是内存溢出为你收集整理的Android ART – 在/ dalvik-cache /中使用.oat文件?全部内容,希望文章能够帮你解决Android ART – 在/ dalvik-cache /中使用.oat文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1127953.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存