仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1854|回复: 19
打印 上一主题 下一主题

[学习教程] IOS编程:Android条理化平安架构及中心组件概览仓酷云

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:43:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果你对iPhoneDevelopment有兴趣,以下是入门门槛供参考:首先你要有一台Mac电脑(因为iPhoneApp使用Mac平台内建的Xcode开发工具),网上也有在Windows下搭设开发环境的教程,请大家自行谷歌一下,Android体系承继了Linux开源操纵体系的平安特征,并接纳了条理化的体例来包管体系平安,本文将具体先容Android条理化平安架构及其中心组件。
Android条理化平安架构

Android作为一个挪动设备的平台,其软件条理布局包含了一个操纵体系(OS),两头件(MiddleWare)和使用程序(Application)。依据Android的软件框图,其软件条理布局自下而上分为以下几个条理:


  • 操纵体系层(OS)
  • 各类库(Libraries)和Android运转情况(RunTime)
  • 使用程序框架(ApplicationFramework)
  • 使用程序(Application)
以下分离先容Android各个条理的软件的重点及其相干手艺:
(1)操纵体系层(OS)
Android利用Linux2.6作为操纵体系,Linux2.6是一种尺度的手艺,Linux也是一个开放的操纵体系。Android对操纵体系的利用包含中心和驱动程序两部分,Android的Linux中心为尺度的Linux2.6内核,Android更多的是必要一些与挪动设备相干的驱动程序。次要的驱动以下所示:


  • 显现驱动(DisplayDriver):经常使用基于Linux的帧缓冲(FrameBuffer)驱动
  • Flash内存驱动(FlashMemoryDriver)
  • 拍照机驱动(CameraDriver):经常使用基于Linux的v4l(Videofor)驱动。
  • 音频驱动(AudioDriver):经常使用基于ALSA(AdvancedLinuxSoundArchitecture,初级Linux声响系统)驱动
  • WiFi驱动(CameraDriver):基于IEEE802.11尺度的驱动程序
  • 键盘驱动(KeyBoardDriver)
  • 蓝牙驱动(BluetoothDriver)
  • BinderIPC驱动:Andoid一个特别的驱动程序,具有独自的设备节点,供应历程间通信的功效。
  • PowerManagement(动力办理)
(2)各类库(Libraries)和Android运转情况(RunTime)
本条理对应一样平常嵌进式体系,相称于两头件条理。Android的本条理分红两个部分一个是各类库,另外一个是Android运转情况。本层的内容年夜多是利用C++完成的。在个中,各类库包含:


  • C库:C言语的尺度库,这也是体系中一个最为底层的库,C库是经由过程Linux的体系挪用来完成。
  • 多媒体框架(MediaFrameword):这部份内容是Android多媒体的中心部分,基于PacketVideo(即PV)的OpenCORE,从功效上本库一共分为两年夜部分,一个部分是音频、视频的回放(PlayBack),另外一部分是则是音视频的记录(Recorder)。
  • SGL:2D图象引擎。
  • SSL:即SecureSocketLayer位于TCP/IP协定与各类使用层协定之间,为数据通信供应平安撑持。
  • OpenGLES1.0:本部分供应了对3D的撑持。
  • 界面办理工具(SurfaceManagement):本部分供应了对办理显现子体系等功效。
  • SQLite:一个通用的嵌进式数据库
  • WebKit:收集扫瞄器的中心
  • FreeType:位图和矢量字体的功效。
Android的各类库通常为以体系两头件的情势供应的,它们均有的一个明显特性就是与挪动设备的平台的使用亲切相干。Android运转情况次要指的假造机手艺——Dalvik。Dalvik假造机和一样平常Java假造机(JavaVM)分歧,它实行的不是Java尺度的字节码(bytecode)而是Dalvik可实行格局(.dex)中实行文件。在实行的过程当中,每个使用程序即一个历程(Linux的一个Process)。两者最年夜的区分在于JavaVM是以基于栈的假造机(Stack-based),而Dalvik是基于存放器的假造机(Register-based)。明显,后者最年夜的优点在于能够依据硬件完成更年夜的优化,这更合适挪动设备的特性。
(3)使用程序框架(ApplicationFramework)
Android的使用程序框架为使用程序层的开辟者供应APIs,它实践上是一个使用程序的框架。因为下层的使用程序是以JAVA构建的,因而本条理供应的起首包括了UI程序中所必要的各类控件:比方:Views(视图组件)包含lists(列表),grids(栅格),textboxes(文本框),buttons(按钮)等,乃至一个嵌进式的Web扫瞄器。一个Android的使用程序能够使用使用程序框架中的以下几个部分:Activity(举动)、BroadcastIntentReceiver(播送企图吸收者)、Service(服务)、ContentProvider(内容供应者)。
(4)使用程序(Application)
Android的使用程序次要是用户界面(UserInterface),一般以JAVA程序编写,个中还能够包括各类资本文件(安排在res目次中)。JAVA程序及相干资本经由编译后,将天生一个APK包。Android自己供应了主屏幕(Home),接洽人(Contact),德律风(Phone),扫瞄器(Browsers)等浩瀚的中心使用。同时使用程序的开辟者还可使用使用程序框架层的API完成本人的程序。

