Android 以 APK 格式存储它的程序,这是 ZIP/JAR 的修改版本。
安装这些 APK 文件时,它们存储在/system/app/$APKNAME.apk 中。
此目录中的一些应用程序也有一个 $APKNAME.obex 文件。
这些 APK 文件包含一些休闲
META-INF
MANIFEST.MF
CERT.RSA
CERT.SF
SHA1-Digest
res
AndroidManifest.xml
classes.dex
resources.arsc
所以我想知道的是什么是 .obex 文件,Android 程序是在运行时从 APK/ZIP/JAR 中解压缩的吗?
最佳答案
它的工作方式非常有趣,并且提供了对 Android 运行时模型的一些重要见解。我首先推荐观看的是 Dalvik VM internals ,如果你打算用 Android 做任何大量的系统工作。 (尽管它显然已经过时了。)现在,当 Android 包管理器收到需要启动新应用程序的 Intent 时,它会从已经运行的 zygote 进程中 fork 出一个新的虚拟机。这基本上是一种允许系统获得许多不错的内存属性(共享映射的页面等)的技术。然后,系统加载一个(可能是预先优化和验证的)文件进行加载,以便虚拟机可以开始执行它。你应该阅读 this文件,它会告诉你很多关于它是如何工作的。 (也许 this thread 也会有所帮助。)请记住,由于所有系统都是不同的——例如,如果您使用的是新架构,除非您明确编写,否则您不会获得 JIT 支持! -- 您无法确定 Dalvik 将如何加载代码来运行您的应用。
关于android - android如何存储和运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9816232/