扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本文是《Android内核》开发系列文章的第十篇,上一阶段,我们重点学习和分析了Android系统的启动过程,那么,从本文开始,准备介绍一下如何从Android源码中添加、修改、删除系统级别的APP应用。作为开篇,我们先从简单的理论入手,介绍一下Android系统中的APK文件究竟是个什么东西?它是如何安装到系统中去的?
创新互联专注于扎鲁特旗企业网站建设,响应式网站设计,商城网站建设。扎鲁特旗网站建设公司,为扎鲁特旗等地区提供建站服务。全流程按需定制开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务我们在学习和了解一项新事物的时候,最快速的方法往往是与已知的事物进行比较,因此,我们首先来简单聊一聊Windows应用程序的安装过程。
1. 一般Windows应用程序的安装过程分为如下几步:
(1) 解压exe文件到系统的临时目录
这个临时目录通常是C:\Windows\Temp ,当然,并不是所有的程序的安装都需要先解压到临时目录。
(2) 拷贝核心文件到指定的程序目录
一般一个应用程序都会包含很多文件,如二进制文件、图标、静态库、动态库、配置文件、其他资源文件等等。这个过程就是把这些必须的文件拷贝到目标目录,如:D:\Software\软件名\,当然,有的软件还会把一些重要的或者公共的dll文件拷贝到系统的目录下(C:\Windows\),如一些驱动文件、系统级别的dll文件、公共共享文件等等。
(3) 写注册表
很多操作需要写系统的注册表,如安装属性的配置、注册服务程序、设置文件关联、添加右键菜单、注册dll文件、在控制面板的添加/删除程序中注册自己等等。
(4) 添加到开始菜单以及桌面快捷方式
这个不用过多解释,虽然我们可以每次都进入到程序安装目录点击exe来启动程序,但是添加程序到开始菜单以及桌面快捷方式可以更加方便地为用户提供访问程序的入口。
2. 然后,我们再来看看Android系统上APK是怎么安装的?
(1) 拷贝apk文件到指定目录
在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /data/app 目录下。
/data/app目录是用户有权限访问的目录,在安装apk的时候会自动选择该目录存放用户安装的文件,而系统出厂的apk文件则被放到了 /system 分区下,包括 /system/app,/system/vendor/app,以及 /system/priv-app 等等,该分区只有Root权限的用户才能访问,这也就是为什么在没有Root手机之前,我们无法删除系统出厂的app的原因了。
(2) 解压apk,拷贝文件,创建应用的数据目录
为了加快app的启动速度,apk在安装的时候,会首先将app的可执行文件(dex)拷贝到 /data/dalvik-cache 目录,缓存起来。
然后,在/data/data/目录下创建应用程序的数据目录(以应用的包名命名),存放应用的相关数据,如数据库、xml文件、cache、二进制的so动态库等等。
(3) 解析apk的AndroidManifinest.xml文件
Android系统中,也有一个类似注册表的东西,用来记录当前所有安装的应用的基本信息,每次系统安装或者卸载了任何apk文件,都会更新这个文件。这个文件位于如下目录:
/data/system/packages.xml
系统在安装apk的过程中,会解析apk的AndroidManifinest.xml文件,提取出这个apk的重要信息写入到packages.xml文件中,这些信息包括:权限、应用包名、APK的安装位置、版本、userID等等。
由此,我们就知道了为啥一些应用市场和软件管理类的app能够很清楚地知道当前手机所安装的所有的app,以及这些app的详细信息了。
(4) 其他操作
与windows应用安装类似,部分apk的安装也会向Launcher应用申请添加创建快捷方式。
3. 小结
关于APK的安装过程就简单介绍到这里了,有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流