<br>
Android分层平安架构图
Android的组件模子(ComponentModel)

Android体系中包含以下4种组件:
(1)Activity
Activity就是一个界面,这个界面内里能够安排各类控件。比方:TaskManager的界面、RootExplorer的界面等;Activity是为用户操纵而展现的可视化用户界面。比方说,一个activity能够展现一个菜单项列表供用户选择,大概显现一些包括申明的照片。一个短动静使用程序能够包含一个用于显现做为发送对象的接洽人的列表的activity,一个给选定的接洽人写短信的activity和翻阅之前的短信和改动设置的activity。只管它们一同构成了一个内聚的用户界面,但个中每一个activity都与别的的坚持自力。每一个都是以Activity类为基类的子类完成。
一个使用程序能够只要一个activity,大概,如方才提到的短信使用程序那样,包括良多个。而每一个activity的感化和其数量,天然取决于使用程序及其计划。一样平常情形下,总有一个使用程序被标志为用户在使用程序启动的时分第一个看到的。从一个activity转向另外一个的体例是靠以后的activity启动下一个。
每一个activity都被赐与一个默许的窗口以举行绘制。一样平常情形下,这个窗口是满屏的,但它也能够是一个小的位于别的窗口之上的浮动窗口。一个activity也能够利用凌驾一个的窗口。比方,在activity运转过程当中弹出的一个供用户反响的小对话框,或是当用户选择了屏幕上特定项目后显现的需要信息。
窗口显现的可视内容是由一系列视图组成的,这些视图均承继自View基类。每一个视图均把持着窗口中一块特定的矩形空间。父级视图包括并构造它子视图的结构。叶节点视图(位于视图条理最底端)在它们把持的矩形中举行绘制,并对用户对其间接操纵做出呼应。以是,视图是activity与用户举行交互的界面。比方说,视图能够显现一个小图片,并在用户指导它的时分发生举措。Android有良多既定的视图供用户间接利用,包含按钮、文本域、卷轴、菜单项、复选框等等。
(2)Service
服务是运转在背景的功效模块。如文件下载、音乐播放程序等;服务没有可视化的用户界面,而是在一段工夫内涵背景运转。比方说,一个服务能够在用户做别的事变的时分在背景播放背景音乐、从收集上猎取一些数据大概盘算一些工具并供应给必要这个运算了局的activity利用。每一个服务都承继自Service基类。
一个媒体播放器播放播放列表中的曲目是一个不错的例子。播放器使用程序大概有一个或多个activity来给用户选择歌曲并举行播放。但是,音乐播放这个义务自己不该该为任何activity所处置,由于用户希冀在他们分开播放器使用程序而入手下手做其余事变时,音乐仍在持续播放。为到达这个目标,媒体播放器activity应当启用一个运转于背景的服务。而体系将在这个activity不再显现于屏幕以后,仍保持音乐播放服务的运转。
能够毗连至(绑定)一个正在运转的服务(假如服务没有运转,则启动之)。毗连以后,能够经由过程谁人服务表露出来的接口与服务举行通信。关于音乐服务来讲,这个接口能够同意用户停息、回退、中断和从头入手下手播放。
(3)ContentProvider
它是Android平台使用程序间数据共享的一种尺度接口,它以相似于URI(UniversalResourcesIdentification)的体例来暗示数据,如:content://contacts/people/1101;内容供应者将一些特定的使用程序数据供应别的使用程序利用。数据能够存储于文件体系、SQLite数据库或别的体例。内容供应者承继于ContentProvider基类,为别的使用程序取用和存储它办理的数据完成了一套尺度办法。但是,使用程序其实不间接挪用这些办法,而是利用一个ContentResolver对象,挪用它的办法作为替换。ContentResolver能够与恣意内容供应者举行会话,与其互助来对一切相干交互通信举行办理。
(4)BroadcastReceiver
BroadcastReceiver是一个专注于吸收播送关照信息,并做出对应处置的组件。良多播送是源自于体系代码的。比方,关照时区改动、电池电量低、拍摄了一张照片大概用户改动了言语选项。使用程序也能够举行播送,比方关照别的使用程序一些数据下载完成并处于可用形态。
使用程序能够具有恣意数目的BroadcastReceiver以对一切它感乐趣的关照信息予以呼应。一切的吸收器均承继自BroadcastReceiver基类。BroadcastReceiver没有效户界面。但是,它们能够启动一个activity来呼应它们收到的信息,大概用NotificationManager来关照用户。关照能够用良多种体例来吸援用户的注重力──明灭背灯、震惊、播放声响等等。一样平常来讲是在形态栏上放一个耐久的图标,用户能够翻开它并猎取动静。
与此组件相干的观点是Intent,Intent是一个对举措和举动的笼统形貌,卖力组件之间程序之间举行动静传送。而BroadcastReceiver组件则供应了一种把Intent作为一个动静播送进来,由一切对其感乐趣的程序对其作出反响的机制。举个复杂的例子,为了完成一个体系启动后播放音乐的功效,则能够界说Intent为android.intent.action.BOOT_COMPLETED,由BroadcastReceiver组件将其举行播送,而体系中的MediaPlayer吸收到该信息后则举行播放。
如上所述,4个组件之间的干系以下图:

