Android核心分析
浅谈Android(安卓)

浅谈Android--嵌入式操作系统Android(读音:[ˈændrɔid],中文俗称安卓)是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google成立的Open Handset Alliance (OHA,开放手持设备联盟)持续领导与开发中。
--题记.维基百科说起嵌入式系统,曾经在保罗大叔的著作《黑客与画家》里看到多次,然后不明所以,就去查了嵌入式系统。
如果说嵌入式系统给我的第一印象是硬件,那么是我还不知道嵌入式在我生活里已经出现了很多年了。
大到冰箱,自动存款机(ATM),小到电子手表,遥控器。
在维基百科解答后,我对嵌入式直观的理解,是一种特定的植入硬件并极具针对性的计算机系统。
后来慢慢了解嵌入式的软件方面,就知道了嵌入式操作系统,而其中的佼佼者,就是如今已经超越ios,占据半壁江山的Android。
之所以会说Android,原因有二:一,因为Android如今炙手可热,在新一季度的日本手机软件营销额上,以Java等语言为Android系统开发的Apps,疯狂揽金,李开复断言在两年内,中国内地手机游戏软件市场,将会百花齐放;二,我虽并非研究Java也非致力于Android系统,但是Android系统的内核,却是我所熟悉的Linux内核。
而我将自己的开发平台转移到Linux系统,并以Python,Perl以及Lisp语言作为未来的生存工具,所以,就让我们谈一谈Android。
题记中套用维基百科对于Android的介绍,主要的目的,就是为了澄清一件事实“认知”——Android并没有真正的中文名。
Google并没有为Android命名,只有为其版本取名,且翻译成中文:4.2.x Jelly Bean 果冻豆,4.0.x Ice Cream Sandwich 冰激凌三明治,3.x.x HoneyComb 蜂巢,2.3.x Ginger Bread 姜饼。
而“安卓”一词,也是我们自己对其中文简称,就像Facebook并没有为其在中国大陆市场取名一样。
Android核心板方案介绍_M771

深圳市康凯斯信息技术有限公司文档编号: Concox_TS_M771_20121116Android核心板方案书V0.1编写:李通审核:胡立忠批准:日期:2012-11-12 日期:2012-11-16 日期:*变化状态:C――创建,A ——增加,M ——修改,D ——删除文件名称 需求分析 Concox_TS_M771 页 码 共7页 文件类别 需求分析 密 级 发行日期 2012-11-16修订次1文件状态 [√ ] 草稿 [ ] 正式发布 [ ] 正在修改 序 号版 次变化状态修 订 履 历制定者 / 修改者完成日期1 V 0.1 C 初稿 李通 2012-11-14姓 名角 色 签 署 撰写日期制 订审 核 核 准保 管 人存放位置目录1说明 (1)1.1背景 (2)2产品设计 (2)2.1实物外观 (2)2.1.1结构设计 (3)2.2Android 核心板设计规格 (3)2.2.1显示屏、视频输出 (3)2.2.2电容式触摸屏 (3)2.2.3基带芯片组 (4)2.24 存储器 (4)2.2.5 射频芯片组 (4)2.2.64-in-1 芯片组 (4)3.2.7UART通信 (4)2.2.8SPI 通信 (4)2.2.9 I2C 通信 (5)2.2.10 I2S通信 (5)2.2.11USB 通信 (5)2.2.12 按键支持 (5)2.2.13 可扩展RJ45网口 (5)2.2.14摄像头 (5)2.2.15 音频输入 (6)2.2.16音频输出 (5)2.2.17 SIM接口 (6)2.2.18GPIO口 (5)2.2.19PWM口 (6)2.2.20 外部存储 (6)2.2.21 NFC (6)2.2.22 供电 (7)2.3 芯片引脚定义 (7)2.4 软、硬件设计注意事项 (16)2.5 常见外设接口方案 (17)2.5.1 USB 接口扩展(1- 4路,1-7路) (17)2.5.2 USB 接口扩展LAN RJ45接口 (18)2.5.3 USB 接口扩展UART接口(多路) (18)2.5.4 USB 接口扩展SATA接口,支持硬盘 (20)3 参考设计资料 (21)4通信协议 (21)1 说明本方案书中所涉及的信息不能泄露到双方以外的任何机构,也不允许为除评估该建议书以外的其他任何目的而进行全部或部分复制、使用或透露。
Android系统架构及内核简介

