分享

移动开发中的技术路线选择

 WindySky 2016-11-17

我们CSDN的活动前面已经连续举办了8期,加上还有和一些合作伙伴做的会议,大概有17期。前面的话题有涉及到产品、设计,还有推广运营方面的,也有技术的。这次我们回到了开发者所关注的技术平台的本身,然后跟大家分享一些大家关注的iOS5升级的问题,还有技术路线选择的问题。

上海改变科技CTO李亮

以下为上海改变科技CTO李亮的演讲实录:

我演讲的题目是“移动开发中的技术路线选择”,主要讲的内容是关于目前,大家都知道现在是移动互联网风起云涌的时代,比起以前,以前应用、开发也都存在,那时候大多集中在塞班上面。我要讲的就是基本能够提一下现在的这些移动的平台,然后各个平台有一些什么特点,或者他有什么一些好的或者不好的地方。

今天来的应该多数都是做iOS开发的人,除了iOS是非常重要的平台,Android也是非常大的平台。我们在做开发的时候,有些时候我们需要考虑到在各个平台之间的不同点,以及对技术路线的选择,我们要做一些决策。

各个平台的现状和特性

现在这个移动,整个业界是什么样的情况?有哪些平台存在,各个平台之间,目前是什么状态?我们这个时代可以称之为一个新的移动时代。以前的时代可以称之为旧的时代,以前就是移动并没有显得这么热门。换句话说,我们拿手机上网,都没有现在这么顺畅,手机的处理能力不会像现在这样的好。这个新的时代,是什么时候开始?基本上是07年,是Apple推出了iPhone,大家都知道,iPhone基本上属于开创了一个新的移动的整个时代。随后谷歌发布了Android,当然现在还包括平板,整个移动产业是基本上跟原来完全变了一个样子,这个不仅仅是是设备,或者是技术设备,很快应用开发,技术平台,这个涉及到整个产业界跟互联网,跟甚至PC上的软件,其实都发生了一个很大的变化。

那么,我觉得有一点,我们能够赶上一个新的时代的开端是一个非常幸运的事情。前一段时间,是在整个互联网的热潮其他的时候,那时候把我们对于软件,对于计算机能力的认识有了一个非常大的变化。我想,这次我们所面临的一个新的移动时代,其实不压于当初互联网的变化,就在于我们手里有一个新式武器,我们的计算变得无处不在。在这个过程当中,有很多不会变化,厂商、设备,系统。因为系统是我们应用开发所赖以进行的一个基础,在这个系统,或者这个平台上我们能够做哪些事情?

在整个移动互联网这个产业开始的时候,自然就是涌现出了很多厂商,厂商又出现了非常多的设备。我们大家可以看到,虽然说我们大家觉得苹果的东西不是特别多,很简单,一个iPhone,一个iPad,作为他移动设备的东西。但是,在另外一方面,在苹果以外,在Android的世界里,就有无数不同的厂商,产生出了不同尺寸的,甚至性能有高有第的设备,这是非常多样性的情况,系统也是一样。虽然我们今天经过一段时间的发展,可以说我们现在这个时间段已经是移动互联网这个产业从刚开始成长到成熟的阶段,目前应该说迈入了成熟的阶段。

在这样一个阶段大家都可以看到,我们系统最主流的就是两种,一个就是iOS,一个就是Android,还有一些其他系统,但是那些都不称之为主流。在现在这个移动互联网的时代里面,有一个非常明显的特点。我们大家说到手机,我们会说这个手机是iPhone的还是Android的,不会说我这个手机是HTC的还是三星的。也就是说,你生产厂商比起你这个系统的品牌来说,显得无关紧要了,系统更重要。我们无论是开发应用还是使用应用看中的是系统,系统变得越来越关键,当然,厂商的品牌是在于处理能力怎么样,你的应用能不能在老版本的系统上跑,或者新版本对新版本的适应能力如何?都是讨论的这样的一些问题。厂商的角色渐渐在淡化。

