当前位置: 首页 > news >正文

【Android Dev Guide - 01】 - What Is Android?什么是Android?


Android是一个移动设备的软件集,他包括一个操作系统、中间件,和重要的应用程序。Android SDK提供了使用Java编程语言在Android平台上开发的必要的工具和APIs。

功能特点:

  • 应用程序框架:支持组件的重用和替换。
  • Dalvik虚拟机:专门为移动设备优化的一个虚拟机。
  • 集成的浏览器:基于开源浏览器WebKit的引擎。
  • 优化的图形处理:采用定制的2D图形库,3D是基于OpenGL ES1.0规范(可选的硬件加速)。
  • SQLite:用来存储结构化的数据。
  • 媒体支持:支持常见的音频视频和静态图像格式,如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF。
  • GSM技术:依赖于硬件。
  • 蓝牙、EDGE网络、3G、WIFI:依赖于硬件。
  • 拍照、导航、指南针、加速计:依赖于硬件。
  • 丰富的开发环境:包括一个虚拟器、调试工具、内存和性能分析、Eclipse插件。

Android架构:

下面那张图表显示了Android操作系统的主要部件,每一部分将会详细讲解。

应用程序:

Android 将会携带有一些核心的应用,比如邮件客户端、SMS程序、日历、地图、浏览器、联系人等等。所有的应用程序都用Java语言开发。


应用框架:

通过提供一个开源的平台,Android可以让开发者自由的开发丰富、创新的应用程序。开发者可以免费利用设备的硬件,访问本地信息、启动后台服务、设置闹铃、给状态栏增加提醒功能,等等非常多的应用。

开发人员通过核心应用程序,可以完全访问同一框架的APIs。应用框架是设计用来提高组件的可重用。任何程序都可以公布他的功能让其他程序来调用(在框架许可的前提下)。相同的机制允许用户替换掉某些功能。

和所有程序相关的是一些服务和系统,包括:

  • 一些丰富的可扩展视图:可以用来构造应用程序,包括列表、表格、输入框、按钮、可以写内置的浏览器。
  • 内容提供:可以让程序访问其他程序的数据,例如联系人列表,或者共享自己的数据。
  • 资源管理器:提供访问非代码的资源的方法,例如本地化的一些字符串、图像、布局文件。
  • 一个提示管理器:可以让程序在状态栏显示自定义的提示信息。
  • 一个Activity管理器:管理activity的生命周期并且提供一个公共的导航功能。
    更多详细信息可以通过一个例子来学习:参考 Noteoad Tutorial。

Libraries:

通过提供一个开发的平台,Android包含了一些系统各个部分使用到的C/C++库,通过Android应用程序程序框架,这些功能对于开发者来说是公开的,部分核心库如下:

  • System C Library :一个继承自BSD的标准C系统库,专门为了嵌入式Linux设备。
  • MediaLibraries :基于 PacketVideo's OpenCORE库,支持播放和回放一些主流的音频视频格式,像静态图片文件,包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG格式。
  • Surface Manager:管理显示子系统,在多个应用程序里无缝综合2D和3D图层。
  • LibWebCore:一个流行的web浏览器引擎,供Android浏览器和内置的浏览view使用。
  • SGL:一个底层的2D图像引擎。
  • 3D Libraries:基于OpenGL ES 1.0 的3D图像引擎。包括硬件加速和优化过的3D软件加速。
  • FreeType:位图和矢量字体的渲染(rendering)。
  • SQLite:一个强大的轻量级的数据库引擎对所有程序提供使用。

Android 运行时库:

Android包含了Java语言的大部分的核心库。

每一个Android应用程序运行在自己的线程里,有自己的dalvik虚拟机实例,Dalvik虚拟机被用来支持在一个移动设备上支持多个虚拟机。Dalvik虚拟机执行文件(.dex)被优化的内存占用(memory footprint)很小。VM是基于寄存器(register-based),并且通过Java语言编译器运行由class文件转换的.dex文件,通过内置的dx工具。

Dalvik虚拟机依赖Linux核心,来管理线程和底层的内存管理。


Linux kernel:

Android 依赖Linux2.6内核作为核心系统服务,像安全、内存管理、进程管理、网络堆(network stack)、驱动模型(driver model)。Kernel扮演者一个软硬件之间的抽象层的角色。


建议初学者结合中文翻译看英文原版,我们以后还是逃避不了要读英文原著,现在我也硬着头皮把原版的看一遍,Bless

相关文章:

  • CodeVs——T 3304 水果姐逛水果街Ⅰ
  • 【Android Dev Guide - 02】 - Application Fundamentals 应用基础
  • 【代码笔记】iOS-自定义选择框(高底强弱)
  • 惨痛教训
  • python(二十八)
  • 页面查找技巧
  • SqlServer索引的原理与应用
  • Spring+SpringMVC+mybatis整合以及注解的使用(三)
  • vs2010 javascript代码折叠扩展插件
  • css定位
  • 最简单的手工写增,删,改,查的代码
  • Lucene 4.0 TieredMergePolicy
  • 关于表单修改
  • Ubuntu安装源配置文件/etc/apt/sources.list第X行有错误
  • 原型和原型链
  • $translatePartialLoader加载失败及解决方式
  • Cookie 在前端中的实践
  • ECMAScript6(0):ES6简明参考手册
  • ECS应用管理最佳实践
  • extract-text-webpack-plugin用法
  • Java 多线程编程之:notify 和 wait 用法
  • mysql常用命令汇总
  • oldjun 检测网站的经验
  • Python3爬取英雄联盟英雄皮肤大图
  • tab.js分享及浏览器兼容性问题汇总
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里云购买磁盘后挂载
  • 从0实现一个tiny react(三)生命周期
  • 技术胖1-4季视频复习— (看视频笔记)
  • 将 Measurements 和 Units 应用到物理学
  • 讲清楚之javascript作用域
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 排序(1):冒泡排序
  • 巧用 TypeScript (一)
  • 算法-插入排序
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 微信小程序设置上一页数据
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​第20课 在Android Native开发中加入新的C++类
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $ git push -u origin master 推送到远程库出错
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (3)STL算法之搜索
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C语言)共用体union的用法举例
  • (day 12)JavaScript学习笔记(数组3)
  • (k8s中)docker netty OOM问题记录
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (接口自动化)Python3操作MySQL数据库
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (转)Sublime Text3配置Lua运行环境