Android系统架构及内核简介(来源于ThinkPHP)Android是Google公司开发的基于Linux平台的开源⼿机操作系统,它包括操作系统、中间件、⽤户界⾯和应⽤程序,⽽且不存在任何以往阻碍移动产业创新的专利权障碍,并由Google公司于2007年11⽉5⽇正式发布。
同时,Google公司组建了⼀个开放⼿机联盟,这个联盟由中国移动、摩托罗拉、⾼通、宏达电和T-Mobile等在内的全球30多家技术和⽆线应⽤的领军企业组成,Google通过与运营商、设备制造商、开发商和其他有关各⽅结成深层次的合作伙伴关系,希望借助建⽴标准化、开放式的移动电话软件平台,在移动产业内形成⼀个开放式的⽣态系统;可预见地,⽣产和使⽤基于 Android系统的嵌⼊式⼿持移动设备将是未来的发展趋势,对相应软件的需求量也将⽇趋增长,因此对Android系统内部作⼀个完整和深⼊的分析,对基于Android平台的软件移植和开发是很有益处的。
1 Android系统平台架构对操作系统⽽⾔,必须做到设计合理、层次分明,同时还需考虑整个系统的结构要聚耦适当,Android系统是基于linux内核的,因此还必须具备开源的特性,以符合开源⼈员共同⼯作。
从系统的组成要件来讲,Android平台架构包括硬件设备、板级⽀持包、驱动程序、操作系统内核、程序运⾏库,运⾏框架,应⽤程序等,它们的有机结合和协同⼯作共同完成了整个系统的正常运⾏和对事务的处理。
依据Google开源资料可知,整个系统由Linux内核、程序库、Android Runtime、应⽤程序框架和应⽤程序等5部分组成,,系统架构如图1所⽰。
参照图1,由上⽽下对组成系统各部分的主要组件作以下描述。
1.1 Linux内核Android基于Linux 2.6内核,但并⾮完全照搬内核,⽽是对内核作了部分增删和修改,在Linux 2.6内核的基础上,Android核⼼系统实现了安全性、内存管理、进程管理、⽹络协议栈和驱动模型等功能,Linux内核也同时作为硬件和软件栈之间的抽象层。
安卓系统层次架构

安卓系统层次架构1.安卓的系统架构2.分析第一层:Linux操作系统和驱动(Linux kernel):由C语言实现。
Android核心系统服务依赖于Linux2.6内核,包括:安全性、内存管理、进程管理、网络协议、驱动模型。
Linux内核也作为硬件和软件栈之间的抽象层。
除了标准的Linux内核外,Android还增加了内核的驱动程序:Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。
第二层:本地框架和Java运行环境(LIBRARIES和ANDROID RUNTIME)本地框架是有C/C++实现。
包含C/C++库,被Android系统中不同组件使用,它们通过Android应用程序框架为开发者进行服务。
系统C库:(libc)从BSD继承过来的标准的C系统函数库,专门是为基于嵌入式Linux的设备定制的库。
多媒体库:基于PackerVideo的OpenCore;该库支持多种常用的音频、视频格式回放和录制,支持多种媒体格式的编和解码格式。
Suface Manager:显示子系统管理器,并且为多个应用程序提供2D和3D图层的无缝融合。
LibWebCore:一个最新的Web浏览器引擎,支持Android浏览器,以及一个可嵌入式的Web视图。
SGL:Skia图形库,底层的2D图形引擎。
3D libraries:基于OpenGL ES1.0 API的实现;该库可以使用硬件3D加速(如果可用),或者使用高度优化的3D软加速。
FreeType:位图(bitmap)和矢量(vector)字体显示。
Android运行环境(ANDROID RUNTIME):提供了Java编程语言核心库的大多数功能,由Dalvik Java虚拟机和基础的Java类库组成。
Dalvik是Android中使用的Java虚拟机,每个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Android操作系统详解