而另外一个在移动这个产业,原来是非常重要的角色,比如说运营商大家都知道,像中国移动、联通,或者中国电信。原来在这个时代还没有开始之前,运营商是占绝对主要地位的。所有的你即使有应用开发,也必须通过像中国移动的比如说百宝箱,或者通过SP这样的渠道才能够让尽可能多的用户使用,然后才能够收到一些钱。但是,现在这个时代不一样了,现在这个时代,对运营商来说,逐渐退化成为一个提供数据通道的这么一个角色。我们需要运营商有3G连接,甚至2G也可以,需要的是一个数据通道,他基本上变成一个纯粹的数据提供商。

那么,我们一个一个来看,首先看iOS,iOS最著名的苹果的品牌,代表着比较好的工艺,比较优雅的设计,比较好的用户界面。那么,这是苹果的品牌标准。然后,他iOS上面现在只有iPhone、iPad,苹果TB三种设备。对我们来说,重要的还是关注iPhone和iPad。在iOS里面有一个非常明显的特征,因为苹果控制了整个从设备生产到系统的整个东西,硬件全部都是由他自己做,他可以很好的控制住他所需要的东西。iOS他设备首先都是一致的,操作系统也是一样的,并且iPhone和iPad的系统曾经有一阵子分成两个,但是最后又合上了。他的差距只在意他们的屏幕大小不一样。

大家大部分在做开发程序的时候,设计一个用于iPhone上面的一个用户界面,跟iPad上面的用户界面,应该总是会有不一样的,要利用到iPad的大屏幕。但是,从他一致性的角度来说,苹果的东西一致性是最好的,不管怎么升级,他的整个屏幕大小都是一样,坐标、系统都是一样。苹果从写程序角度怎么做的?苹果的整个系统的坐标体系不是整数,是浮点数。所以他可以维持整个设备的屏幕坐标的大小是一样的。这个他对整个应用说应用变成的接口提供了非常好的一致性,这些对开发者非常有用。他系统本身有提供了很多非常束缚的,很多东西只要我们直接利用就可以达到非常好的效果。

对于开发者来说,应用开发也是很重要的。如果大家以前接触过以前的比如说Windows Mobile的模拟器,大家知道模拟器跟设备之间的相似形是一个天上,一个地下,但是苹果在这一点上做的非常好。

要说的第二个系统就是Android。Android的特点是什么?第一,他在自己标榜的开发,整个系统的代码都可以看得到,并且他对于厂商来说不需要任何费用。Android的第二个保证是谷歌牌子的保证,有谷歌在会永远的开发下去,这其实也是给设备厂商和开发者的一个信心。然后谷歌就会跟运营商和开发商组织一起,形成了一个开发者首席联盟组织。在这个组织里面,相对来说比我们大家外面的人能够早一点拿到Android系统的原代码,或者更加能够得到谷歌的支持,这是他的一个使命。

然后,Android的开放性,引来了非常大的厂商,三星、摩托罗拉等,然后包括一些别的二线厂商,甚至现在有非常非常多的山寨厂商也开始专项Android的系统。大量的厂商生产的大量的设备,自然而然就造成了不同规格的设备。这样就造成了市面上有非常多的终端设备,比如说CPU的规格、屏幕大小以及分辨率大小可能都不一样。另外,我们在开发中碰到过一个问题,比如说HTC或者三星、摩托,他们生产的手机都有了HTML,这本来是非常高兴的事情。但是,问题是Android没有HTML结合的标准,这个对开发者其实是一个困扰。

接下来第三个就是对Windows Phone 7,他最大的后台就是Microsoft。对于整个产业来说,Microsoft显然是慢了一步,在他进入这个市场的时候,iOS和Android已经进来了。所以他整个系统的发展也没有看两者那么快,他是一个后来者,他要去夺取市场份额,相对来说比较困难一点。至于他的发展前景怎么样,很难说。就在我们刚才看到的那个份额上来看,他的份额很少。

