Android程序包

2020-02-05  本文已影响0人  9283856ddec1

Android提供的应用模型与Linux脚本下的普通命令行环境以及图形用户界面启动的应用程序有很大的不同。应用程序不再是一个具有主入口的可执行文件,而是包含了构成应用程序的所有元素的容器,包括程序代码、图形资源、系统声明以及其它数据。按照约定,Android应用程序是以apk为拓展名的文件,这个文件实际上是一个普通的zip压缩文件,包含了与应用程序相关的所有内容。
1> AndroidManifest.xml清单,描述应用程序包含的组件、权限、包名称等。
2> 应用程序的资源,如字符串、布局相关的xml数据、图形位图等等;
3> 运行代码,如Dalvik字节码,本地库代码;
4> 签名信息,安全的标识开发者;

当用户启动的时候,Android应用系统没有一个简单地执行主入口,相反在清单的<application>标签下会发布应用程序可以完成的各种事件的相应入口。这些入口被分为四种不同的类型:活动、服务、接收器和内容提供器。如此这样做有两大好处:
1)应用程序在清单中静态的声明它们的入口,因此在安装时不需要执行任何程序代码,通过查看清单即可确定应用程序的顶层关系,无须保留关于应用程序的功能信息的独立数据库。这种去中心化的方法可以避免Windows的中心化注册表所导致的问题,使得系统更加健壮。
2)将应用程序分解为更细粒度的组件有助于实现支持应用程序间互操作和协作的设计目标。应用程序可以按照片段的形式发布特定的功能,其他应用程序可以直接或间接的利用这些功能。

包管理器(package manager)是Android中用于跟踪所有应用程序包的部件,它解析每个应用程序的清单,收集和索引清单中的信息。利用这些信息,可以方便用户查询当前安装的应用程序,并检索与这些应用相关的信息。同时负责程序的安装(为应用程序创建存储空间并确保apk的完整性),以及程序的卸载(清理之前安装的应用程序相关的所有内容)。

活动管理器(activity manager)决定应用程序应该何时、何处、如何运行,负责运行四种类型的组件。

参考资料:

[1] 现代操作系统

上一篇下一篇

猜你喜欢

热点阅读