What's Android / Android 是什么?


——"你是干啥的?"
——"做Android应用的?"
——“Android是什么?”

经常会被问到此问题。
对于非屌丝类的回答一般告诉 Android 是 linux,是操作系统 或者说是以linux为基础的操作系统,类似苹果的IOS系统, WindowsPhone 忽悠忽悠就过去了。
但对于屌丝们,如何简洁的overview,确实会有些蛋疼,总有点森林的感觉,overview不出来 即使有一年半的Android开发经验。

那就先走出来,看看这片森林。

1.说说概念 What's Android? 

Android is a software stack for mobile devices that includes an operating system, middleware and key applications.

Android 是移动设备的软件栈,包括操作系统(Linux), 中间件以及关键应用。

Google工程师在博客中有解释到 : Android并不是传统的Linux风格的一个规范或分发版本,也不是一系列可重用的组件集成,Android是一个用于连接设备的软件块。

所以说它是linux,操作系统虽然没错,但角度片面。

2.   说说Architecture  Layer

Android系统架构为四层结构,从上到下分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层

Overview:



Details:



2.1 应用程序层

这一层主要跑着用java写的apk应用程序,包括自带的系统应用和扩展应用。具有Root权限后,这层的应用都是可以被卸载的。


2.2 应用程序框架层

这就是传说中的application framework, 支撑着整个上层应用。这也是我们从事android开发的基础,

enabling reuse and replacement of components.
该层简化了组件的重用,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。

SDK提供了完整的framework源码,想要深入的去学习android,那看framework源码是不可少的。
这样可以更好的帮助我们去理解各个android组建机制,磨刀不误砍柴功。

         a) Activity Manager(AMS: ActivityManagerService.java)

             An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack

                 管理各个应用程序生命周期以及通常的导航回退功能

                 a. 统一调度各应用程序的Activity   b. 内存管理    c. 进程管理

         b) Window Manager(WMS: WindowManagerService)

                Wms是Android 中图形用户接口的引擎,它管理着所有窗口

         c)  Content Provider(内容提供器)

Android provides a way for you to expose even your private data to other applications — with a content provider

A content provider is an optional component that exposes read/write access to your application data, subject to whatever restrictions you want to impose.

因为Android App 的sandbox 机制,Content Provider 可以进行IPC(Inter-process communication),暴露数据,让不同应用分享数据。

         d) View System(视图系统)

A rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, 

and even an embeddable web browser构建应用程序的基本组件

Activity, Window, View 都是于视图有关, 概念由大到小,Activity 可以是一个screen,Window可以是个 dialog, view可以是个button

         e) Package Manager(PMS: PackageManagerService) 
              a. 处理Intent, 加载具体的 Component(Activity, Service, Provider, Broadcast)  b. 权限检查  c. 提供安装,删除应用的接口

         f)Telephony Manager(电话管理器)

               管理所有的移动设备功能

         g)Resource Manager(资源管理器)

Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files

               提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等

         h)Location Manager(LMS: LocaltionManagerService)

              提供位置服务(GPS)

         e) Notification Manager(NMS: NotificationManagerService)

Notification Manager that enables all applications to display custom alerts in the status bar

                使得应用程序可以在状态栏中显示自定义的提示信息

2.3 系统运行库层

         a)系统库
                系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要分为如下几个:
                Surface Manager:  M anages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications. 执行多个应用时,负责管理显示,2D与3D无缝显示和组合。 

                Media Framework:  多媒体库 Support for playing variety of common media types, so that you can easily integrate audio, video and      images into your applications.

SQLite:  小型轻量级开源的关系型数据库引擎 

                OpenGL|ES:Support for high performance 2D and 3D graphics.

               FreeType:Bitmap and vector font rendering,提供点阵字与向量字的描绘与显示                   

                WebKit:浏览器引擎

                SGL:The underlying 2D graphics engine 底层的2D图形渲染引擎 

                SSL: Secure Sockets Layer (SSL) protocol and the successor Transport Layer Security (TLS) protocol. 

                           在Andorid上通信过程中实现握手(三次握手,四次挥手)

                 Libc:The NDK provides stable headers for libc (the C library) 一般游戏开发者用C/C++ 绕过Dlvik,用NDK编写,因为解释型语言快速实时这方面的优势


         b)Android运行时

               核心库:  Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。

              Dalvik虚拟机: 

a. Android is a privilege-separated operating system, in which each application runs with a distinct system identity (Linux user ID and group ID).Android 是一个权利分立的系统,每一个应用以独特UID和GID的标识符在系统中运行

b.  Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. 每一个Android应用都有自己的进程,该进程也属于某个Dalvik 虚拟机的实例。Dalvik 被设计成能让设备高效地运行多个虚拟机。

c. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.Dalvik 虚拟机执行的是.dex 结尾的 Dalvik 可执行文件格式,该格式被优化为最小内存使用。虚拟机是基于寄存器的,而不是传统的基于栈的虚拟机。并且运行那些 Java 编程语言所编译的类,这些类被内置的 dx 工具转换为.dex 格式。 

d.The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.Dalvik 虚拟机依赖 Linux 内核来提供底层的功能,比如线程和低级内存管理

2.4 Linux 内核

Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.

Android 基于 Linux 2.6 提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel 也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。


这就是我心目中的android


参考: http://developer.android.com/index.html


1、资源项目源码均已通过严格测试验证,保证能够正常运行;、 2项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行;、 2项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值