那么他以前完全改变了原来Windows Phone 7跟PC很类似的方式,现在完全是新的方式了。那么,Windows Phone到现在为止,其实刚刚出了1.5,说明他其实还是在他演化的非常非常的早期。那么,他现在最有力的一个事情就是诺基亚彻底投靠了Window阵营,并且最近已经有两款新的手机推出来。这个是好事还是坏事?很难说,因为诺基亚有很强的生产能力和设计能力。但是,诺基亚抛弃了原有的塞班的那套东西,完全投靠Windows Phone能不能使他能够重生,这个也未必可知。而Microsoft在诺基亚加入之后,能不能变得很好,大家都是抱着将信将疑的态度看这个事情。

Windows Phone7作为一个开发平台,就目前来说,还是有很多限制。所以,第一个,他跟用户界面相关的应用程序的开发太偏重于游戏这一块,缺乏一个中间一点的,或者说我能够相对平衡一点的这么一个开发接口给开发者。因为我们有一个产品,是Android上的开发器,我们以前考虑过能不能移到Windows Phone 7上。但是后来觉得很难。前面就不一样了,iOS跟Android都是非常完备的。虽然说Android只能用Java来开发,但是后来就突破了很多,然后你可以去做一些比较深入到系统内部的东西。

看了前面三个比较大头的系统,看一些剩下的东西,也是这个市场上比较传统的。第一个是RIM,他在北美的商业用户占有非常大的市场。在国内有很多水货卖的很便宜,但是在整个应用系统来说,北美远远比别的地方好。RIM这个本身来说,我自己的观点来看,这个系统非常成就,非常落后,非常不适应与这个时代,但是他的用户还在,得益于他的整个BES,或者说他赖以成名的系统。最近,RIM其实在这两年当中,他的市场已经逐渐的回落,对他来说也是一个非常大的危机。那么,最近RIM有一个比较大的动作,首先他推出了一个平板。他这个系统是一个事实的Unix系统,那个系统相对来说,比他现在的这个非常封闭,非常单一,功能很小的系统,一下子变成一个全功能的系统出来了,而且他要过渡到手机上。一旦完成了这个,他的功能就会非常强大。他现在称之为BBX这个平台。

第二个就是塞班,应该已经是过去时了。虽然诺基亚说,塞班的设备他们还会维持一段时间,但是他们不会生产高端设备,我们可以认为塞班已经可以画上句号了。当然,如果您开发的程序,比如说面对国内的一些相对来说中低端手机的用户,他还有市场。但是,如果想将来怎么样,我要跟着将来的发展方向走,去开发将来可用的东西,塞班不是一个好选择。

另外一个Bada,他本身跟Android一样,他底下的核心和Android一样。三星有一个系列的手机用的是这个系统。当然,从他本身来说,基本上也类似,该有的功能也都有,现在大家三四款手机用的这个系统。第四个是webOS,他提供本身的一个框架可以操作系统,webOS整个用户体验的设计非常好,可是他被HP收购,HP会不会抛弃他,大家不知道。

前面看了那么多平台,对于每一个平台,他不仅仅是平台,开发者看中他能够提供什么样的能力,然后够是围绕这个生态环境,这个包括你开发的应用程序,能不能很方便的有一个方式让你卖出去,或者你卖出去,有没有方便的方式把钱收回来。还包括了你这个平台有没有足够多的用户,一个应用程序,必须有了足够多的用户,这个程序才有价值,或者说开发者才有价值。生态环境包括普及性,就是有多少用户用,应用开发的方便性,我有没有一个方便性,可以很方便的开发,可以在实际的设备商调试,很容易的就放到设备商去。应用分发的渠道,我的应用怎么样才能到达用户。用户取得应有的方便性,就是我前面所说的,我不需要PC,我直接手机上有App Store,直接可以下载东西。

对于这样一个围绕某个平台的整个生产环境来说,两种现象非常明显,一个是良性循环,一个是恶性循环,良性循环的例子就是App Store,然后又开发者把应用上传上去,马上有用户购买。一般来说,苹果的购买度会强烈一点,这一点也是很有趣的一个现象。有人购买了,开发人员就有动力,就会有更多的开发人员进来,他就会有更多的应用程序出现,用户的选择余地就更大,那买应用的人就更多,那设备卖出来的也就越多,整个生态环境就非常的良性。在目前情况来看,苹果是做的非常好的。

