Android:了解APK安装过程

use*_*295 46 installation android apk

我试图了解如何在Android上安装apk的过程,特别是通过adb install(我正在测试的地方)安装Android SDK模拟器.

在搜索中,我发现没有令人满意的答案"将apk简单地复制到/ data/app并在运行时安装.这对我来说并不令人满意,因为它没有解释apk的图标如何出现在其他菜单上的问题.

来自Windows背景,运行.exe或安装程序来安装程序会修改注册表,文件,服务等....我需要了解在Android上安装apk时是否发生此类或类似情况.

因此,如果有人能够向我解释在Android上安装apk时具体发生什么,我将非常感激.

另外,我还想知道Dalvik VM zygote是否参与了安装,还是发生在较低的Linux内核级别?

我的最终目标是使用strace来控制apk的安装过程,以记录系统修改,文件创建,网络活动和其他感兴趣的事件.

sap*_*ppu 25

主要有两类Android应用程序.

  1. 系统应用程序:在系统初始化时安装
  2. 用户应用程序:使用ADB或在SD卡中复制.apk文件从Play商店安装.

以下是逐步安装过程.

  1. 解析AndroidManifest.xml,提取信息并存储到/data/system/packages.xml和/data/system/packages.list
  2. .apk文件被复制到特定目录,并为此应用程序创建数据存储目录

XML解析,资源分析和.apk文件复制都是通过

PackageManageService.java

但是,目录创建是通过

installd.c

PackageManageService.java通过位于/ dev/socket/installed的本地套接字与installd.c进行通信

复制.apk文件的包对于系统应用和用户应用程序是不同的.对于系统应用程序来说

/系统/应用程序/

将复制到.apk文件中的用户app .apk文件复制到的位置

/数据/应用程序

.dex文件,从.apk文件中提取,被复制到/ data/dalvik-cache /.

包管理器创建数据目录/数据/数据//以存储数据库,共享首选项,本机库和缓存数据


pan*_*ear 10

我想,你想知道的一切都在Android开发者网站http://developer.android.com/tools/building/index.html中,要了解应用程序本身的包装,这里的图像效果更好(不是APK安装过程,但它可以帮助您了解apk结构和安装).你也可以谷歌关于aapt工具和.dex来了解更多,因为classes.dex是你的应用程序的子结构 - 包含java和编译的类.一个dex文件包含多个类,而java类文件只包含那个类.dex文件是用DX工具转换的java字节码,它是Android SDK的组成部分.因此,它允许每个应用程序作为自己的进程运行,并具有自己的Dalvik虚拟机实例. APK

  • 嗨,谢谢Natasa,这个链接(和图)很好地解释了构建apk的细节,但它没有解释APK安装过程的细节,它只表示在模拟器和设备上运行"......并在设备(模拟器)上安装你的apk ..."我仍然需要了解在apk安装过程中发生的Anroid OS修改,到目前为止在令人敬畏的线程中,仍然没有答案,请协助.Ĵ (15认同)
  • 这不是问题的答案:这解释了APK构建过程,而不是设备上的安装过程. (3认同)