安桌操作系统详解\system\app这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。
在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。
下面是详细的介绍:\system\app\AlarmClock.apk 闹钟\system\app\AlarmClock.odex\system\app\Browser.apk 浏览器\system\app\Browser.odex\system\app\Bugreport.apk Bug报告\system\app\Bugreport.odex\system\app\Calculator.apk 计算器\system\app\Calculator.odex\system\app\Calendar.apk 日历\system\app\Calendar.odex\system\app\CalendarProvider.apk 日历提供\system\app\CalendarProvider.odex\system\app\Camera.apk 照相机\system\app\Camera.odex\system\app\com.amazon.mp3.apk 亚马逊音乐\system\app\Contacts.apk 联系人\system\app\Contacts.odex\system\app\DownloadProvider.apk 下载提供\system\app\DownloadProvider.odex\system\app\DrmProvider.apk DRM数字版权提供\system\app\DrmProvider.odex\system\app\Email.apk 电子邮件客户端\system\app\Email.odex\system\app\FieldTest.apk 测试程序\system\app\FieldTest.odex\system\app\GDataFeedsProvider.apk GoogleData提供\system\app\GDataFeedsProvider.odex\system\app\Gmail.apk Gmail电子邮件\system\app\Gmail.odex\system\app\GmailProvider.apk Gmail提供\system\app\GoogleApps.apk 谷歌程序包\system\app\GoogleApps.odex\system\app\GoogleSearch.apk 搜索工具\system\app\GoogleSearch.odex\system\app\gtalkservice.apk GTalk服务\system\app\gtalkservice.odex\system\app\HTMLViewer.apk HTML查看器\system\app\HTMLViewer.odex\system\app\IM.apk 即使通讯组件包含MSN、yahoo通\system\app\ImCredentialProvider.apk\system\app\ImProvider.apk\system\app\ImProvider.odex\system\app\Launcher.apk 启动加载器\system\app\Launcher.odex\system\app\Maps.apk 电子地图\system\app\Maps.odex\system\app\MediaProvider.apk 多媒体播放提供\system\app\MediaProvider.odex\system\app\Mms.apk 短信、彩信\system\app\Mms.odex\system\app\Music.apk 音乐播放器\system\app\Music.odex\system\app\MyFaves.apk T-Mobile MyFaves程序\system\app\MyFaves.odex\system\app\PackageInstaller.apk apk安装程序\system\app\PackageInstaller.odex\system\app\Phone.apk 电话拨号器\system\app\Phone.odex\system\app\Settings.apk 系统设置\system\app\Settings.odex\system\app\SettingsProvider.apk 设置提供\system\app\SettingsProvider.odex\system\app\SetupWizard.apk 设置向导\system\app\SetupWizard.odex\system\app\SoundRecorder.apk 录音工具\system\app\Street.apk 街景地图\system\app\Street.odex\system\app\Sync.apk 同步程序\system\app\Sync.odex\system\app\Talk.apk 语音程序\system\app\Talk.odex\system\app\TelephonyProvider.apk 电话提供\system\app\TelephonyProvider.odex\system\app\Updater.apk 更新程序\system\app\Updater.odex\system\app\Vending.apk 制造商信息\system\app\Vending.odex\system\app\VoiceDialer.apk 语音拨号器\system\app\VoiceDialer.odex\system\app\YouTube.apk Youtube视频\system\app\YouTube.odex\system\bin这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary 二进制的程序,里面主要是Linux系统自带的组件,Android手机网就主要文件做下简单的分析介绍:\system\bin\akmd\system\bin\am\system\bin\app_process 系统进程\system\bin\dalvikvm Dalvik虚拟机宿主\system\bin\dbus-daemon 系统BUS总线监控\system\bin\debuggerd 调试器\system\bin\debug_tool 调试工具\system\bin\dexopt DEX选项\system\bin\dhcpcd DHCP服务器\system\bin\dumpstate 状态抓取器\system\bin\dumpsys 系统抓取器\system\bin\dvz\system\bin\fillup\system\bin\flash_image 闪存映像\system\bin\hciattach\system\bin\hcid HCID内核\system\bin\hostapd\system\bin\hostapd_cli\system\bin\htclogkernel\system\bin\input\system\bin\installd\system\bin\itr\system\bin\linker\system\bin\logcat Logcat日志打印\system\bin\logwrapper\system\bin\mediaserver\system\bin\monkey\system\bin\mountd 存储挂载器\system\bin\netcfg 网络设置\system\bin\ping Ping程序\system\bin\playmp3 MP3播放器\system\bin\pm 包管理器\system\bin\qemud QEMU虚拟机\system\bin\radiooptions 无线选项\system\bin\rild RIL组件\system\bin\sdptool\system\bin\sdutil\system\bin\service\system\bin\servicemanager 服务管理器\system\bin\sh\system\bin\ssltest SSL测试\system\bin\surfaceflinger 触摸感应驱动\system\bin\svc 服务\system\bin\system_server\system\bin\telnetd Telnet组件\system\bin\toolbox\system\bin\wlan_loader\system\bin\wpa_cli\system\bin\wpa_supplicant\system\etc从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。
Android的系统及应用的架构

