在“克隆”優步 App中,我學到了什么

1 評論 6574 瀏覽 9 收藏 11 分鐘

一個山寨優步APP的全過程

編者按:一群搞事情的程序猿山寨優步的APP,他們想干啥呢?一起來看一下吧。

去年,我創辦了Codename One Academy,詢問我們的團隊他們想學些什么。他們的反應傾向強烈,紛紛表示想學學怎么做出來優步這樣的APP。一開始我想以優步的風格創造點什么出來,不過最后決定建立一種跟原生APP的看上去非常接近的東西,某種程度上來說幾乎一模一樣。我的動機在于:

  1. 我想讓設計看起來更專業一點,跟著市場上排名一等一的公司的設計總沒錯;
  2. 通過了解優步的決策,人們可以學到很多東西——我知道我做到了;
  3. 要是一開始我能創造一些與眾不同的東西,那我可能給自己帶來不可估量的收益。當然,這在現實世界中并不存在。

我用“克隆”一詞來表明這種相似度,但絕不意味著跟它跟優步做的一模一樣。優步的APP無所不包,在細枝末節上也見得功夫,而我只有一個星期的時間來寫所有相關的適用代碼……我的目標就是搭起框架來,至于細枝末節,實在是鞭長莫及了。

太長不看版

我有這樣一些心得:

  • 優步的安卓和iOS版本是同一批人做的;
  • 安卓版本修復了某些bug,而iOS沒有;
  • 盡管安卓和iOS版本有著幾乎一樣的用戶界面,但有一項功能安卓沒有iOS卻有;
  • 安卓版本的優步不適用原生短信攔截;
  • 優步重功能甚于形式;
  • 對像優步這樣的應用來說,迅速做出改變和設計決策的能力很重要;
  • 巧妙借助現有工具,做出像優步那樣的APP真的不難。

我學到了什么?

我也沒想著要學到很多東西,不過確實了解了一些令我倍感驚訝的事情。其中之一就是優步在iOS系統中的原生APP中,大量使用的原質化設計(material design)。比如:

程序員“克隆”優步 App,發現了這些隱藏的產品細節

優步在iOS系統的原生應用

你可注意了,這看起來與安卓版本的APP幾乎相同。主要的安卓交互界面元素一應俱全:懸浮按鈕、原質化設計文本輸入、箭頭返回鍵……

安卓版本的看著確實和iOS版本一模一樣?。?/p>

我一直都以為原生的小部件是通過營造熟悉感來提高參與度的。但其實陳和我一直就這個問題在爭論不休,我更推崇“系統原生感”,不過陳更傾向于所有的平臺上用戶界面都一致。

看來優步是站在陳這一邊的了。畢竟它在安卓系統和iOS系統的用戶界面設計都出差不多。

仔細想想這也挺有道理,凡事做一遍就行了。你看它們一套班子可以掛兩塊牌子。只要整個APP都看著正兒八經,直覺什么的都沒毛病。

在安卓2.x和iOS6.x這倆操作系統之間的鴻溝大到幾乎不可逾越的日子里,在安卓系統的APP里,左上角有一個退出鍵簡直是冒天下之大不韙…

不過現在,即使你不用什么跨平臺工具,兩者的趨同也能帶來不少收益。

切換樣式仍有不同

我不知道這是否是有意為之,但是安卓和iOS系統的優步軟件的切換方式還是全然不同的。安卓版本版本使用了原質化設計的切換(但我貌似看不出一種主切換方式),相比之下,iOS則表現為覆蓋和滑動。

倘若這是刻意而為,那可能說明“感官”居“直觀”之上風。我猜他們對此并沒有給予足夠的關心,不過究竟如何就難以確定了。

漏洞問題

這是安卓系統中,優步的登錄界面。

程序員“克隆”優步 App,發現了這些隱藏的產品細節

安卓登錄界面

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

程序員“克隆”優步 App,發現了這些隱藏的產品細節

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

以防你沒發現這個bug,我再提醒一下,是在“請輸入你的手機號碼”等字樣那里出了問題。

