小米大咖講述:從100到2億+用戶,MIUI的發(fā)展、創(chuàng)新故事
2020-09-02 17:09:05
一、MIUI發(fā)展歷程回顧
早期的 Android 系統(tǒng)非常難用,界面也很丑陋,與同時代的 iOS 差距非常明顯,當時 Android 主要精力還是在完善系統(tǒng)本身,因此也基本沒有考慮過中國人的本地化需求。所以在當時,做一款定制化的 Android 系統(tǒng),易用、漂亮、更符合國人的需求,在用戶側(cè)還是有非常大呼聲的。
MIUI 就是在這樣的背景之下誕生的。
2010 年 8 月 16 日正式發(fā)布了第一個版本,當時找了 100 個內(nèi)測用戶,都是發(fā)燒友,率先將手機刷成 MIUI,深度使用、全方位吐槽、提各種意見建議。后來我們還拍了一部微電影,叫《100 個夢想的贊助商》,向最初的這部分發(fā)燒友和所有一直以來支持我們的米粉們表達敬意和感謝。
MIUI 的整個理念也是從那個時候就形成的,沿用至今,即“和用戶做朋友”,真正去貼近和了解用戶,從各個渠道傾聽真實用戶的看法。其中有一個很重要的渠道是 MIUI 論壇,論壇上都是發(fā)燒友,大家互相交流各種玩機經(jīng)驗,而 MIUI 甚至小米幾乎所有人也都在論壇上,經(jīng)常和發(fā)燒友們一起交流,解答問題,同時征詢大家的各種看法。
比如,在做很多功能之前,我們都會去論壇上問大家的意見,根據(jù)收集回來的信息,再做方案上的調(diào)整。功能發(fā)出去之后,繼續(xù)在論壇上收集大家的吐槽,然后再快速迭代改進。
這里就提到了 MIUI 的另一大特點——每周發(fā)版,以前稱其為“橙色星期五”,這樣做的好處在于:用戶可以第一時間用到最新功能;如果不滿意,馬上吐槽,我們很快迭代方案,小步快跑,快速試錯。
這樣做得到了非常好的效果,所以那時大家說 MIUI 非常好用就不難理解了——因為 MIUI 的很多功能都是直接來自于真實的用戶需求,而且根據(jù)用戶的反饋修改無數(shù)遍,最終的效果自然會讓更多的人滿意。
回顧 MIUI 從 100 個用戶發(fā)展到今天的 2 億多用戶,期間變化非常大,其中兩個方面感觸比較深:
一個是人數(shù)上的變化,最開始人很少,研發(fā)人員只有 20 個左右,后來總體人數(shù)逐步發(fā)展到 1000 多,這個影響很深遠。一方面可以做更多的事情了,MIUI 在過去 8 年期間發(fā)布了 9 個大版本,幾百個小版本,包含了無數(shù)的功能,很多以前沒有足夠精力做的事情,也一點點做起來和完善了。另一方面,可以把事情做得更好了,以前可能只能達到 80 分的,現(xiàn)在可以做到 95 分,甚至向 98 分 100 分努力,無論是功能細節(jié),還是技術(shù)實現(xiàn),以及性能、穩(wěn)定性、功耗等等,每一點的提升,背后都是大量的人力投入。
另一個是模式上的細分,最開始 MIUI 面向的都是發(fā)燒友用戶,都是很資深的玩家,動手能力強,對新功能很渴望,對 bug 容忍度高,所以快速試錯、每周升級對所有用戶都非常適合。但當用戶規(guī)模已經(jīng)是 2 億以上時,對全部用戶都這么做就不再適合了,功能也需要做更多的權(quán)衡。MIUI 在此做了很多事情,比如細分了體驗版、開發(fā)版、穩(wěn)定版,版本的發(fā)版頻率和功能取舍都是針對相應(yīng)的人群專門制定的,因此發(fā)燒友與普通用戶才都能通過合適的版本滿足自己的需求。
二、MIUI 的持續(xù)創(chuàng)新
MIUI非常注重創(chuàng)新,產(chǎn)品創(chuàng)新、技術(shù)創(chuàng)新等,在內(nèi)部都是受到極大鼓勵的,大家都勇于做各種層面的探索和嘗試,最終也達到了比較好的效果。一方面推出了很多業(yè)界首創(chuàng)的功能和技術(shù),另一方面,也使得很多已有的功能和技術(shù)變得更加好用。
這方面的例子很多,舉兩個我當時參與和負責(zé)的項目作為例子吧:
主題
電腦和前智能手機時代,主題換膚還是一個比較普遍的功能,但是到了 iOS 和 Android 上,這個功能弱化了,只支持更換壁紙和鈴聲等非常簡單的個性化設(shè)置。但手機是私人物品,使用時間又長,用戶需要更多彰顯個性的能力。MIUI 應(yīng)該是最早涉足 Android 系統(tǒng)級換膚能力的 ROM,當時有兩個方面的創(chuàng)新:
一個是功能側(cè),MIUI 可定制項非常多,不僅支持壁紙、鈴聲、圖標、字體等單項的更換,同時還支持系統(tǒng)應(yīng)用和第三方應(yīng)用的界面素材更換,另外還有百變鎖屏、自由桌面等非??犰诺墓δ埽踔吝€支持多套主題拆開混搭使用。
另一個是技術(shù)側(cè),MIUI 很早就開始深入研究 Android 的應(yīng)用資源管理機制,在此基礎(chǔ)之上率先做出了能更換所有應(yīng)用資源的技術(shù)方案,后來很快又做到了更換主題后不需要重啟手機,全部效果就都能生效的體驗。而百變鎖屏技術(shù)框架在當時的 Android 上也是十分先進的,可以讓設(shè)計師很容易就寫出酷炫的動畫和交互,同時還能保證整個渲染的效率,以及很小的功耗代價,當時甚至還有人在百變鎖屏上開發(fā)和運行小游戲。
MIUI SDK
MIUI 發(fā)展到今天,已經(jīng)可以在非常多的 Android 版本和底層平臺之上運行了,但這些背后,需要的是大量的移植和適配工作,不僅僅是 BSP 側(cè)的工作,MIUI 對于 Android 的改動,也都需要做機型適配。隨著 Android 版本和機型越來越多,如何能夠做到快速適配,就變成一個急需解決的問題了。以前 MIUI 對于 Android framework 的改動,基本是通過直接改代碼的形式實現(xiàn)的,這些都是移植成本。
為了降低這部分成本,我們提出了一個新的思路,將一部分代碼剝離獨立出來,形成一個 apk,叫做 MIUI SDK。
這個并沒有什么特別的,但 MIUI SDK 還做了另一件事:很多改變 Android framework 的行為,不再需要直接改代碼了,而是可以通過運行時動態(tài) hook 的方式,將原始行為覆蓋掉。
說到這里,可能很多 Android 玩家馬上想到了 Xposed,最基本的原理的確比較類似,但是實際應(yīng)用過程中會遇到很多問題。
一個最大的問題是:Android 從 5.0 開始,正式切換為 ART 虛擬機。以前的 dalvik 虛擬機做動態(tài) hook 相對容易,方案也比較成熟,但是 ART 的原理完全不一樣,因為使用了 AOT 的方式,在安裝應(yīng)用時直接編譯成機器碼,因此之前的技術(shù)方案完全不能使用。
Xposed 的思路是將 ART 虛擬機替換成一個修改過的版本,這樣可以配合上層框架做些工作。但是這個思路對于 MIUI 來說不是好的選擇,因為這實際上是將移植成本從 framework 轉(zhuǎn)移到了 ART 側(cè)。
MIUI 實際的做法是:通過對 ART 大量的調(diào)研工作,在 5.0 正式推出后很短的時間,就支持了動態(tài) hook,這可能是第一個支持在 ART 上動態(tài) hook 的技術(shù)方案,并且更關(guān)鍵的一點是,這套方案并沒有修改 ART 相關(guān)的任何代碼,最終和 dalvik 時做 hook 的效果基本一致。這套技術(shù)方案和相關(guān)的研究,不僅可以應(yīng)用在機型移植和類 Xposed 的功能上,還可以應(yīng)用在代碼熱修復(fù)、AOP 編程等很多領(lǐng)域。
三、未來移動端 OS 的展望和探索
這個話題比較大,沒有誰能一下子說得清楚,更很難預(yù)測準確,我對這件事情的理解也并不深,個人認為有兩個可能的方向:
深挖用戶體驗
用戶對移動端 OS 的訴求和 PC 端是不太一樣的,傳統(tǒng) PC 端 OS 大部分情況下只需要提供狹義上 OS 的能力,加上一些簡單的工具和管理軟件即可,其他需求可以使用第三方軟件來滿足。
但移動端卻不太一樣:
一方面,很多重度應(yīng)用是開箱必備的,一臺手機開箱后沒有相機、撥號、短信等應(yīng)用肯定是無法想象的,而且這些應(yīng)用都是用戶經(jīng)常使用的。
另一方面,現(xiàn)在手機軟硬件一體化程度很高,很多功能如果 OS 不提供,很難有第三方應(yīng)用能作為替代實現(xiàn)的。所以在這樣的背景下,移動端 OS 一定需要把這些應(yīng)用以及其他系統(tǒng)層面的交互做得更好。
目前大部分 ROM 在這方面都已經(jīng)很不錯了,但是還沒有觸到天花板,大的功能點差不多的前提下,后面拼的就是細節(jié)了,如何把體驗從 80 分提升到 95 分,從 95 分提升到 98 分,每一步都是巨大的工作量和挑戰(zhàn)。
通過新的形態(tài)提升效率
提升效率是絕大多數(shù)技術(shù)革命不變的核心之一,OS 也是這樣,比如提升資源的利用效率,但我這里說的,主要是對用戶操作的效率提升。如何將用戶的操作化繁為簡,是一個 OS 應(yīng)該去思考的問題,MIUI 在這方面也做了很多的探索,我舉幾個例子:
負一屏
移動端傳統(tǒng)的使用方式還是先打開應(yīng)用,然后在應(yīng)用內(nèi)使用服務(wù),或者閱讀內(nèi)容,但用戶關(guān)心的不是應(yīng)用,而是應(yīng)用提供的服務(wù)和內(nèi)容本身。那么如果能夠?qū)⒎?wù)和內(nèi)容前置到應(yīng)用之外,用戶無需再多一步打開應(yīng)用的過程,直接可以便捷的使用服務(wù),就能大大提高用戶側(cè)的使用效率。MIUI 在這方面做了很多探索,一個最典型的例子就是負一屏,將服務(wù)和內(nèi)容以卡片的形式鋪到桌面上,用戶直接使用即可。
傳送門
傳送門是 MIUI 9 發(fā)布會上一個重點介紹的功能,簡單來說,用戶可以在任何文字上長按,系統(tǒng)會分析這段內(nèi)容,將相關(guān)的服務(wù)在下方展現(xiàn)出來,用戶點擊即可啟動相關(guān)服務(wù)。沒有傳送門時大家的操作是這樣的:比如在某個應(yīng)用中看到一位明星的名字,想進一步了解,那么需要長按文字,選擇復(fù)制明星的名字,切換到瀏覽器,打開搜索引擎,長按粘貼文字,點搜索,才出現(xiàn)相關(guān)的服務(wù)。有了傳送門,只需要一步,即可達到相同的效果,極大的提升了用戶的效率。
直達服務(wù)
直達服務(wù)想解決什么樣的問題呢?我們可以先看看 PC 端用戶是如何使用服務(wù)的。
在 PC 端,除了游戲和部分專業(yè)軟件以外,絕大多數(shù)情況,用戶使用的都是瀏覽器,打開搜索引擎,搜索關(guān)鍵字,點擊 URL 進入服務(wù)網(wǎng)站,使用過程中可能還會通過鏈接進入到另一個服務(wù)網(wǎng)站,但整個過程是非常順暢的,不需要下載軟件,服務(wù)之間的跳轉(zhuǎn)連接也是無縫的。
但移動端卻不是這樣的,移動端服務(wù)的承載主要有兩種形式,網(wǎng)頁和應(yīng)用,分別來看:
網(wǎng)頁在移動端和 PC 端的地位有著天壤之別,原因主要有兩個:
第一,移動端會用到大量的硬件能力,比如拍照、掃碼、定位、指紋、藍牙、傳感器,等等,但是大部分能力都沒有相應(yīng)的 API 能夠讓網(wǎng)頁使用,這就意味著用網(wǎng)頁承載服務(wù)很可能并不完整;
第二,移動端的芯片能力比 PC 端還是要弱一些,但是界面的復(fù)雜性和要求卻很高,再加上前端技術(shù)的靈活性和歷史包袱,導(dǎo)致移動端網(wǎng)頁非常容易變得卡頓、慢、內(nèi)存占用高,使用體驗非常糟糕,想做到流暢需要花費很高的代價,而且依然很難達到原生應(yīng)用的效果。
而另一種承載形式——應(yīng)用——同樣有兩個很嚴重的問題:
第一,想使用服務(wù),必須先下載安裝應(yīng)用,通常有幾十兆左右,可能用戶在外面需要流量下載,可能網(wǎng)絡(luò)速度比較慢需要等待 10 分鐘以上,而等到下載安裝完了,可能已經(jīng)太晚用不上或者想不起來再用了,這中間有一個非常嚴重的斷檔等待期;
第二,應(yīng)用的孤島現(xiàn)象嚴重,即便已經(jīng)安裝了這些應(yīng)用,你會發(fā)現(xiàn),大部分應(yīng)用之間依然無法無縫銜接,取而代之的是,一個應(yīng)用中打開的是另一個服務(wù)的網(wǎng)頁,而網(wǎng)頁的體驗經(jīng)常比較糟糕,而且可能承載不了服務(wù),這就意味著用戶的操作流程可能會斷掉,需要手動切到另一個應(yīng)用繼續(xù)接下來的操作,這對于用戶來說是難以忍受的。
而孤島現(xiàn)象的另一個重要體現(xiàn)在于很難做應(yīng)用內(nèi)搜索,大部分情況用戶還是只能到各個應(yīng)用中分別搜索,而不是一個地方搜索全部內(nèi)容。
理想的移動端服務(wù)形態(tài),應(yīng)該能夠像 PC 端瀏覽器一樣的流暢體驗,具體來說,就是能夠結(jié)合移動端網(wǎng)頁和應(yīng)用的優(yōu)點,既不需要下載安裝,功能服務(wù)又完整,還能達到原生般的流暢,服務(wù)間還能無縫打通和互相索引。我們覺得這樣的服務(wù)形態(tài)應(yīng)該是未來很重要的一種形式,理應(yīng)對此進行探索,所以才有了直達服務(wù)這個項目。
直達服務(wù)本身要解決的,是用戶使用服務(wù)的效率問題,盡量拋掉多余環(huán)節(jié)和預(yù)設(shè)條件,一步直達到服務(wù)本身。
總結(jié)
MIUI 作為國人非常喜愛的一個 Android ROM,一路走來,凝聚了大量小米人的心血和智慧,也匯集了非常多米粉的意見和需求,未來 MIUI 依然會堅持從用戶出發(fā),探索更多更優(yōu)的用戶體驗和技術(shù)能力,更好的服務(wù)所有的用戶。
?
題圖來自網(wǎng)絡(luò)
作者:董紅光,小米 MIUI 系統(tǒng)框架負責(zé)人。曾就職于 IBM 中國開發(fā)中心,2010 年加入小米,目前是直達服務(wù)技術(shù)平臺、系統(tǒng)框架、系統(tǒng)工具三個領(lǐng)域和團隊的負責(zé)人