3.1 视图层
在视图层中,主要使用 Fragment 来完成 各个模块界面的设计,同时还要遵守契约层中 定义的规则,将定义的抽象方法实现,展示器 层将调用这些方法来定义视图层的数据展示方 式。
在 MVP 架构中,其中 M:模型层(Model) 主要包括本地缓存访问组件和网络数据访问 组件;V: 视 图 层(View) 主 要 由 Activity、 Fragment、Adapter 这三个组件构成,主要功 能是完成应用的页面布局的设置;P:展示器 层(Presenter),该层使用定制化的 Presenter 展示器作为基础组件。
图 1:Android 系统架构图
单击事件,在相应的事件处理方法中实现操作。
3.2 展示器层
展示器层主要负责整个系统的业务逻辑, 完成视图层与模型层数据的交互。展示器层分 担了传统 MVC 架构中 Activity 组件作为控制 器层的主要职责,主要是为了防止 Activity 设 计得过于繁琐。通过封装向外部提供访问的接 口,有利于单元测试和后期的维护工作。
突 破 改 进。 一 款 优 秀 oid 应
用 的 开 发 是 依 赖 于 Android 架 构
的 研 究, 只 有 深 入 分 析 Android
系 统 的 架 构, 掌 握 各 层 组 件 的 协
作 过 程, 才 能 熟 悉 Android 的 开
发 流 程, 做 到 从 根 本 上 进 行 解 决
2.3 应用程序框架层
扣丁学堂自学Android核心课程内容文档(下)

Android开发核心课程——本课程讲解以下部分内容:
本课程讲解以下内容:
(一)核心应用组件
讲解了Android中的四大核心组件的前三个:Activity、Service、BroadcastReceiver的深入理解,Activity的生命周期,Activity栈与Task,数据传递,横竖屏处理技巧,四种启动方式分析,Service的两种启动方式与区别,混合使用技巧,IPC原理,BroadcastReceiver的三种类型及应用技巧,还有Fragment,ViewPager,Intent,Notification,发短信,打电话,常用系统服务,APK安装,MVC在Android中的应用,通过本节课程的学习,你将掌握Android 开发的核心技术。
(二)数据存储与网络传输
讲解了在Android平台上实现数据存储与传输的相关知识,SDCard操作与缓存,SQLite数据库,PULL解析,JSON解析,GSON组件,四大组件之ContentProvider机制原理,系统常用ContentProvider的应用,网络应用初步,文件共享,通过本节内容掌握数据存储与传输的知识。
(三)多线程
讲解Android中多线程的处理机制,UI线程与工作线程之间的通信机制,耗时操作的限制,再通过深入分析Handler、Message、MessageQueue、Looper之间的关系与源码实现,AsyncTask 应用,让你深刻理解多线程在Android中的应用。
Android项目结构分析

