Android APP的安装路径

2023-11-16

小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路径

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android APP的安装路径 的相关文章

  • Oracle vm virtualbox安装

    Oracle vm virtualbox安装 VirtualBox 簡介 下載安裝包 VirtualBox 簡介 VirtualBox 是一款开源虚拟机软件 VirtualBox 是由德国 Innotek 公司开发 由Sun Microsy
  • nodejs开发环境安装

    安装环境 win7 64位 访问nodejs官网 http nodejs org 点击Download链接 选择Windows Installer 下载安装包 直接安装即可 安装成功后 在命令窗口 cmd node 查看是否成功 若果没有成
  • 在虚拟机里通过U盘引导安装Win10教程

    一 前言 打算在VM虚拟机里安装一个Win10系统 按照网上的教程 通过虚拟机的光驱加载 iso镜像文件来引导 发现启动不了 虚拟机一直停留在如下界面 推测可能是该 ios镜像文件里没有合适的引导程序 因此 打算尝试U盘启动 经过验证 发现
  • windows安装elasticsearch和kibana的安装配置教程

    Elasticsearch 和 Kibana 的最新稳定版本是 7 x 系列 而不是 8 9 1 版本 然而 我可以提供安装 Elasticsearch 7 x 和 Kibana 7 x 的配置教程 以下是安装 Elasticsearch
  • SbS001——VMware Workstations 14 安装与配置教程(Windows平台)

    一 介绍 VMware Workstation 是一款优秀的虚拟PC软件 利用VMware工作站 可以在现有的操作系统上虚拟出一个或多个新的硬件环境 相当于模拟出多台新的PC 以此来实现在一台机器上同时运行多个独立的操作系统 VMware
  • vs2017新建空文件夹报错0x80041FE2解决办法

    原因分析 你无意间删除了安装时的缓冲路径文件夹 请将该文件夹恢复 否则 重新安装软件 缓冲文件夹一般名称为 DownloadBrowser
  • python3安装Pillow(PIL)

    本方法亲测可用 我的是win7 32位 Python3 4 官网上还没有支持Python3的PIL 使用Pillow代替PIL 首先 下载对应的whl文件 来源http www lfd uci edu gohlke pythonlibs 4
  • openwrt安装和使用minicom

    opkg list先看一下软件源里面有没有minicom包 有的话就直接安装 opkg install minicom 安装完后执行minicom v查看版本信息确认是否安装成功 安装完成后 把USB串口设备插入到路由器USB口 我用的是p
  • 【Docker】Docker 如何在容器内安装vi命令(vi不能使用)

    文章目录 1 背景 1 背景 mac下安装了docker 然后用docker 安装了grafana软件 然后进入grafana base lcc lcc prometheus docker exec it 4b5f517f4340 bash
  • 解决xgboost安装问题:xgboost.core.XGBoostError: XGBoost Library (xgboost.dll) could not be loaded.

    问题描述 下载xgboost 使用pip安装后 在python中导入import xgboost出错 如下 xgboost core XGBoostError XGBoost Library xgboost dll could not be
  • 安装TomCat的艰辛历程

    学习Java的初级阶段 是个充满无奈与呵呵的时间 就安装一个TomCat我就安装了一晚上 还没有成功 所以我给我的 捉猫泪史 写个传 以免后来者重蹈覆辙 首先 安装TomCat之前 先将Java环境搭好 就是下载并安装Java develo
  • 解决mysql不是内部或外部命令 环境变量 并且

    安装Mysql后 当我们在cmd中敲入mysql时会出现 Mysql 不是内部或外部命令 也不是可运行的程序或其处理文件 打开我的电脑在我的电脑右键中选择属性 然后单击选择高级系统设置 在系统属性的 高级 中选择环境变量path 选择Mys
  • IPV6 阿里DDNS

    IPV6 阿里DDNS 因为需要在家搭建一套环境 并且需要公网能访问 国内的ipv4的地址 各大运营商基本都不会分配ipv4地址 电信宽带好像有地方可以 但是听说很贵 而且是动态的 每过段时间就会改变 发现移动宽带的公网ipv6地址是可以获
  • bind9+mysql搭建高可用DNS解析服务

    bind9 mysql搭建DNS解析服务 基本的架构图如下 安装步骤 安装依赖服务 yum install wget cmake ncurses boost zlib gcc libuv libuv devel libnghttp2 lib
  • Ubuntu16.04安装JDK1.8详细步骤

    检测是否安装JDK root instance cqxyyrb2 java The program java can be found in the following packages default jre gcj 5 jre head
  • Electron应用图标的配置与生成

    技术选型 1 electron 21 3 3 2 electron vite 1 0 17 3 vue 3 2 45 4 element plus 2 2 32 背景 默认情况下我们使用electron开发的应用使用的图标有四种类型 软件的
  • docker-engine安装

    最近一直在使用docker 做一些试验 每个新机器都需要部署docker的环境 环境信息如下 RedHat 7 2 安装 docker官方的安装 docker engine 1 sudo rpm import https sks keyse
  • Ubuntu 虚拟机环境下配置 Clang/LLVM

    流程 从本质上讲 Ubuntu 环境下配置 Clang LLVM 与 VS 环境下的配置过程并无本质区别 Ubuntu 环境中具体流程如下所示 以 LLVM 4 0 0 为例 从官网 LLVM Download Page 下载 Clang
  • Android APP安装后在桌面上不显示应用图标

    前几天在写项目的时候运行的时候突然Android桌面上没有了应用图标 但是应用里面下载的应用有 调试版本和发布正式的版本都没有 之前以为是因为用了不同的keystore发布了两个不同的正式版本造成的问题 后来在看别人的文章才知道是什么问题
  • Nginx-简介

    用Python语言开发的站点使用的Web服务器主要有Nginx Apache以及淘宝的Tengine Nginx是由Igor Sysoev在2004年发布的一个开源 高性能的HTTP服务器和反向代理 它还可以用来作为IMAP POP3的代理