恶性循环是另外一种方式,可以拿谷歌做例子,或者大专院校的Android市场做例子。他们有很多恶意应用,一开始就是这样,上面应用的质量参差不齐,有很多很差,用户就没有购买的动力,那开发者就没有开发的动力,所以现在Android市场也很繁荣,但是他收费应用不多,免费应用很多。为什么?因为开发者在上面收钱的可能性比App Store小很多,整个市场就变成了一个恶性循环。这实际上是谷歌经营上的一个问题。

其实刚才我也已经提到了iOS的整个生态系统跟Android整个生态系统的比较。我觉得从我的观点来看,iOS的生态系统会构建的比Android的更好。这两者的特点有一个明显的特点就是iOS是苹果一手掌控的,所有的应用都不能随便安装,随便跑。苹果把整个公司控制的非常严格,使得你不能随便做。有的开发者想取什么东西都取不到,很多现实在那里面。就是说,对于整个iOS的生态系统来说,苹果把他控制的非常严格,每一步都审查的非常严格。这个会对一些开发者造成不变,但是反过来说对应用质量的保证会有一个比较好的保证。

那么,Android是另一个例子,这个例子就是谷歌基本上不管,人们样的应用都可以上,都可以装。那么,开发者觉得非常自由,因为首先你可以知道系统内部怎么工作,非常自由,对开发者有更多的角度可以考虑问题,可以开发更多不同性质的应用。但是,一个没有监管,没有审查的一个环境,也造成了,大家都知道Android上恶意应用很多。某一个国外的开发商开发了很好的应用,国内的把他下载下来,把的东西篡改掉,或者开始扣费,这种现象,这两方面差别非常大。

在移动互联网这个时代里面,互联网这三个字意味着什么?就是我们可以存取云端资源,我们可以比较方便的访问网上的内容,就是我们现在所说的云计算,或者是云端,云端可以提供给我们什么东西?可以提供给我们的各种东西,提供天气。那么,在现在这样的平台当中,每一个平台都提供这样的能力,这样我的信息可以更加事实的得到,我可以被推送下来,也可以去取。但是,另一方面我们跟PC还是不一样,PC可以是一个不移动的东西,但是对于手机,或者平板这种移动设备来说,他是有连接,但是这个连接有可能这会儿是存在,那一会儿就不存在了,在这种时候,对我们写应用程序的人就要考虑到这个问题,我写的必须要适应这个情况,不能假设一直有网络在。

技术路线选择所要考虑的问题

前面讲了一些目前的几个平台大致的情况,就是说包括平台的样子,他的特点,以及整个生态环境怎么样。接下来我们看看我们在做移动产品的时候,从技术上考虑的问题。

操作系统的能力:就是说的iOS还是Android,或者Windowsphone7等等,或者塞班,RIM等等。首先我们要作为开发者来说,要考虑做一个东西,先想到我操作系统的能力能不能做到这一点。比如我说的应用程序,我要自己建立一个网络连接,连到一个特殊的服务器的端口,跑自己的信息,操作系统能不能提供这样的能力,iOS可以,Android也可以,Windowsphone7就不行了,这就是操作系统能力对你应用程序的制约,你在开发程序的时候必须要考虑到这一点。你的操作系统能不能提供一些精度,这个对于时间非常敏感的都会很重要,这个就得看措施系统能不能做到这一点。

然后就是你操作系统有没有多任务,是不是能够后台运行,这个非常重要。对iOS来说,苹果允许你的多任务可以。最新的iOS5里面有一个新闻类的可以,这几种是苹果允许你多任务的几种应用,除此之外,你没法在后台运行。假设你要设置一个程序,必须要不断的个外界通讯,获取信息,在iOS上就很难办。反过来,Android的这方面,对Android来说,他允许后摆的任务存在,你可以社一个程序后台跑。那么,这两个有差异。

