?
根據第三方的調研數據顯示,有77%的Android手機用戶(hù)承認自己曾遭遇過(guò)手機變慢的影響,百度搜索“Android 卡慢”,也有超過(guò)460萬(wàn)條結果。在業(yè)內,Android手機開(kāi)發(fā)一直有著(zhù)“越用越慢”的口碑,這個(gè)現象甚至超出了硬件范疇——很多中高端Android手機在硬件參數上都優(yōu)于同一代iPhone,但是它們仍然會(huì )在使用半年到一年的時(shí)間后進(jìn)入“欠流暢”的狀態(tài)——這無(wú)疑是一件令人困擾的事情。
然而,若是要回答這個(gè)問(wèn)題,我們需要追溯到上個(gè)世紀,去尋找智能手機的起源。
西方歷史及奇幻文學(xué)作品十分熱衷于表達“血統”的設定,其傳統文化認為血統可以決定天賦,并引出“命運是否被注定”的哲學(xué)思考。比如大家比較熟知的《哈利波特》系列,解構之后就不難發(fā)現,這實(shí)際上是一部講述格蘭芬多與斯萊特林兩支血統及其傳人的廝殺史(哈利波特是格蘭芬多的后代,繼承了其勇氣,伏地魔是斯萊特林的后代,擁有著(zhù)其野心),而無(wú)處不在的預言(一個(gè)終將殺死另一個(gè)),也貫徹了西方慣有的宿命論情結。
到了科技行業(yè),“血統”的定義被“基因”所取代,一個(gè)公司有著(zhù)什么樣的基因,決定了它的擅長(cháng)領(lǐng)域,這種評價(jià)也被廣泛接受,成為唯物時(shí)代獨樹(shù)一幟的唯心理念,并經(jīng)受住了事實(shí)考驗——當我們試圖解釋微軟失落于互聯(lián)網(wǎng)、Google敗退于社交網(wǎng)絡(luò )、百度止步于電子商務(wù)的原因時(shí),都會(huì )由衷的感慨“原來(lái)劇本早在多年以前就已經(jīng)寫(xiě)好了”。
同樣,為什么Android手機的“卡慢”問(wèn)題永遠比iPhone要更加嚴重,它的答案也從一開(kāi)始就注定了。
1965年,貝爾實(shí)驗室、通用電氣和麻省理工學(xué)院開(kāi)始合作開(kāi)發(fā)一套能夠兼顧易用性和強大性的操作系統,經(jīng)過(guò)六年時(shí)間的通力協(xié)作,貝爾實(shí)驗室的一名軟件工程師Ken Thompson在休假期間完成了一個(gè)名為Unix的系統編寫(xiě),并最終成為貝爾實(shí)驗室的母公司、美國電信巨頭AT&T的商業(yè)產(chǎn)品,并啟動(dòng)了長(cháng)達數十年的版權運作。盡管后來(lái)有著(zhù)許多變種,但是從嚴格意義上來(lái)講,Unix不是一個(gè)開(kāi)源的操作系統。
1991年,一個(gè)芬蘭的大學(xué)生、同時(shí)也是計算機黑客的Linus Torvalds,他對Unix十分著(zhù)迷,但是買(mǎi)不起運行Unix需要的工作站,所以他就嘗試自己以同樣的編程方式寫(xiě)了一個(gè)名為L(cháng)inux的操作系統,并在自由軟件之父Richard Stallman的精神鼓舞之下,將Linux加入到了自由軟件基金(FSF)當中,允許所有人使用、拷貝、修改甚至銷(xiāo)售Linux系統,同時(shí)承擔開(kāi)源義務(wù),禁止把Linux封閉化的企圖。
之所以要如此大費周章的講述Unix和Linux兩個(gè)操作系統的故事,是因為iOS系統開(kāi)發(fā)和安卓系統開(kāi)發(fā),正是分別基于Unix和Linux而衍生出來(lái)的作品。也就是說(shuō),是Unix和Linux的兩種特性,造成了iPhone與Android手機在使用體驗上的巨大差異。
喬布斯曾經(jīng)邀請Linux的創(chuàng )始者Linus Torvalds到蘋(píng)果工作,放棄Linux的開(kāi)源,協(xié)助開(kāi)發(fā)Mac OS封閉式的Mach內核,后者與喬布斯大吵一架之后明確表示拒絕。而從Mac OS開(kāi)始,蘋(píng)果就將操作系統的私有化視為企業(yè)戰略,用喬布斯的話(huà)來(lái)講,他是將iOS裝進(jìn)了iPhone這個(gè)盒子里,然后賣(mài)給了用戶(hù)。所以,iPhone之所以不會(huì )出現“越用越卡”的情況,是因為蘋(píng)果公司對它的手機從硬件到軟件擁有最高的管理權限,在封閉式的環(huán)境中,來(lái)自第三方的應用程序無(wú)法調用超過(guò)iPhone承受限度的指令,自然也不可能造成持續性的系統損傷。
反觀(guān)Android手機,由于開(kāi)源的公開(kāi)條件,Google無(wú)法從代碼這一端口約束第三方的應用程序,同時(shí),由于Linux核心設定應用在調取系統功能時(shí)一定要取得ROOT權限,這也導致大量應用因為單一功能的實(shí)現需求而獲得整個(gè)ROOT層面的支配,可以在A(yíng)ndroid手機的任意儲存位置進(jìn)行讀寫(xiě),這種高自由度無(wú)異于開(kāi)啟了潘多拉魔盒,讓Android手機無(wú)法對惡意App事先設防。這也是開(kāi)源軟件備受爭議、且在商用領(lǐng)域遭到抵觸的原因:它只關(guān)心是否授予了用戶(hù)自由——這個(gè)自由也包括逾越邊界的自由——而沒(méi)有從最壞的出發(fā)點(diǎn)去考慮如何規避被濫用的風(fēng)險。盡管Google作為巨頭,一直在嘗試對產(chǎn)業(yè)鏈進(jìn)行統一管理,但是當這條產(chǎn)業(yè)鏈日益龐大、連Google也只能扮演其中之一的角色時(shí),Android的失控也就在情理之中了。比如,Android的最新版本通常需要花費超過(guò)一年半的時(shí)間,才能使激活它的Android手機占比超過(guò)50%,但是iOS 7只用了兩個(gè)月,就讓半數以上的iPhone都更新完畢。另外,一款應用程序如果被蘋(píng)果從App Store中懲罰出去,它就再也無(wú)法被安裝到任何一款合法的iPhone里面,但是如果一款應用程序被Google驅逐出Google Play,但是它還是可以登錄各種第三方應用市場(chǎng),提供正常的下載和安裝。
所以,Android的這種天生短板,又催生出了一個(gè)“手機調?!钡氖袌?chǎng),并帶動(dòng)了新的產(chǎn)業(yè)鏈。
“手機調?!钡牡谝患?,在于系統層。在A(yíng)ndroid 4.4以及之后的Android L的規劃中,它將應用程序的運行模式由Dalvik換成了ART,其原理簡(jiǎn)單來(lái)說(shuō)是“預編譯”效果,即當一款應用程序在第一次被安裝到Android時(shí),它的字節碼就已經(jīng)被編譯成為了本地的機器碼,減少后續運行應用程序時(shí)的啟動(dòng)和執行時(shí)間。
根據Google自己公布的結果,在不同的性能測試App中,ART的速度對比Dalvik的平均提升幅度達到了80%,在某些項目中,ART的提升幅度甚至超過(guò)了1.5倍,這個(gè)結果可謂非常喜人。
? 這是Google希望從源頭解決Android卡慢問(wèn)題的努力,但是這只是對性能優(yōu)化有著(zhù)作用,無(wú)法解決因為應用程序違規調用資源而產(chǎn)生的問(wèn)題。同時(shí),由于在安裝應用程序時(shí)進(jìn)行了“預編譯”,整個(gè)安裝時(shí)間將會(huì )變長(cháng),安裝完畢后生成的文件也會(huì )變大,比如最新的Google 安裝包只有6.9M,但是它安裝后的APK大小達到了28.3M,這對Android手機儲存空間又存在過(guò)多占用的問(wèn)題。
“手機調?!钡牡诙?,在于ROM層。作為全球最大的Android市場(chǎng),中國的許多手機廠(chǎng)商都以開(kāi)發(fā)專(zhuān)用ROM來(lái)為銷(xiāo)售產(chǎn)品添彩,大多數的ROM,也都會(huì )考慮對Android系統進(jìn)行優(yōu)化,比如MIUI V6就宣稱(chēng)“引入多種Linux系統內核內存優(yōu)化技術(shù),提高應用運行效率”。
也就是說(shuō),與Google做的事情一樣,ROM廠(chǎng)商主要的優(yōu)化工作,也是對Linux動(dòng)刀,打上各種補丁,使其底層語(yǔ)言能夠更好的適配到各種手機終端上。還是以MIUI V6為例,在介紹新特性時(shí),其有這么一條:“ZRAM 調度優(yōu)化技術(shù)”,其實(shí)ZARM就是Linux內核里的一個(gè)內存模塊,作用就是在內存中劃出一個(gè)部分出來(lái)充當虛擬盤(pán),來(lái)承載Linux的交換分區,將一些任務(wù)壓縮容納進(jìn)去,使內存的使用率提高,讓CPU來(lái)為內存服務(wù)(因為目前的智能手機普遍CPU過(guò)剩、而內存才是瓶頸)。
? 不過(guò),ROM也是一把雙刃劍,它對于A(yíng)ndroid底層系統的修改,以及它對于內存空間的占用,又都有增加手機負載的風(fēng)險。
“手機調?!钡牡谌?,在于應用層。大量應用程序在手機中發(fā)生的意外或故意占用事件,是造成Android手機越來(lái)越慢的最核心原因。過(guò)多的應用程序熱衷于滯留在內存空間里、以及將大量碎片留在儲存空間里,是帶來(lái)麻煩的罪魁禍首。這也是為什么即時(shí)清理類(lèi)應用得以逐漸成為Android手機標配;
Android系統有七類(lèi)進(jìn)程,分別是前臺進(jìn)程、可見(jiàn)進(jìn)程、主要服務(wù)、次要服務(wù)、后臺進(jìn)程、內容供應節點(diǎn)、空進(jìn)程,在沒(méi)有安裝清理類(lèi)應用的時(shí)候,一部Android手機只能依賴(lài)系統默認的分配機制來(lái)自動(dòng)調節內存使用,只要應用程序提出請求,大部分進(jìn)程只要打開(kāi)后都會(huì )被保留在內存當中,這原本是為了讓用戶(hù)在再度激活這些進(jìn)程時(shí)不需要重新載入、節省時(shí)間的初衷考慮,但是Android沒(méi)有料到激烈的市場(chǎng)競爭會(huì )驅使應用程序產(chǎn)生“劣幣驅良幣”的趨勢,很多開(kāi)發(fā)者出于商業(yè)目的,在不需要留存在內存的情況下也想方設法的讓?xiě)贸绦虮3譂撛谶\行狀態(tài),一個(gè)兩個(gè)還好說(shuō),但是一旦數量更多,Anrdoid手機就會(huì )頻頻卡頓和發(fā)熱。
以目前全球用戶(hù)規模最大的Android手機軟件清理類(lèi)應用“獵豹清理大師”為例,它清理的進(jìn)程類(lèi)型,主要放在后臺進(jìn)程、次要服務(wù)、內容供應節點(diǎn)和空進(jìn)程:
后臺進(jìn)程(Hidden)——這個(gè)是最優(yōu)先被獵豹清理大師掃描和識別出來(lái)的進(jìn)程,因為大部分Android用戶(hù)在切換應用程序時(shí)都不會(huì )使用返回鍵退出,而是直接按下Home鍵,前者會(huì )讓?xiě)眠M(jìn)入空進(jìn)程(占用資源相對較?。?,而后者則會(huì )保留為后臺進(jìn)程(占用資源相對更大),尤其是當游戲類(lèi)App在后臺運行時(shí),它會(huì )和其他App爭搶資源,而不會(huì )在乎那款App是不是用戶(hù)正在使用。根據獵豹清理大師的統計,約有20%的常用App即使不運行時(shí)也在后臺啟動(dòng)聯(lián)網(wǎng),主要是提交產(chǎn)品及用戶(hù)使用信息、獲取廣告信息、查詢(xún)是否升級等;
次要服務(wù)(Secondary Server)——比如某些企業(yè)套件、郵箱聯(lián)系人、觸控接口等,這些進(jìn)程很多都是系統自帶的,有些用戶(hù)會(huì )使用,但是有些用戶(hù)也可能不會(huì )使用或已經(jīng)有了替代應用,所以獵豹清理大師的清理邏輯是基于用戶(hù)行為和授權來(lái)建立(分為建議清理和深度清理兩類(lèi));
內容供應節點(diǎn)(Content Provider)——這部分進(jìn)程沒(méi)有程序實(shí)體,僅僅提供內容給其他應用使用,比如日歷供應節點(diǎn)、郵件供應節點(diǎn)等,除了占用內存資源之外,它還會(huì )占用網(wǎng)絡(luò ),所以也會(huì )給Android手機造成不必要的負擔;
空進(jìn)程(Empty)——如果是通過(guò)返回鍵退出應用,大部分的應用也會(huì )在A(yíng)ndroid手機的內存里遺留一個(gè)空的進(jìn)程,這個(gè)進(jìn)程沒(méi)有數據運行,但是會(huì )記錄應用的歷史信息,幾乎沒(méi)有任何價(jià)值,同樣,這部分進(jìn)程內容被獵豹清理大師干掉的優(yōu)先級也很高。
? 除了對內存的過(guò)度消耗之外,Android手機也容易在儲存中積累大量冗余數據,包括無(wú)法卸載的預裝應用、卸載之后的殘存文件以及使用應用的過(guò)程中產(chǎn)生的緩存,由于A(yíng)ndroid本身沒(méi)有提供管理工具,即使將手機連接電腦之后也是如同Windows樹(shù)狀結構一樣的文件夾包,用戶(hù)很難獨立判斷哪些文件夾可以刪除、哪些文件夾是系統必備的,最后也會(huì )導致手機尺寸空間愈來(lái)愈窄的情況。
“手機調?!钡膯?wèn)題,可能又回帶來(lái)用戶(hù)操作的負擔增加,其心理壓力甚于行為壓力,玩著(zhù)手機還不忘隔三差五的使用清理功能,這種與iPhone相比“別具特色”的操作習慣,也是Android手機永遠像一個(gè)半成品或工程機的原因。http://www.fj256.com??? 蘋(píng)果軟件應用開(kāi)發(fā)??? 安卓系統開(kāi)發(fā)