1. 首页 > 站长

在“克隆”优步 App中,我学到了什么

  一个山寨优步APP的全过程

  编者按:一群搞事情的程序猿山寨优步的APP,他们想干啥呢?一起来看一下吧。

  

在“克隆”优步 App中,我学到了什么(图1)

 

  去年,我创办了Codename One Academy,询问我们的团队他们想学些什么。他们的反应倾向强烈,纷纷表示想学学怎么做出来优步这样的APP。一开始我想以优步的风格创造点什么出来,不过最后决定建立一种跟原生APP的看上去非常接近的东西,某种程度上来说几乎一模一样。我的动机在于:

  我想让设计看起来更专业一点,跟着市场上排名一等一的公司的设计总没错;

  通过了解优步的决策,人们可以学到很多东西——我知道我做到了;

  要是一开始我能创造一些与众不同的东西,那我可能给自己带来不可估量的收益。当然,这在现实世界中并不存在。

  我用“克隆”一词来表明这种相似度,但绝不意味着跟它跟优步做的一模一样。优步的APP无所不包,在细枝末节上也见得功夫,而我只有一个星期的时间来写所有相关的适用代码……我的目标就是搭起框架来,至于细枝末节,实在是鞭长莫及了。

  太长不看版

  我有这样一些心得:

  优步的安卓和iOS版本是同一批人做的;

  安卓版本修复了某些bug,而iOS没有;

  尽管安卓和iOS版本有着几乎一样的用户界面,但有一项功能安卓没有iOS却有;

  安卓版本的优步不适用原生短信拦截;

  优步重功能甚于形式;

  对像优步这样的应用来说,迅速做出改变和设计决策的能力很重要;

  巧妙借助现有工具,做出像优步那样的APP真的不难。

  我学到了什么?

  我也没想着要学到很多东西,不过确实了解了一些令我倍感惊讶的事情。其中之一就是优步在iOS系统中的原生APP中,大量使用的原质化设计(material design)。比如:

  

在“克隆”优步 App中,我学到了什么(图2)

 

  优步在iOS系统的原生应用

  你可注意了,这看起来与安卓版本的APP几乎相同。主要的安卓交互界面元素一应俱全:悬浮按钮、原质化设计文本输入、箭头返回键……

  安卓版本的看着确实和iOS版本一模一样啊!

  我一直都以为原生的小部件是通过营造熟悉感来提高参与度的。但其实陈和我一直就这个问题在争论不休,我更推崇“系统原生感”,不过陈更倾向于所有的平台上用户界面都一致。

  看来优步是站在陈这一边的了。毕竟它在安卓系统和iOS系统的用户界面设计都出差不多。

  仔细想想这也挺有道理,凡事做一遍就行了。你看它们一套班子可以挂两块牌子。只要整个APP都看着正儿八经,直觉什么的都没毛病。

  在安卓2.x和iOS6.x这俩操作系统之间的鸿沟大到几乎不可逾越的日子里,在安卓系统的APP里,左上角有一个退出键简直是冒天下之大不韪…

  不过现在,即使你不用什么跨平台工具,两者的趋同也能带来不少收益。

  切换样式仍有不同

  我不知道这是否是有意为之,但是安卓和iOS系统的优步软件的切换方式还是全然不同的。安卓版本版本使用了原质化设计的切换(但我貌似看不出一种主切换方式),相比之下,iOS则表现为覆盖和滑动。

  倘若这是刻意而为,那可能说明“感官”居“直观”之上风。我猜他们对此并没有给予足够的关心,不过究竟如何就难以确定了。

  漏洞问题

  这是安卓系统中,优步的登录界面。

  

在“克隆”优步 App中,我学到了什么(图3)

 

  安卓登录界面

  同样的界面在iOS系统里看上去差不多,但是存在渲染漏洞。

  