操作系统的限制,就是说操作系统哪些事情能让你做,哪些不让你做。比如iOS里面有限制,iOS提供了你通信录接口,但是他不允许你访问短期数据。相反,Android这方面很宽松,你都可以读得到这些东西,他对访问的限制,没有iOS那么严格,这一点对你开发的程序,在这方面也有一个选择。那么就是在安全性和隐私。

举个例子,前两天有人问我iOS能不能读取通讯录里面的数据,我说可以。他又说,需要不需要人确认,我说许多。那个人就说,这方面居然没有,他觉得这方面很重要,他觉得通信录的数据是很隐私的东西。这方面其实就是一些很敏感的,包括短信数据或者说通话数据,都是属于隐私的。有些系统,iOS限制的比较严格,而Android这都可以。这有时候就会造成一些隐私泄露的问题,在国内通常不太关注这方面的东西。

除了操作系统之外,再开发应用程序,从技术深考虑还有一个问题,设备本身有什么样的能力。最主要就是计算能力,我这个设备够不够快,图形能力,我这个设备有没有图形加速,对于iOS设备来说,没有这个问题,都是苹果帮你确定好这个规格,你的应用程序绝对跑在这个上面。对于Android肯定不一样了,各个厂商生产的不同的设备,他很有可能千差万别,CPU的快慢,图形加速的能力千差万别。这个也是在做技术路线选择的时候考虑到的一个问题。还有考虑的问题就是各种数据采集设备,其实我们所有手机上目前有的一些GPS也好,这些都可以称为数据采集设备。这些数据都可以加以利用,现在很多,比如说LBS,这些都是使用这些数据得到的,延伸出来的一系列应用。

同样是这样,在iOS设备上都不存在这些问题,因为苹果上已经有了。

然后,就要说到分辨率和键盘,这个iOS也不成问题,他就是两种,一个就是iPhone的大小,一个就是iPad的大小。对于Android来说,这就是千差万别,有的有键盘,有的没有键盘。下面一个,CPU指令级的差异,这也是一个需要注意到的差别。就从iOS设备来说,从iPhone4开始的,iPad2,这些设备,他的指令级清一色的都是IMV7,而在之前都是IMV6。这个其实对应用程序的开发有一些影响,特别是对CPU处理能力要求非常高的程序,比如说同样一个程序,用7的指令级可以跑的比6很快。

云端的服务:目前的应用都跟云端密不可分。在我们设计应用程序的时候,就需要考虑云端能够体规什么样的务。或者我们可以把哪些功能放到服务器上做。举个例子,谷歌的应用,可以语音搜索的那个应用,就是一个很明显的例子。我采集语音,这个事儿是手机上做的。那么整个语音识别的东西都上传到谷歌上,在现在这个条件下,这个已经可以做到非常好的体验了。那么,目前我们在考虑一个应用程序的时候,必须考虑哪一部分可以放到云端去做。然后你的哪一部分东西由本地来做,这个东西要写,相对来说,可以考虑的比较清楚,既利用到了远端的服务,又应用到了设备的能力。一旦应用到云端的服务,就涉及到一个贷款。随着说3G会好一点,但是如果是Android就会对贷款比较窄,那么,您的服务是不是上传量很大,这个贷款也是非常重要的需要考虑的问题。如果贷款非常大,那么这个作为一个移动设备商的应用程序来说,有可能不是很合适,或者把贷款降低的比较小一点。

说到云端服务,最后一个问题就是我自己建一个服务,还是利用现有的云端服务。比如天气预报,我自己建一个还是利用一个公开的服务,这都是有问题的。你用第三方的东西有可能要付出一定的代价,要花钱,或者买使用权。但是,相对来说,你可以不用担心服务器那端的问题。这方面都是有利有弊,需要做一个很仔细的考虑。

那么,对于平台本身的考虑,这里是讲的操作系统以外的那部分东西,平台本身的市场比例。我们大家都愿意为市场占有率大的去开发,目前来说就是iOS跟Android。这个是一个很重要的考虑因素。这个平台是不是发展到第几个版本了,有多少应用程序在上面了,这个是体现平台的一个成熟度。那么,平台本身,是否有成熟方便的分发方式,目前来对iOS说就是App Store,对Android来说,就有很多,比如说Android市场,国内的应用程序商店,目前不下70家,你到哪儿拿到合适的应用,这都是一个问题。

