小Tips:app安装在哪个路径?

2021/6/10更新:

1、安装路径共五个
  1. system/app 系统自带的应用程序,无法删除。root后可以删除
  2. system/priv-app 比system/app 中的应用权限更加高,如Launcher,系统设置等
  3. vendor/app 设备厂商提供的app
  4. system_ext/app 真实路径在 system/system_ext/app
  5. data/app 用户自己安装的app

data/data/packageName用于存储应用数据
data/dalvik-cache将apk中的dex文件放在这个目录中

  1. system/app中保存系统自带应用,需要有root权限才能访问。所以系统app在root之前是无法删除和修改的。当需要升级系统应用的时候,会将更新版本安装在data/app目录中,当启动app的时候,系统会将应用指向data/app目录中。用户当然可以删除更新版本,但是删除之后,系统会再次将system/app中的版本提供给你,即删除新版,还你旧版。

  2. 当然在root之后,我们是可以对system/app目录进行操作。但是更新时仍将更新版本安装在data/app中。所以如果用户想替换system/app中的版本,就只能手动将新版apk push到system/app中,待系统重启之后,会安装push版本。

2、apk安装过程

3.1、创建应用数据目录data/data/packageName,用于存储譬如数据库、share_preferences、so库等;

3.2、解压缩apk,提取dex可执行文件,存放于data/dalvik-cache目录中,系统会对dex文件做一些优化,生成odex文件,将其存储。

When you install an application on Android, it performs some modifications and optimizations on that application’s dex file (the file that contains all the dalvik bytecode for the application). It then caches the resulting odex (optimized dex) file in the /data/dalvik-cache directory, so that it doesn’t have to perform the optimization process every time it loads an application.

3.3、检查apk的签名文件;

3.4、使用PMS解析AndroidMenifest.xml文件,包括:四大组件的信息,包括Receiver,默认启动的Activity等;

3.5、根据sharedUserId,为应用分配UID,用户id是唯一的,因为android是一个linux系统。同时会为应用分配用户组id,用户组id指的是各种权限,每个权限都在一个用户组中。分配了哪些用户组,就拥有了哪些权限。

3.6、在Luancher上添加应用图标;

3.7、将app的包名、版本号、安装路径等保存在data/system/packages.xml文件中,以备下次安装时再次使用;

安卓系统在每次重启时,都会将所有app都重新安装一遍。
1、首先读取上次安装时保存的xml文件;
2、扫描安装保存在特定目录下的apk,包括system/app、vender/app、data/app等;
3、为每个app分配UID;
4、再次将安装信息保存在本地xml中,便于下次访问。

原始内容如下我是分割线

一. Android应用安装路径有两种情况:

  1. system/app 系统自带的应用程序,无法删除。root后可以删除,注意可能造成系统崩溃,不过有的垃圾捆绑软件只能这么删除了
  2. data/app 用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录。
  3. data/data 存放应用程序的数据。
  4. data/dalvik-cache 将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)。

二. APP安装过程:复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。

三. APP卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。

参考
Apk 安装过程

APK及相关的Android路径

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