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文件和运行时从APK / ZIP / JAR解压缩的orroids程序是什么?
答案 0 :(得分:2)
这种方式非常有趣,并提供了一些关于Android运行时模型的重要见解。如果您打算使用Android进行任何大量的系统操作,我建议首先观看的是Dalvik VM internals。 (虽然,它显然已经过时了。)现在,当Android软件包管理器获得一个需要启动新应用程序的intent时,它会从已经运行的 zygote 进程中分离出一个新的虚拟机。这基本上是一种技术,它允许系统获得许多不错的内存属性(共享页面映射等)。然后,系统加载(可能预优化和验证的)文件以加载,以便vm可以开始执行它。你应该阅读this文件,它会告诉你很多关于它是如何工作的。 (也许this线程也会有帮助。)请记住,因为所有系统都不同 - 例如,如果您使用的是新体系结构,除非您明确地编写它,否则您将无法获得JIT支持! - 您无法确定 Dalvik将如何加载代码来运行您的应用。