支付方式:支付是不是很方便,通过什么样的方式去购买一个应用,这边说的都是付费的。那么,对于苹果的App Store来说,原来对国内用户或许有一些障碍,因为他只接受美元信用卡付款。但是,就前几天,中国区的接受人民币付款,这是一件很好的事情,无论对苹果来说,对于整个移动应用的产业来说都是好的事情,至少我们目前可以用非常方便的方式付款,买应有程序也非常方便,这样使得国内用户购买应用,和国外已经处在一个平等的地位了。这个无论对平台本身来说,或者对应用开发者来说,都是非常有利的。

在设计应有的时候,还要的一个问题就是你到底准备做一个本地应用,还是做一个网络应用?做本地应用,就是说我这个应用程序可以不需要借助网络,就可以做我想做的事情。比如说我可以在手机上记帐不上传到网络上,我的应用的范畴就在这个手机里面,本地应用有他的优势。他的优势就是可以充分的发挥本地的处理能力,或者说甚至他在有网络连接的时候,可以跟服务器端结合起来,做一个事情,但是还是在本地做的。这是本地应用的一种典型方式,他的优势在于我即使没有网络连接,用户仍然可以做他想做的事情。

那么,向比较,网络应用来说,他的劣势是什么,就是我的整个应用都是放在Web上面的。首先本地应用开发过程很长,上架的过程更长。网络应用不存在这个问题,直接在服务器修改,马上用户就可以看得到,这点相对来说,就应用的更新来说,本地应用比起网络应用还是有劣势的。那么他的劣势首先与你浏览器所能表现的东西。比如HTML5,但是他在本地以及用户体验上还是有一些差别。从比较技术一点的话来说,网络应用没法能够充分的利用到本地的设备能力,比如利用到本身的加速测量仪。目前的态势,本地应用和网络应用是一个长期共存的过程。

代码:开发人员很关心的还是代码,代码的重用,其实涉及到我们要考虑不同的平台。同样的应用,很有可能我做了一个应用,我希望尽可能的把他移植到更多的平台上,那样我就可以接触到更多的用户,那么这时候就会考虑到一个代码重用的问题,最好是我写的代码不浪费,而且在稳定了可以很方便的移到另外一个平台上。另外一个,就是我做了基础代码在不同的应用之间重用。另外一种最重要的一种应用方式,就是所有的代码都在云端,就是我刚才所说的网络应用,或者Web应用。反正现在各个设备商都有很的浏览器,能够很好的支持新的Web标准,我放到Web端也是一种重用的方式。

在这些重用的过程,当然尽可能的增加代码的重用程度,让重复写的代码更少,但是也要考虑到,哪些东西是需要重用的。就我目前的感觉来说,我觉得比较适合重用的代码是核心的逻辑跟用户层相对没什么太大关系的这些东西,尽可能的重用。而对用户层的表现,用来展现出这个应用的方式,最好还是用跟这个平台实际相关的东西写,那样会使得你的应用更好的融入到这个平台当中,跟这个平台的一致性更好,或者更能够体现出这个平台本身的一个表现能力。

跨平台:现在已经有很多人在做跨平台的开发工具或者开发包,大都是都是以HTML5做。这种做法,一般都是让你可以用HTML5写你的应用,他提供了跟各个系统之间适配层,然后可以使得你写的这些东西可以在每一个平台上跑。他的优势在于,HTML5写代码,我觉得业界有很多人觉得,用HTML5,Javascript比别的门槛要低,但是我没有这种想法。他的劣势第一个还是我刚才所提到的,有可能他会用不着本地的一些能力,现在这些框架可能很多都考虑到了本地应用的能力。但是,经过一个适配层,有一些东西会有一些损失,特别是对于界面上的东西,界面上的一些效果,或者处理能力上来说都会有一些损失,或者性能达不到要求。