優步的肯定做了大量的優化工作,但還是出現了bug,我猜測應該是因為他們太naive,不知道還有國家的國際代碼是三位數吧。安卓版本(和我們的山寨版本)處理地都很好,可能是因為安卓在全球比較流行,所以漏洞被修復了吧。

不過針對安卓版本的修復并未移植至iOS版本。

有些功能安卓沒有

如果你用的是iOS版的優步,你會發現登錄界面背景圖案的變換,這給人一種賞心悅目的感覺。

所以我就很好奇為什么它們在安卓版本中不也這樣……我懷疑可能是工程師人手不足吧。

針對這個問題,我研究了一陣子,發現了原因,其實還挺明顯的,因為矢量圖形出了點問題,如果運行那樣的變換程序,軟件就會報錯:

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

“路經過大,無法渲染?!?/p>

我發現唯一的解決辦法就是通過繪制新圖像來禁用硬件渲染。

糟糕的是想問題出在哪兒還真不容易。渲染路徑不會引發異常,只是無法顯示。所以我不能退回軟件渲染,也不知道路徑中究竟出了什么問題。

是坐標出界還是坐標數據有誤?

而研究與之相關的安卓代碼,也沒有多大幫助。

不過不管怎么說,幾乎一樣的用戶界面,有一項功能安卓沒有iOS卻有,總讓人有點不爽。

安卓的短信服務不會被攔截

我最喜歡安卓的一點,是你可以作為開發人員進行低層次的控制。不過這是一把雙刃劍,但在某些情況下它好處明顯……

一個很好的例子就是短信攔截支持,在注冊或登錄某個軟件時,用戶需要接收短信驗證碼,而安卓系統本身就可以讀取信息并自動填寫到驗證碼輸入框內,可以省去人工輸入的步驟。

但是優步并不可以這樣做。它沒有使用安卓的這一功能。

似乎優步這些年因為需要“太多許可”飽受詬病,可能是因為他們只關心系統允不允許打電話的吧……

我不知道它是否適用于應用程序編程接口。反正我在我們的山寨版本中添加了這個功能,然后安卓版的注冊省事了不少。

只能豎屏的APP

手機是我的私人物品,我喜歡可以橫屏的APP,然而優步只能豎屏使用。

我也理解他們為啥堅持豎屏。支持橫屏意味著非常非常大的工作量,就比如說吧,我上文提到的登錄界面bug在橫屏情況下又可能是另外一個樣子,需要重新設計。

以上這些我覺得很明顯地表明優步比起形式來更重功能。它們略去橫屏支持,直擊目標。我可以理解這一點。

它們改變良多

在我開始山寨優步的用戶界面之前,還沒有注意到它的用戶界面變化有多快。比如之前的歷史鍵,是圓形,位于屏幕底部,而現在,交互手勢改成了搜索區域下拉。

對優步這樣的APP來說,迅速做出改變和設計決策的能力是至關重要的。

用最少的選項提供最多的服務

當然,我并不是一絲不茍地設計了整個APP,90%的工作都基于谷歌的一些應用。

我使用了谷歌地圖和一些網頁服務(方向、位置、地理編碼),還使用Twilio和Braintree分別進行短信和計費功能。有了這些,我才可以在不到一個星期的時間里就能做出優步的大部分功能!

巧妙借助現有工具,做出像優步那樣的APP真的不難。

主要的問題在于你能在跨平臺工具之上使用何種級別的API支持。

程序員“克隆”優步 App,發現了這些隱藏的產品細節

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

對優步的工程師們,我有著無限的敬仰,能做出這樣復雜的應用頗為不易。

我認為創新的確是創造新事物,但并不意味著非得是全新的事物。我們改進上一代事物使之日臻完善,就像簡單地構建出一個山寨優步APP的全過程。日后我們會看到更為優秀的應用。

 

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

原文作者:Shai Almog

譯者:喜湯,由36氪編譯部出品。編輯:郝鵬程

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

題圖來源于網絡

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!