随机推荐

  • Mybatis之choose (when, otherwise)标签

    choose when otherwise 标签 有时候我们并不想应用所有的条件 而只是想从多个选项中选择一个 而使用if标签时 只要test中的表达式为 true 就会执行 if 标签中的条件 MyBatis 提供了 choose 元素
  • idea 导出文件附带文件目录结构

    安装这个插件
  • Linux学习记录之命令

    1 显示 跳转行号的基本操作 vi 文件名 打开文件后 如果要显示所有行号 使用 set nu 如果要显示当前行号 使用 nu 如果要跳转到指定行 使用 行号 例如 跳转到第10行 使用 10
  • OpenPie上榜2022年源自中国值得关注的20家新锐全球化科技品牌

    2022年6月25日 EqualOcean盘点了2022年源自中国值得关注的20家新锐全球化科技品牌 拓数派 OpenPie 成为了数据计算领域领先全球的佼佼者 OpenPie是以 Data Computing for New Discov
  • 1.3 OC与OD门(硬件基础系列)

    针对设计过程的问题 欢迎各位留言评论或群内讨论 1 3 OC与OD门 1 3 1 简介 OC Open Collector 门又叫集电极开路门 主要针对的是BJT电路 图1 21 OC门 OD Open Drain 门又叫漏极开路门 主要针
  • express中简单的使用token

    首先安装需要的插件 创建一个js文件 导入express const exprss require express 创建web服务器 const app exprss 生成token const jwt require jsonwebtok
  • 35道SpringBoot面试题及答案

    Spring Boot 是微服务中最好的 Java 框架 我们建议你能够成为一名 Spring Boot 的专家 本文精选了三十五个常见的Spring Boot知识点 祝你一臂之力 问题一 Spring Boot Spring MVC 和
  • AODV按需路由协议

    一 详细解释 AODV Ad hoc On demand Distance Vector Routing 是一种按需路由协议 当一个节点需要给网络中的其他节点传送信息时 如果没有到达目标节点的路由 则必须先以多播的形式发出RREQ 路由请求
  • Windows Server 2008多路径 I/O 概述

    面向高可用性的多路径支持 Windows Server 2008 包括许多将运行 Windows 服务器级操作系统的计算机与存储区域网络 SAN 设备连接起来的增强功能 集成的多路径 I O MPIO 支持是为基于 Windows 的服务器
  • 升专家需要具备的6个能力!

    阅读本文大概需要2min 文 强哥 图 强哥 未经授权禁止转载 高级开发和初级开发的区别并不只有工作经验的差异 可以说如果只凭经验丰富 那还不够高级开发的标准 互联网企业一般对于技术岗都有清晰的晋升体系和对应的能力图谱 有些人可能因为某些原
  • struct结构体占内存字节数

    昨天写了一个结构体demo 心血来潮打印struct所占内存字节数 struct student char name 20 char sex int num float score 3 void print 你猜猜是多少个字节数呢 对于ch
  • PCL拼接点云数据

    1 将两个点云拼接成一个点云 1 1 输入和输出 输入 两个相同点格式的点云比如pcl PointCloud
  • JSP include能包含html页面吗?

    转自 JSP include能包含html页面吗 jsp简介 JSP全称是Java Server Pages 是一种动态网页技术 JSP其实就是在html中插入了java代码和JSP标签之后形成的文件 文件名以 jsp结尾 其实JSP就是一
  • 输入网址后,会经历哪几个步骤

    1 面试官问输入网址后 会经历哪几个步骤 DNS HTTPS TCP 就知道这两个 DNS解析 TCP连接 发送http请求 HTTP请求报文的方法是 get 如果浏览器存储了该域名下的 Cookies 那么会把 Cookies放入 HTT
  • 协议数据处理流程

    数据处理流程 总体流程 数据放入缓冲 PushToComFIFO RecBuffer BufLen 从数据缓冲中解包协议格式 读缓冲 GetDataFromComFIFO ComStr 从数据缓冲中解包协议格式 协议格式解析 Get XXX
  • python实验报告实验总结_python还能干这事

    上文提到python可以干很多事 很多时候生活中的很多问题都可以用代码解决 尤其是那些反复重复的事 今天就拿读研的时候的一个例子给大家说说 如何用代码解决生活中的问题 问题 导师带了3个班的图形学 100多号人 期末了 平时成绩已经出来了
  • web常见的攻击方式有哪些,以及如何进行防御?

    一 是什么 Web攻击 WebAttack 是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码 修改网站权限 获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要组成部分 确保Web应用程序安全十分重要
  • react组件中设置多个className

    错误写法
  • c++下的文件批量读写——查找文件的类 struct _finddata_t结构体用法

    查找文件的类 struct finddata t结构体用法 https blog csdn net yang332233 article details 53081785 但是运行原链接的代码时在while findnext handle
  • Android APP的安装路径

    小Tips app安装在哪个路径 2021 6 10更新 1 安装路径共五个 system app 系统自带的应用程序 无法删除 root后可以删除 system priv app 比system app 中的应用权限更加高 如Launch