RayGroup Inc

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2138 | 回复: 3

安装app时,你的手机到底发生了什么?

[复制链接]

57

主题

225

帖子

1640

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1640
发表于 2020-5-31 11:57:03 | 显示全部楼层 |阅读模式
在了解安装APP时发生什么之前,我们先要搞清楚一些基本原理和知识。

我们先了解一下app的内部有什么。

这里使用MT文件管理器,展示app里的各个文件

app的安装包可以看作是完成了源码编译后的压缩文件,里面存放着各种运行所依赖的数据。


安装app时,你的手机到底发生了什么?

技术-安装app时,你的手机到底发生了什么?(1)
图为以压缩文件形式打开的apk安装包



为灵感而生,让创作自如。
回复

使用道具 举报

57

主题

225

帖子

1640

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1640
 楼主| 发表于 2020-5-31 12:03:56 | 显示全部楼层
下面我将为大家详细解释文件的作用(因为某些文件并不是所有app都需要,所以我们这在这选几个重要的解释)


  • Assert :assert是一种常用的调试方式。

它的作用好比一名监督员,用来监视app运行过程中执行的语句是否正确。


  • META-INF :存放签名信息,用来保证APK包的完整性和系统的安全。

安装app时系统都会先校验签名。好比某些电影中,“开门”需要虹膜识别一样


  • res :这个最通俗易懂,就是存放app的各种资源文件。




  • AndroidManifest:详细的记述了app的各种信息,例如名称、版本、权限等




  • classes.dex :是一种dex文件。

它可以从apk中单独提取出来运行。类似“预读取”。



  • resources.arsc:app的资源索引表。

用来告诉app到这一步我需要读取什么文件?在哪里读取?作用等同于“引路人”

为灵感而生,让创作自如。
回复

使用道具 举报

57

主题

225

帖子

1640

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1640
 楼主| 发表于 2020-5-31 12:06:21 | 显示全部楼层
应用安装涉及到如下几个目录:


  • system/app 系统自带的应用程序,无法删除

  • data/app 用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录

  • data/data 存放应用程序的数据

  • Data/dalvik-cache 将apk中的dex文件安装到dalvik-cache目录下


详细过程:


  • 你的app会自己走到data/app目录下,然后自己创建一个属于自己的文件夹,并检查自己的来源(这就是为什么某些系统安装app时提示“非官方来源”)
  • 此时,一个名叫DefaultContainerService的服务会启动,会将app的资源文件进行“搬家”,也就是把数据存储在手机上。
  • 在完成上一步操作后,系统会解析apk信息。会校验apk的签名,以确保app是官方的、未经恶意修改的。
  • 在完成上述所有操作后,app的工作也已经大功告成!


为灵感而生,让创作自如。
回复

使用道具 举报

57

主题

225

帖子

1640

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1640
 楼主| 发表于 2020-5-31 12:10:02 | 显示全部楼层
技术-安装app时,你的手机到底发生了什么?(2)
事实上apk的安装过程还很复杂,这里仅是简要的说明情况,若有疏漏,还请指正。

为灵感而生,让创作自如。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-9 18:45 Processed in 0.042623 second(s), 23 queries .

© 2024 RayGroup Inc Powered by Discuz! X3.4 Theme by Jvmao 豫ICP备19036546号

快速回复 返回顶部 返回列表