在“克隆”优步 App中,我学到了什么(图4)

 

  iOS版本登录界面的渲染漏洞

  以防你没发现这个bug,我再提醒一下,是在“请输入你的手机号码”等字样那里出了问题。

  优步的肯定做了大量的优化工作,但还是出现了bug,我猜测应该是因为他们太naive,不知道还有国家的国际代码是三位数吧。安卓版本(和我们的山寨版本)处理地都很好,可能是因为安卓在全球比较流行,所以漏洞被修复了吧。

  不过针对安卓版本的修复并未移植至iOS版本。

  有些功能安卓没有

  如果你用的是iOS版的优步,你会发现登录界面背景图案的变换,这给人一种赏心悦目的感觉。

  所以我就很好奇为什么它们在安卓版本中不也这样……我怀疑可能是工程师人手不足吧。

  针对这个问题,我研究了一阵子,发现了原因,其实还挺明显的,因为矢量图形出了点问题,如果运行那样的变换程序,软件就会报错:

  “OpenGLRenderer: Path too large to be rendered into a texture”

  “路经过大,无法渲染。”

  我发现唯一的解决办法就是通过绘制新图像来禁用硬件渲染。

  糟糕的是想问题出在哪儿还真不容易。渲染路径不会引发异常,只是无法显示。所以我不能退回软件渲染,也不知道路径中究竟出了什么问题。

  是坐标出界还是坐标数据有误?

  而研究与之相关的安卓代码,也没有多大帮助。

  不过不管怎么说,几乎一样的用户界面,有一项功能安卓没有iOS却有,总让人有点不爽。

  安卓的短信服务不会被拦截

  我最喜欢安卓的一点,是你可以作为开发人员进行低层次的控制。不过这是一把双刃剑,但在某些情况下它好处明显……

  一个很好的例子就是短信拦截支持,在注册或登录某个软件时,用户需要接收短信验证码,而安卓系统本身就可以读取信息并自动填写到验证码输入框内,可以省去人工输入的步骤。

  但是优步并不可以这样做。它没有使用安卓的这一功能。

  似乎优步这些年因为需要“太多许可”饱受诟病,可能是因为他们只关心系统允不允许打电话的吧……

  我不知道它是否适用于应用程序编程接口。反正我在我们的山寨版本中添加了这个功能,然后安卓版的注册省事了不少。

  只能竖屏的APP

  手机是我的私人物品,我喜欢可以横屏的APP,然而优步只能竖屏使用。

  我也理解他们为啥坚持竖屏。支持横屏意味着非常非常大的工作量,就比如说吧,我上文提到的登录界面bug在横屏情况下又可能是另外一个样子,需要重新设计。

  以上这些我觉得很明显地表明优步比起形式来更重功能。它们略去横屏支持,直击目标。我可以理解这一点。

  它们改变良多

  在我开始山寨优步的用户界面之前,还没有注意到它的用户界面变化有多快。比如之前的历史键,是圆形,位于屏幕底部,而现在,交互手势改成了搜索区域下拉。

  对优步这样的APP来说,迅速做出改变和设计决策的能力是至关重要的。

  用最少的选项提供最多的服务

  当然,我并不是一丝不苟地设计了整个APP,90%的工作都基于谷歌的一些应用。

  我使用了谷歌地图和一些网页服务(方向、位置、地理编码),还使用Twilio和Braintree分别进行短信和计费功能。有了这些,我才可以在不到一个星期的时间里就能做出优步的大部分功能!

  巧妙借助现有工具,做出像优步那样的APP真的不难。

  主要的问题在于你能在跨平台工具之上使用何种级别的API支持。

  

在“克隆”优步 App中,我学到了什么(图5)

 

  安卓版本的优步和我的山寨版

  对优步的工程师们,我有着无限的敬仰,能做出这样复杂的应用颇为不易。

  我认为创新的确是创造新事物,但并不意味着非得是全新的事物。我们改进上一代事物使之日臻完善,就像简单地构建出一个山寨优步APP的全过程。日后我们会看到更为优秀的应用。

  原文地址:本文发表于Hackernoon,题目What I Learned from Cloning the Uber App

  原文作者:Shai Almog

  译者:喜汤,由36氪编译部出品。编辑:郝鹏程

  译文地址:http://36kr.com/p/5115830.html

  题图来源于网络

声明:OurSeo登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,请读者仅作参考,并请自行核实相关内容。如有侵权请联系我们,会及时删除,如若转载请注明出处。

联系我们

在线咨询:点击这里给我发消息

微信号:wutian08

工作日:9:30-18:30,节假日休息