<br>

维护一个堆栈-(void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated是像堆栈里压一个UIViewController-(UIViewController*)popViewControllerAnimated:(BOOL)animated是从堆栈里弹出来一个UIViewController就算你的程序不是像联系人那样向右推进也可以用UINavigationController
不帅 该用户已被删除
沙发
发表于 2015-1-21 13:10:28 | 只看该作者
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
只想知道 该用户已被删除
板凳
发表于 2015-1-23 12:48:20 | 只看该作者
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
蒙在股里 该用户已被删除
地板
发表于 2015-1-31 15:55:46 | 只看该作者
重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。
深爱那片海 该用户已被删除
5#
发表于 2015-2-6 20:27:30 | 只看该作者
要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。
因胸联盟 该用户已被删除
6#
发表于 2015-2-17 11:32:09 | 只看该作者
近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,
再见西城 该用户已被删除
7#
发表于 2015-2-20 12:29:51 | 只看该作者
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
金色的骷髅 该用户已被删除
8#
发表于 2015-3-6 13:43:41 | 只看该作者
从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,
小魔女 该用户已被删除
9#
发表于 2015-3-6 17:58:49 | 只看该作者
iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。
兰色精灵 该用户已被删除
10#
发表于 2015-3-20 02:09:21 | 只看该作者
AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
爱飞 该用户已被删除
11#
发表于 2015-3-21 01:17:30 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
若天明 该用户已被删除
12#
发表于 2015-3-28 17:26:37 | 只看该作者
从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,
活着的死人 该用户已被删除
13#
 楼主| 发表于 2015-4-1 07:10:44 | 只看该作者
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
精灵巫婆 该用户已被删除
14#
发表于 2015-4-1 13:43:40 | 只看该作者
down下code4app网站的每个分类的代码挨着看
15#
发表于 2015-4-10 19:54:36 | 只看该作者
看《iPhone 4与iPad开发基础教程》,跟着一步步来
老尸 该用户已被删除
16#
发表于 2015-4-16 19:10:10 | 只看该作者
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
乐观 该用户已被删除
17#
发表于 2015-4-17 22:40:31 | 只看该作者
还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看,希望可以帮到你,谢谢。
谁可相欹 该用户已被删除
18#
发表于 2015-4-18 22:00:20 | 只看该作者
然而,在vmware软件环境下,安装Mac OS X操作系统也是一件非常复杂的事情,而且还有可能花费了大量时间,最后却跑不起来。笔者也是经过了大量的实践,
小妖女 该用户已被删除
19#
发表于 2015-5-3 23:15:50 | 只看该作者
看《iPhone 4与iPad开发基础教程》,跟着一步步来
若相依 该用户已被删除
20#
发表于 2015-5-9 11:42:38 | 只看该作者
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-27 21:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表