我前一阵看一个朋友做的一个东西,写了一个iOS的应用,他的应用的里面有很多View,都是直接从Web上来的,自己做了一个简单的适配层,通过浏览Web这个上面截取一些事情,使得他可以跟本地的viwe结合在一起,很好,他做了这么一个东西之后,他可以修改服务器上的东西,就可以使得这个上面显示出不同的东西。但是,有一个问题,在PC上跑的很好,但是在手机上,明显速度有点更不上。这就出现了一个你利用HTML5这种方式写程序优的一个弱点就是你移动设备的处理能力,不一定能够跟得上写出来的这些代码要求的处理能力,这是目前来说,所看到的用HTML5进行开发的一个需要面临的一个问题。

跨平台这个问题是见仁见智的。如果前面说到的使用HTML5开发的应用,如果你可以判断得到,自己能够很好的对移动设备商的浏览器做适配,有可能他不需要处理的很那个,或者说对本地设备本身的能力要求不是很高,可以用跨平台做,这个毕竟可以减少很多的开发成本。但是,如果你的应用需要跟平台结合的很好,或者我需要有一个稳定处理能力的应用,我觉得还是写本地的比较好。

那么,话说回来,最近有一个思潮,他们觉得HTML5是我们未来的发展方向,或者换句话说叫HTML5,必将一统天下,就跟前几年说的WEB必将一统天下一样。就我个人看,我觉得这个东西,任何一样东西,无论你多么先进,多么好,你想一统江湖的可能性是没有可能的,总是会有一些不一样的东西存在。而且我相信跨平台的东西跟平台紧密相关的东西,永远都会并列存在,也会永远有人去做跨平台的努力。这个跟当年我们写桌面程序的时候是一样的,大家写桌面程序的时候,都曾经想过跨平台,我有一个框架,PC上可以跑甚至Linux、Unix上面都可以跑,我也考虑到这样的问题。但是,到最后,这些跨平台的问题,都没有成为非常主流的东西。为什么?大家觉得,各自平台的特性对于你的应用程序有可能会非常重要。你一个iPhone程序,跟一个Android的程序,如果把他做的一模一样,这两者你用一个跨平台的东西,很有可能做出来既不像iPhone的程序,也不像Android的程序。

用户体验:这个说跟技术有关也有关,说无关也无关。说有关,因为这些都是根据你用户体验来实现的,比如说用户界面的响应速度。现在对于一个手持设备来说,用户体验方面的重视已经远远比当年桌面软件上要重视的很多,平板程序,必须具备一个良好的用户体验。其实我看过很多iPhone上的程序,多的非常的花哨,有很多图片,很多效果,非常多的动画。但是,这个程序其实并不好用。用户体验并不是花哨,而是怎么样让用户能够最方便的使用。

另外一个就是用户体验这个东西,不能够喧宾夺主,你还是要非常清楚的意识到,我的目的就是让用户更方便的使用这个程序,而不是说为了用户体验而用户体验。

最后一点就是测试,对于不同的机器,在不同的网络环境下,不同的运营环境下做测试。还有一些就是在极端情况下测试也必须做得到。一个手持设备的处理能力,虽然现在内存也变得很大,他有限制,这个限制会比PC更厉害。那么,就是说我们在写这个应用的时候,必须要考虑到我的CPU处理能力不会不够,我需要怎么样的处理能够才能达到我这个效果。内存不够的时候怎么办,内存紧张的情况下应该怎么处理,这是对iOS程序来说,这一点非常明显。就是说,在iPhone上面,每一个应用程序所能够使用的内存是有限度的。在最早的时候,iPhone一代的时间,总的内存是128M,一个应用程序所用的内存是10M,超过他就会崩溃。

我看到多很多iPhone、Android上的应用程序都会崩溃,所以对测试人来说,你必须要做到,处理CPU处理能力跟不上的时候怎么办?这一点在PC上有可能没有这种问题,但是在手机上,这个问题会非常明显。我今天基本上就讲到这里,讲了目前的一些平台,各个平台有一些什么样的特点。以及我们在设计应用程序的时候考虑的一些问题。谢谢大家。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多