热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

AndroidApp的运行环境及Android系统架构概览

这篇文章主要介绍了AndroidApp的运行环境及Android系统架构概览,并对应用程序进程间隔离机制等知识点作了介绍,需要的朋友可以参考下

Android基于linux内核,面向移动终端的操作系统。主要包括以下几个方面:

Application Framework:
这一层为应用开发者提供了丰富的应用编程接口,如 Activity Manager,Content Provider,Notification Manager,以及各种窗口 Widget 资源等。所有的APP都是运行在这一层之上。
Dalvik 虚拟机:
Dalvik VM采用寄存器架构,而不是JVM的栈架构,更适于移动设备。java源代码经过编译成为.class字节码文件,然后由谷歌提供的 dx工具将其转化为Dalvik可识别的.dex文件。
Linux kernel:
每个APP应用程序由一个独立的Dalvik VM来解释执行,而一个Dalvik VM实例对应一个linux内核进程。
所以说,每个APP之间完全隔离,资源独立。使得每个APP更加安全,但也不利于进程间通信

201638163718507.png (572×114)

Android官方介绍

201638163824918.png (486×740)

Android 系统架构

Application framework
大部分开发者十分关心这一层。你必须要了解开发者会接触到的所有API接口,大部分接口都与硬件抽象层(HAL层)接口一一对应,而且它们会告诉你如何实现你自己的驱动。

Binder IPC
Binder进程间通信机制帮助Application framework层能够跨进程并且调用系统级服务。从根本上讲,它帮助高级别的framework的API接口与Android系统服务进行交互。

系统服务
大部分Application framework api具备的功能都要依靠与某种系统服务进行通信从而操作底层硬件。系统服务根据不同的功能分成了若干模块组件,例如Window Manager, Search Service, or Notification Manager。系统服务主要包含两大块:系统和媒体。前者对应的服务包含如Window Manager 或 Notification Manager,后者对应的服务都与播放或记录媒体有关。
硬件抽象层Hardware abstraction layer (HAL)
硬件抽象层可以作为一个标准接口让Android系统调用设备驱动层而不用管这些驱动和硬件时如何实现的。


Linux Kernel
大多数情况下,你自己开发设备驱动和开发linux设备驱动时一样的。Android挑选了一个特定的linux内核版本,这个版本包含了如wakelocks(一个内存管理系统),Binder IPC驱动和其他一些特征,这些特征对于像Android一样的移动嵌入式平台都非常重要。你也可以根据自己的需求选择合适的kernel版本,只要它能支持一些必要的属性如Binder IPC驱动等。但是,我们仍然推荐你使用最新版本的Android内核。

相关知识点:
应用程序进程间隔离机制:
Android系统包括四层架构:从底层往上依次是Linux kernel层、C/C++函数库与Android运行时环境(Dalvik VM等)层、Android Framwork框架层、应用程序层。其中,Android运行时环境层类似Java里的JRE层,主要用来运行java程序,不过此处的虚拟机是Dalvik虚拟机。每一个Android应用程序都运行在单独的Davlik进程里,Dalvik虚拟机针对同时高效运行多个虚拟机而优化,在这一层实现了应用程序的进程间隔离。

Dalvik虚拟机与JVM区别:

JVM直接从.class或Jar包中加载字节码解释运行,Dalvik通过DX工具将.class文件编译为.dex文件(Dalvik Executable)来运行。
JVM采用栈结构,而Dalvik采用寄存器结构,更适于移动设备。
为何Android要采用Dalvik虚拟机而不是JVM呢?

大多数虚拟机(包括JVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器的,性能更好,不过也导致硬件通用性略差;
运行专有.dex文件。DX工具对.class文件编译时,去除里面的冗余信息,并把所有.class文件整合到一个文件中,提高了性能。同时DX工具还会对.dex文件进行性能优化。


推荐阅读
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
author-avatar
手机用户2502898443
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有