第2章A n d r o i d项目结构分析(总17页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--电子教案第2章 Android项目结构分析教学目标:课程重点:Android系统架构应用程序基本组件应用程序生命周期资源文件课程难点:应用程序基本组件应用程序生命周期教学方法:理论讲解、案例实训教学过程:Android的系统架构Android作为一个移动设备的开发平台,其系统架构和其他操作系统一样,采用了分层的架构。
从架构图2-1看,android从高层到低层分为以下几个层次。
应用程序层(Application)应用程序框架层(Application Framework)各种库(Libraries)和运行环境(RunTime)linux核心层(OS)图2-1 Android系统架构图应用程序(Application)Android的应用程序通常涉及用户界面和用户交互,这类程序是用户实实在在能感觉到的。
Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是使用JAVA语言编写的。
应用程序框架(Application Framework)普通开发者可以使用Android基本应用程序使用的系统API,Android 应用框架中的各个模块都可以被复用,各种服务也可以被复用,理解了这个机制,开发人员可以更好更轻松地开发出优秀的Android应用。
开发过程中常用到的基本框架组件如下:一组View(UI 组件),这些UI组件包括Button(按钮),EidtView(文本框),TextView(标签),List(列表)等等,灵活运用这些组件可以快速方便的创建良好的用户交互界面。
Content Providers(内容提供者),听起来有点抽象,通俗的理解Content Provider 就是提供一种服务,通过这种服务应用程序之间可以实现数据的互相访问和共享,比如通讯录的存储就使用了这种服务,其它应用也可以访问通讯录中存储的联系人信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android核心分析(01)----讨之设计意图 (2)Android核心分析(02)----方法论探讨之概念空间篇 (4)Android核心分析(03)----手机之硬件形态 (7)Android核心分析(04)----手机的软件形态 (9)Android核心分析(05)----基本空间划分 (10)Android核心分析(06)----IPC框架分析 (13)Android核心分析(07)----Service深入分析 (20)Android核心分析(08)----Android 启动过程详解 (27)Android核心分析(09)----Zygote Service (31)Android核心分析(10)----Android GWES之基本原理篇 (34)Android核心分析(11)----Android GWES之消息系统 (37)Android核心分析(12)----Android GEWS窗口管理之基本架构原理 (42)Android核心分析(13)----Android GWES之Android窗口管理 (43)Android核心分析(14)----Android GWES之输入系统 (50)Android核心分析(15)----Android输入系统之输入路径详解 (53)Android核心分析(16)----Android电话系统-概述篇 (59)Android核心分析(17)----电话系统之rilD (62)Android核心分析(18)----Android电话系统之RIL-Java (68)Android核心分析(19)----电话系统之GSMCallT acker (75)Android核心分析(20)----Android应用程序框架之无边界设计意图 (78)Android核心分析(21)----Android应用框架之AndroidApplication (80)Android核心分析(22)----Android应用框架之Activity (86)Android核心分析(23)----Andoird GDI之基本原理及其总体框架 (92)Android核心分析(24)----Android GDI之显示缓冲管理 (95)Android核心分析(25)----Android GDI之共享缓冲区机制 (101)Android核心分析(26)----Android GDI之SurfaceFlinger (105)Android核心分析(27)----Android GDI SurfaceFlinger之动态结构示意图 (112)Android核心分析(28)----Android GDI之Surface&Canvas (115)Android核心分析(01)----讨之设计意图为什么要研究Android,是因为它够庞大,它够复杂,他激起了我作为一个程序员的内心的渴望,渴望理解这种复杂性。
我研究的对象是作为手机开发平台的Android软件系统部分,而不是Dalvik虚拟机本身。
作为一个从其他平台装接过来的程序员,要从事Andoid平台系统开发,我的关于手机平台上积累的知识已经不能满足需要了,Android为我们带来了大量的新名词,Activity,Manifest,INTENT,Service,Binder,Dalvik虚拟机,Framework,Linux,Navtive ,JNI.....。
通过在源代码,在开发社区,在开发博客,甚至在招聘过程中,我不断的寻求Android是什么。
经过一定时间的沉淀,我慢慢的理解到Android 不仅仅是一类手机的总称,不仅仅是一个手机开发平台,不仅仅是一个虚拟java操作系统,不仅仅是一个开发社区,一个开发标准,不仅仅是一堆代码,Android已经成了一个新的潮流。
代码多,系统复杂,纵观社区中Android的研究者,一开始从源代码分析Android就走向迷途,不断的跋山涉水,向纵深冲刺,最终脑袋堆栈不够用,迷失在开始的旅程,或者挂在半途中,鲜有通达者。
我感觉到大部分的研究者总是忘记站在高山上向下望一望设计者的意图,一味的随着代码的控制流走入繁杂的谜团,陷入到复杂性的深渊。
我的研究分析是从设计者的意图出发,从抽象的甚至从哲学的高度,从最简单的系统原型开始,从设计猜想开始,而不是一开始就从代码分析展开。
首先理解Android大的运行框架,主干流程,系统原型,之后再用源代码分析充实之。
当然我这里的设计者意图并不是真正的Android设计者意图,而是我以为的Android设计者意图。
要理解设计者意图,就需要抽象。
我们需要在哲学意义空间中去考虑系统的描述,即系统在本质上要表达什么。
在逻辑空间上去考虑系统基本构成和动态结构。
从现实到虚拟对象的映射去理解系统对象的组成,在从数据流的角度分析数据的产生者和消费者之间作用关系,从控制流的角度去分析对象之间的交互关系,从函数调用去分析具体的层次关系。
在系统设计上,原型是最能表达哲学空间和逻辑空间中系统本质的东西,原型是事物本质的第一层体现。
我以为任何复杂的系统都一个简洁的系统原型,都有它简洁的意义。
系统原型是设计者意图的第一体现,所以我们需要从几个方向上去提炼系统原型:(1)从系统本质和基本原理出发(2)从分析系统数据流和控制流分析出发。
从设计者意图出发,得出系统原型,提取到大的逻辑结构和系统构成是第一步。
之后我们可以从设计者的角度考虑系统猜想系统设计,为什么要这样设计,为什么要有这些构成。
这样的基本原型是什么?系统的限制是什么,应用场景有哪些,有些设计的引进还是系统收敛性而为之呢。
我们还可以从代码痕迹上去分析,这些概念是如何的得来的?从一定的抽象和高度去理解这些问题,遵循系统原型出发之原则,在深入分析代码的时候,就不容易陷入细节中。
我们就可以随时跳出来想,这些代码在整体上载表达一个什么概念,在描绘一个什么逻辑,他要构成一个虚拟层吗?他是在管理这个硬件吗?他在虚拟这个对象吗?他在构建管理机构?还是在构建一个对象管理?空间管理,为了快速引入了什么样的复杂算法,实际上的原型算法应该是什么样的?只有深入到这个抽象层次,我们才能很好的把握住系统的每一条线,每一个对象的意义。
只用从原型出发,我们才能把握住这个系统的实质所在,在干什么?他要表达什么?设计者为什么要这样想?最终极的想法是什么?这样,代码分析就变得简单明了,读代码就变成了是在印证猜想,修正方向。
本文来自CSDN博客,转载请标明处:/maxleng/archive/2010/04/10/5471557.aspxAndroid核心分析(02)----方法论探讨之概念空间篇我们潜意识就不想用计算机的方式来思考问题,我们有自己的思维描述方式,越是接近我们思维描述方式,我们越容易接受和使用。
各种计算机语言,建模工具,不外乎就是建立一个更接近人的思维方式的概念空间,再使用工具从该概念空间向另外一个概念空间映射,我称之为人性思维空间向01序列描述空间的一个映射。
实现方面来看,系统就是一个翻译器,将机器性更加人性化的一种机制。
大学计算机经典课“计算机体系结构”,其他的可以忘记,但是下面这个图不能忘记:这个就是概念空间最本质的原型体现:作为观测者看到了什么?设计者给了观察者什么?给出的答案是外部特性。
(1)提供给观察者的概念空间是什么?(2)内部特性的概念空间是什么?概念空间所表达的东西带有两个方面的缠绕:一面是人性自由,一面是物性制约(实时响应,系统资源的限制)。
所以程序实现的概念空间是人性自由与特定计算机系统物性之间有一个折中,并且根据实际系统而采取某种动态的平衡。
而这种平衡将会影响到系统架构,以及设计的思想。
特别在手机这样的嵌入式系统中,这种矛盾和平衡无处不在,这种折中无处不在。
而对系统的选取和采用,也就接受了某个方面的折中或某中即在的,也许是看不见的标准,及这样的标准有隐式和显式的。
正因为如此,不管是工具的产生,新的平台的产生,都是计算机的物性向人性靠近的一个小台阶。
一个新的思想的形成随即带来的新工具,新系统框架,新的体系结构。
如果设计者站的高度足够高,那么设计者一开始就会考虑到“我该给他们一个什么样的概念空间,甚至一个什么样的理念,让他们这个概念空间去建立自己的产品”,于是设计者就会开始主动的去建立概念空间,这个概念空间要表达的实际意义,概念空间应该有哪些内容构成,考虑概念空间的完备性和封闭性,考虑概念空间的边界,考虑从哪个基础上建立这个概念空间,考虑如何与概念空间外的实体进行交互,考虑系统的资源限制条件,考虑功能性构建的合理性,考虑机器系统与人的平衡问题。
我们在学习新系统时,首先映入眼帘的就是新概念。
新名词,就如现在我们面临的Android大量的新名词,在程序员的世界都是从代码实践开始的,是从写应用开始去涉及。
SDK给了我们一个概念,我们就在这个概念框架下,使用SDK给我提供的函数接口,数据结构,初始化过程等,我们最初的接触到原型就是“HelloWorld”之类的DEMO程序,我们在Hello world上去使用各种不同的接口函数,对于应用程序员来讲,他说看到的系统就是系统调用接口,及其编程开发流程。
实际上只要一使用这些接口,就不得不接受一系列的概念,只有在这种概念系统下,我们才能工作。
但是,实际上我们却忽略了这样的概念系统的理解,只是在编程接口的这个狭窄的空间去理解系统.我们理解系统在形成理解概念的空间只是微小的一角,很少有资料来介绍这种概念系统的形成和理解,编程接口只是这个概念空间一个,对外部的一个表征。
我们可以抽象起来,以接口,协议和行为,来描述系统的情况。
SDK API的实质向上层提供了一个语义接口,从而在层间实现了一个转义过程,同时又成为一个功能的集合体。
但是我们很少这样跳出来看,我们到底是处于一种什么样的概念空间,SDK除了调用接口外,还给了我们怎样一种整体概念?目标系统的基本构架在本质上的东西就是一个概念系统到另一个概念系统的映射。
让我们大脑理解的概念系统映射到计算机能实现的概念域的一个映射。
我们假定这个概念域E,机器能够理解的概念域为M,我们的软件工程要做的事情实质就是:EàM领域的一个映射过程。
为什么要在宏观上把握这些概念呢,显然有我的目的,理解概念空间是理解设计者意图的一个重要途径。
设计者要想给开发者提供什么,设计者想要提供给最终用户什么。
我们需要站在高处看待系统明白设计者意图。
Android的实质还是一套管理手机硬件系统的软件,这个话讲起来没有多大意义,计算机操作系统本质都是如此,Android是Google云计算计划的一部分,我们修正成:Android建立的本质就是让计算机成为我的云接入移动智能终端。