- 浏览: 126936 次
文章分类
- 全部博客 (121)
- confluence (1)
- android (77)
- PHP (6)
- java (21)
- mysql (3)
- dos (1)
- 传感器 (2)
- 获取电话薄信息 (3)
- 正则表达式 (1)
- 网络 (1)
- 蓝牙 (1)
- 图片 (4)
- intent (3)
- 注意 (1)
- eclipce (1)
- plugins (1)
- dialog (4)
- zip (1)
- sd卡 (1)
- ui (1)
- Camera (1)
- draw (1)
- activity (2)
- launchMode (1)
- 安全 (1)
- Button (1)
- ImageTextButton (1)
- paint (1)
- network (1)
- popupwindow (1)
- jquery (1)
- ant (1)
- notifaction (1)
- Rating (1)
- ListView (3)
- editText (1)
- doc (1)
- jdk (1)
- animation (1)
- sign (1)
- 签名 (1)
- 广播 (1)
- textview (4)
- 删除线 (1)
- 城市列表 (1)
- IDE (1)
- Eclipse (1)
- pixels (2)
- px (1)
- 静默安装 (1)
- Android截屏 (1)
- eclipcetheme (1)
- scroll (1)
- ActivityGroup (1)
- sqlite (1)
- webview (3)
- PullToRefreshListView (1)
- cache (1)
- java引用 (1)
- 命名空间 (1)
- httpClient (1)
- 开源控件 (0)
- sms (1)
- 文字水平滚动 (1)
- 正则 (1)
- 理论知识 (1)
- 属性 (0)
- openfire (1)
- 面试 (1)
- 继承的优缺点 (1)
- PowerDesigner (1)
- 数字格式化 (1)
- andriod (1)
- webservice (1)
- 记录 (0)
- share (0)
- 开源 (1)
最新评论
android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。蓝色的代表java程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C++语言编写的程序库,红色的代码内核(linux内核+drvier)
1.应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
2.应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;
|
有关更多的细节和怎样从头写一个应用程序,请参考 如何编写一个 Android 应用程序.
3.系统运行库
1)程序库
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
|
2)Android 运行库
Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
4.Linux 内核
Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。其外还对其做了部分修改,主要涉及两部分修改:
1).Binder (IPC):提供有效的进程间通信,虽然linux内核本身已经提供了这些功能,但Android系统很多服务都需要用到该功能,为了某种原因其实现了自己的一套。
2).电源管理:主要是为了省电,毕竟是手持设备嘛,低耗电才是我们的追求。
最后在谈谈Android所采用的语言,其应用开发采用java语言,我们所说的java一般包含三个部分:
1)java语言:即其语法,其写代码的程式
2).java虚拟机:为了实现一次编译到处可以运行的原则,java在编译连接以后并没有产生目标机器语言,而是采用了Java bytecode这种Java共用指令,这时就需要一个虚拟机来执行改指令。
3).库:跟我们常用的C语言一样提供一些常用的库
后两者结合就是Java Runtime Environment。
Android使用的虚拟机叫 Dalvik,最初并是不为Java设计的,它并不能运行Java bytecode指令,而是运行叫Dalvik executable,简称dx。为止Android提供了dx工具,用来将Java bytecode转换为dx。
Android源代码结构:
Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:
. |
bionic目录展开一个级别的目录如下所示:
bionic/ |
bootloader目录展开的两个级别目录:
bootloader/
|
build目录展开的一个级别的目录如下所示:
|
其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。
envsetup.sh是一个在使用仿真器运行的时候,用于设置环境的脚本。
dalvik目录用于提供Android JAVA应用程序运行的基础————JAVA虚拟机。
development目录展开的一个级别的目录如下所示:
|
在emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。
samples中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。
external目录展开的一个级别的目录如下所示:
|
在external中,每个目录表示Android目标系统中的一个模块,可能有一个或者若干个库构成。其中:
opencore为PV(PacketVideo),它是Android多媒体框架的核心。
webkit是Android网络浏览器的核心。
sqlite是Android数据库系统的核心。
openssl是Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。
frameworks目录展开的一个级别的目录如下所示:
|
frameworks是Android应用程序的框架。
hardware是一些与硬件相关的库
kernel是Linux2.6的源代码
packages目录展开的两个级别的目录如下所示:
packages/
|-- apps
| |-- AlarmClock
| |-- Browser
| |-- Calculator
| |-- Calendar
| |-- Camera
| |-- Contacts
| |-- Email
| |-- GoogleSearch
| |-- HTMLViewer
| |-- IM
| |-- Launcher
| |-- Mms
| |-- Music
| |-- PackageInstaller
| |-- Phone
| |-- Settings
| |-- SoundRecorder
| |-- Stk
| |-- Sync
| |-- Updater
| `-- VoiceDialer
`-- providers
|-- CalendarProvider
|-- ContactsProvider
|-- DownloadProvider
|-- DrmProvider
|-- GoogleContactsProvider
|-- GoogleSubscribedFeedsProvider
|-- ImProvider
|-- MediaProvider
`-- TelephonyProvider
|
packages中包含两个目录,其中apps中是Android中的各种应用程序,providers是一些内容提供者(在Android中的一个数据源)。
packages中两个目录的内容大都是使用JAVA编写的程序,各个文件夹的层次结构是类似的。
prebuilt目录展开的一个级别的目录如下所示:
|
system目录展开的两个级别的目录如下所示:
system/ |-- bluetooth | |-- bluedroid | `-- brfpatch |-- core | |-- Android.mk | |-- README | |-- adb | |-- cpio | |-- debuggerd | |-- fastboot | |-- include (各个库接口的头文件) | |-- init | |-- libctest | |-- libcutils | |-- liblog | |-- libmincrypt | |-- libnetutils | |-- libpixelflinger | |-- libzipfile | |-- logcat | |-- logwrapper | |-- mkbootimg | |-- mountd | |-- netcfg | |-- rootdir | |-- sh | `-- toolbox |-- extras | |-- Android.mk | |-- latencytop | |-- libpagemap | |-- librank | |-- procmem | |-- procrank | |-- showmap | |-- showslab | |-- sound | |-- su | |-- tests | `-- timeinfo `-- wlan `-- ti |
|
-
发表评论
-
使用Android进行分享
2014-04-21 14:22 01.简单的分享文本 Intent sendIntent = ... -
android:descendantFocusability用法简析
2013-11-25 10:11 0开发中很常见的一个问题,项目中的listview不 ... -
Android 的应用程序的优先级和进程状态
2013-11-04 12:29 2234回收资源的时候,进 ... -
去掉listview顶部和底部阴影(高光部分)
2013-11-13 11:04 693/** * 去掉listview顶部和底部阴影(高光 ... -
Android的5个进程等级 .
2013-10-22 17:00 685来自:http://blog.csdn.net/ ... -
使用TextView 使用文字水平滚动
2013-09-26 15:12 642/** * * <b>功能名:< ... -
SMS研究(转)记录地址
2013-09-22 15:20 717拦截短信 作者:bingzhi更新于 07月26日访问(70 ... -
ListView 隐藏滚动条及基本属性
2013-09-09 22:25 1264由于这两天在做listView的东西,所以整理出来一些我个 ... -
android 编辑框过滤文本
2013-09-05 13:48 551public class EditOnKeyListener ... -
HttpClient The target server failed to respond
2013-09-04 17:50 14835关于HttpClient 出现 The target ser ... -
android webview的三种加载方式
2013-08-28 17:20 563//打开本包内asset目录下的index.html文件 ... -
TextView的一些高级显示
2013-08-20 10:41 4311. 自定义字体可 ... -
命名空间
2013-08-19 18:18 7531.需要在AndroidManifest.xml添加自己的 ... -
java 4种引用
2013-08-16 09:20 7101.强引用本章前文介绍的引用实际上都是强引用,这是使用最普遍 ... -
清除 webView 存在的缓存!
2013-08-15 17:27 777CookieSyncManager.createInstan ... -
使用 PullToRefreshListView 分页问题.
2013-08-15 12:05 2280使用PullToRefreshListView分页刷新问题, ... -
清除webview产生的缓存
2013-08-15 10:03 1542/** * 删除应用缓存(/data/data/包名/ ... -
读取assets或者raw目录下的sqlite数据库
2013-08-14 17:46 986public class DbManager { pr ... -
使用 ActivityGroup 加载多个Activity
2013-08-14 15:13 6911.mTabClassArray 数组中存放的是Activi ... -
监听 ScrollView 滑动到底部
2013-08-13 15:52 9421.给ScrollView添加 OnTouchListene ...
相关推荐
02.Android体系结构.ppt
### Android 体系结构详解 #### 一、概述 Android 是一个基于 Linux 的开源移动设备操作系统,它由 Google 维护并主导开发。Android 不仅是一个操作系统(Operating System, OS),还包括中间件(Middleware)和...
Android体系结构是一个多层次的、模块化的架构,主要由操作系统(Operating System)、中间件(Middleware)和应用程序(Application)三大部分组成。以下是对这些层次的详细解释: 一、应用程序(Application) ...
【智能家居系统 Android体系结构】 在当今的科技时代,智能家居系统已经深入到我们的日常生活中,而Android作为全球最广泛使用的移动操作系统,其体系结构对于开发和理解智能家居设备的控制与交互至关重要。本教案...
### Android 体系结构详解 #### 一、概述 Android 作为一种广泛应用的移动设备操作系统平台,其内部架构设计决定了它的灵活性和高效性。Android 的体系结构可以分为四个主要层次:操作系统层(OS)、各种库...
Android体系结构,Android的软件层次结构包括一个操作系统,中间件,应用程序。其软件层次结构自上而下可分为: * 应用程序 * 应用程序框架 * 各种库和Android的运行时环境 * 操作系统层 应用程序:以java语言...
第1章android体系结构及开发环境.pptx
Android体系结构组件样本使用体系结构组件的样本集合:感知房间生命周期的组件ViewModels LiveData样本构架组件和这些样本Android构架组件样本使用体系结构组件的样本集合:机房生命周期感知组件ViewModels LiveData...
一张图教你理解安卓的整体系统架构设计,有助于高级开发进阶:应用层,Framework层,Library+RunTime层,硬件中间层,Kernel层
Android 系统结构及开发环境 Android 系统结构及开发环境是指 Android 操作系统的架构和开发环境,它是基于 Linux 内核的开源手机操作系统。 Android 系统结构主要由 Linux 内核、系统库、应用程序框架和应用程序...
Android 技术体系结构 Android 技术体系结构是 Android 操作系统的核心架构,它由四个主要部分组成:Linux Kernel、Android Runtime、Libraries 和 Applications。 一、Linux Kernel Linux Kernel 是 Android ...
2. Android体系结构: Android的体系结构主要包括Linux内核、硬件抽象层(HAL)、系统运行库层、应用程序框架层以及应用程序层。Linux内核为Android提供了稳定的基础,HAL使得硬件接口标准化,系统运行库层包含了一...
This is a sample app demonstrating Youtube UX/UI animation using ConstraintLayout.It implements the Keyframe Animation feature in ConstrainLayout.This sample app is built on Android Architecture ...
"RedditG" 是一个专为Android平台设计的应用程序,它采用了现代的MVVM(Model-View-ViewModel)架构模式,并利用了Android体系结构组件来构建。这个项目的目标是展示如何将这些先进的开发技术和API整合到实际应用中...
:bar_chart:建立了一个最小费用跟踪器应用程序,以演示如何将现代android体系结构组件与MVVM架构一起使用Expenso:bar_chart:一个简单的花费跟踪器应用程序:mobile_phone:被构建为以演示现代android体系结构组件在...
具有Android体系结构组件的MVP 具有MVP模式的Android项目,可适应Google IO 2017中引入的新Android体系结构组件。 它为支持生命周期的Presenter提供了LifeCycle和由Room(SQLite上的抽象层)处理的本地数据源的支持...
智能家居系统应用
新的Android体系结构组件生命周期许可的RxComponentLifecycle Rx绑定版权所有2017 Florent37,Inc.受Apache许可,版本2.0(“许可”)许可; 您不得使用此文件,除非是新的Android体系结构组件生命周期许可证的...