【安卓工程的启动过程】一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述安卓工程的启动过程相关的知识,希望能为你提供帮助。
1、Eclipse将.java源文件编译成.class
2、使用dx工具将所有.class文件转换为.dex文件
3、再将.dex文件和所有资源打包成.apk文件
4、将.apk文件安装到虚拟机完成程序安装
5、启动程序 – 开启进程 – 开启主线程
6、创建Activity对象 – 执行OnCreate()方法
7、按照main.xml文件初始化界面
应用程序启动:
一、解析清单文件并加载
应用程序的启动需要从PackageManagerService说起,由于应用程序是有PackageManager管理的,可以简单认为PackageManagerService是为应用程序启动的做了一些准备工作,才能将应用程序开启起来。
1、PackageManagerService(资料)读取所有应用程序的Mainfest信息,并且建立信息库存储在系统级共享内存中
1)解析:
PackageManagerService在启动后,会进行解析的工作,它会重点监控一些文件:system/framework、system/app、data/app、data/app_private;一旦将数据存入到这些文件中,就会去解析
2)权限分配:
PackageManagerService会建立底层userids和groupids同上层permissions之间的映射,就会给一些底层用户分配权限,
进行权限的映射,UID和GroupID,都会分配相应的权限
3)保存数据:
PackageManagerService还有重要的一个操作就是将解析的每个apk的信息保存到packages.xml和packages.list文件里,
在packages.list记录了如下数据:pkgName,userId,debugFlag,dataPath(包的数据路径)
【下次再开机的时候,不会再扫描每个apk了,只需要读取packages.xml和packages.list文件即可】
除了这两个主要的工作外,还会进行一些其他的操作,如检测文件等
2、Launcher就将PackageManagerService已经解析并处理好的数据都加载到内存中,从内存中就能获取到相应的数据,
并展示到手机上【之所以可以展示在手机桌面上,就是因为在清单文件中配置了如下的内容:】
<
action android:name="android.intent.action.MAIN" />
:应用程序的入口
<
category android:name="android.intent.category.LAUNCHER" />
:配置了这个属性就可以显示在列表中
点击图标,应用就被开启起来了:
推荐阅读
- Android底层有一定的认识,研究过相关的Android源码
- Android性能优化的一些方案
- Android开发菜单以及子菜单
- 最新人工智能和机器学习的5大趋势
- 任务管理软件合集(16款最佳任务管理软件(免费和付费))
- 网络安全术语解释(每个人都应该知道的25个网络安全术语)
- 数据库锁表如何解锁(LOCK TABLES 和 UNLOCK TABLES 语句)
- 原型设计工具合集(UI/UX 设计师的14个最佳原型工具)
- 如何通过5个步骤为你的下一个项目编写产品需求文档(PRD)