安卓工程的启动过程

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" />:配置了这个属性就可以显示在列表中

点击图标,应用就被开启起来了:

时间: 2024-10-18 11:39:37

安卓工程的启动过程的相关文章

安卓 应用app启动过程

韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha [email protected] 从用户点击 Launcher 上的 App 图标,到显示出 App 界面时主要发生的事情.知晓以下知识点. Android Process 的创建过程,以及 Activity Manager Service 是如何参与这个步骤,以及在其中扮演的角色? Android 中所谓的主线程是怎么回事?主线程是谁?又如何被创建的. Android 系统是如何节省进程创建开销的? 在 Android 中

安卓彩38平台出租开发学习之SystemServer启动过程

这两天彩38平台出租haozbbs.comQ1446595067 有一个需求得联调,在等待服务端同事完事,等待过程中,阅读了一下Android8.0里SystemServer的启动过程,除了设置时区语言这些,其实主要就是初始化了系统上下文以及一些服务的启动. main()方法 SystemServer是一个进程,由zygote进程fork出来,所以它的入口方法就是main方法,代码如下 public static void main(String[] args) { new SystemServ

一步一步分析新建App启动过程

IOS温故而知新(一)  一步一步分析新建App启动过程 笔者接触IOS大概半年的时间,可以说能够开发App,但是又有很多不足的地方,因此打算写一些技术文章,能够达到温故而知新的效果,难免会有错误或者遗漏,也希望各位看官不吝指教.另外宣传一下刚建立的群“IOS菜鸟到高手之路”,312747764,欢迎希望交流分享的人加入. 1.IOS系统的简单说明IOS与Mac OS X以及安卓一样都属于类UINX系统,然而熟悉类UNIX系统的人可能会失望的是,个人开发的App会进入类似chroot的状态,被操

Android应用程序的Activity启动过程简要介绍和学习计划

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益 于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Activity和Service,以及提供Binder机制帮助它们相互间进行通信.在前 面的文章Android进程间通信(IPC)机制B

Android应用程序启动过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6689748 前文简要介绍了Android应用程序的Activity的启动过程.在Android系统中,应用程序是由Activity组成的,因此,应用程 序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程. 在上一篇文章Android应用程序的Activit

Android应用程序组件Content Provider的启动过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6963418 通过前面的学习,我们知道在Android系统中,Content Provider可以为不同的应用程序访问相同的数据提供统一的入口.Content Provider一般是运行在独立的进程中的,每一个Content Provider在系统中只有一个实例存在,其它应用程序首先要找到这个实例,然后才能访问它的数据.那么,系统中的Conten

Samza在YARN上的启动过程 =》 之一

运行脚本,提交job 往YARN提交Samza job要使用run-job.sh这个脚本. samza-example/target/bin/run-job.sh  --config-factory=samza.config.factories.PropertiesConfigFactory  --config-path=file://$PWD/config/hello-world.properties 这脚本的内容是什么呢? exec $(dirname $0)/run-class.sh or

iOS复习笔记16:应用启动过程和工程结构

一 新建项目 打开Xcode->new->Project->iOS->Single View Application->下一步->输入工程名->下一步->选择路径->create 二 启动过程 1 载入程序到内存 2 在main函数中创建UIApplication 3 创建AppDelegate 4 开始主循环,监听事件 5 创建UIWindow,设置活动窗口 7 加载Info.plist文件,读取主storyboard文件 8 加载storyboar

005-程序启动过程

掌握 • 1.项目中常见文件(Info.plist和pch文件的作用) • 2.UIApplication • 3.AppDelegate的代理方法 • 4.iOS程序的完整启动过程(UIApplication.AppDelegate.UIWindow.UIViewController的关系) • 1.项目中常见文件(Info.plist和pch文件的作用) Info.plist 1>Info.plist常见的设置 •建立一个工程后,会在Supporting files文件夹下看到一个“工程名-