日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Android整體設(shè)計(jì)及背后意義

現(xiàn)實(shí)工作中經(jīng)??梢月?tīng)到這樣的說(shuō)法:框架的升級(jí)帶來(lái)協(xié)議性能的提升、編程模式的變革帶來(lái)業(yè)務(wù)的飛躍...... 姑且不論這些表述是否有問(wèn)題,實(shí)際上如果系統(tǒng)地看待事物整體,可能會(huì)有不一樣的發(fā)現(xiàn)。以LINUX為例,盡管其內(nèi)核大獲成功,但如果不是遵循POSIX、并成為一個(gè)開(kāi)源、精簡(jiǎn)的UNIX實(shí)現(xiàn),很難想象其最終會(huì)有何種發(fā)展。因此,對(duì)事物進(jìn)行全局和一定深入的探究有時(shí)會(huì)有更多啟發(fā)。

在云巖等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站制作,云巖網(wǎng)站建設(shè)費(fèi)用合理。

今天,阿里高級(jí)無(wú)線開(kāi)發(fā)專(zhuān)家所為將結(jié)合自己多年的經(jīng)驗(yàn),為你深入闡述整個(gè) Android 技術(shù)域及移動(dòng)研發(fā)生態(tài),期待與大家共同探討。

1. Android設(shè)計(jì)的現(xiàn)實(shí)意義

架構(gòu)的工程意義在于:定義并解決一類(lèi)問(wèn)題,為需求到實(shí)現(xiàn)的平穩(wěn)過(guò)渡提供保障。傳統(tǒng)意義的Android架構(gòu)(圖1)已被人熟知,但不同角色的視角不同,例如認(rèn)為Runtime和框架是其核心、或者將Android看做是一種特異性JVM平臺(tái)、還有從嵌入式出發(fā)將其看做是Linux…… 實(shí)際上,Android是極少數(shù)幾個(gè)用設(shè)計(jì)來(lái)解決自身發(fā)展問(wèn)題的系統(tǒng),其核心在于通過(guò)硬件抽象、組件化、接口層三種能力來(lái)為發(fā)展提供基礎(chǔ),并為諸多變數(shù)預(yù)留大量可操作、斡旋的空間。

圖1. Android傳統(tǒng)架構(gòu)

1.1 發(fā)展的前提:硬件抽象

2008年,我國(guó)邁入3G時(shí)代前夜,基礎(chǔ)設(shè)施的變革讓移動(dòng)領(lǐng)域充滿變數(shù),無(wú)論設(shè)備、硬件還是軟件都均未定型。擅長(zhǎng)架構(gòu)和軟件的Google在這一領(lǐng)域要獲得生存和長(zhǎng)足發(fā)展,需要團(tuán)結(jié)一切可能的、甚至是未知的力量,取得移動(dòng)運(yùn)營(yíng)商、芯片供應(yīng)商、手機(jī)制造商的支持則是生存的***步。

硬件抽象層(HAL)在一定程度上起到這樣的目的:它為移動(dòng)領(lǐng)域五花八門(mén)、標(biāo)準(zhǔn)不統(tǒng)一的硬件驅(qū)動(dòng)定義標(biāo)準(zhǔn)接口,避免Android過(guò)分依賴(lài)Linux,讓后續(xù)的擴(kuò)展和整機(jī)集成更加高效,滿足了手機(jī)制造商的重要訴求;同時(shí)還起到隔離Linux內(nèi)核的作用,避免廠商充滿硬件秘密的驅(qū)動(dòng)源碼受GPL協(xié)議影響而開(kāi)源,保障了芯片等硬件制造商的核心利益。傳統(tǒng)手機(jī)OS的定制和集成流程需要修改大量代碼,負(fù)擔(dān)不少,從這個(gè)角度來(lái)看Android HAL其設(shè)計(jì)是領(lǐng)先的。結(jié)合AOSP優(yōu)良的代碼分支、模塊管理,加上基于GNU automake巨集形成的Android build system,廠商享受到超越以往的便捷。

然而HAL并無(wú)固定做法(如圖2所示),Android 8.0之前,最初大量采用HAL舊版方式,表現(xiàn)為framework直接加載*.so并依賴(lài),主要集中在網(wǎng)絡(luò)、藍(lán)牙等模塊;舊版方式導(dǎo)致framework與具體驅(qū)動(dòng)接口耦合過(guò)緊,后來(lái)形成HAL傳統(tǒng)方式,即提供一定規(guī)范和接口進(jìn)行改進(jìn),從而減少直接耦合,但每次廠商支持新版Android依舊有大量改動(dòng)和適配;為更有效地解決這一問(wèn)題,Android 8.0開(kāi)啟Treble項(xiàng)目,從此芯片廠商能通過(guò)基于Binder的HIDL提供穩(wěn)定接口,制造商則可不受芯片廠商影響而直接更新Framework,甚至獲得無(wú)需重新編譯HAL即可OTA的能力。

圖2. Android對(duì)硬件驅(qū)動(dòng)的設(shè)計(jì)

受益于HAL這一設(shè)計(jì),Google在全球獲得更廣泛的支撐,尤其是Android 8.0在國(guó)內(nèi)廠商的迅速適配可見(jiàn)一斑。HAL為Android設(shè)備量的持續(xù)增長(zhǎng)提供了基礎(chǔ),并促進(jìn)有實(shí)力的廠商向設(shè)備上層及基礎(chǔ)設(shè)施兩個(gè)領(lǐng)域縱深發(fā)展(圖3),體現(xiàn)在掌握核心技術(shù)的廠商(如高通、華為、MTK),通過(guò)不斷建設(shè)系統(tǒng)能力來(lái)強(qiáng)化競(jìng)爭(zhēng)力(支持5G標(biāo)準(zhǔn)、硬件能力、軟硬結(jié)合以及系統(tǒng)能力的深度定制等),而具備渠道和資源整合優(yōu)勢(shì)的手機(jī)制造商(華為、OPPO、小米、VIVO等),則立足OS持續(xù)構(gòu)建更高效的應(yīng)用來(lái)拓展版圖(UI、推送、商店、輕應(yīng)用等),這都體現(xiàn)出Android HAL對(duì)整個(gè)產(chǎn)業(yè)的凝聚和影響,間接彌補(bǔ)Android自身的諸多不足。

圖3. 具備核心競(jìng)爭(zhēng)力的廠商的發(fā)展趨勢(shì)

1.2 能力的樞紐:組件化

對(duì)能力進(jìn)行如何組織和復(fù)用是架構(gòu)的***挑戰(zhàn),借鑒現(xiàn)有能力是發(fā)展的捷徑。無(wú)論是Mircosoft的COM,還是OMG的CORBA,或是從EJB到Spring、從SOA到Serverless,隨著基礎(chǔ)設(shè)施如網(wǎng)絡(luò)、終端設(shè)備的能力提升,這些技術(shù)的發(fā)展呈現(xiàn)出從重量到輕量、從對(duì)中心(總線)的重度依賴(lài)到輕量級(jí)依賴(lài)的趨勢(shì)。Android充分結(jié)合各領(lǐng)域先進(jìn)技術(shù),并基于移動(dòng)端資源受限這一***特色,形成了自身的技術(shù)特色:AIDL衍生自復(fù)雜的CORBA IDL,組件由SOA精簡(jiǎn)而來(lái),各獨(dú)立生老病死的System Service類(lèi)似一個(gè)個(gè)微服務(wù),Binder可以看做是對(duì)一種弱化總線、性能更好、可點(diǎn)對(duì)點(diǎn)通信的DBUS,UI布局系統(tǒng)則極大程度受到SWING的影響、manifest實(shí)際上就是APP與系統(tǒng)通信所必須的組件接口描述文件......

上面提到的領(lǐng)域技術(shù)的確有利于Android發(fā)展,但遠(yuǎn)遠(yuǎn)不夠?;叵胫罢劦降腍AL以及整體架構(gòu),我們看到Android實(shí)際上就是個(gè)大雜燴,使用的是諸多技術(shù)的混合。過(guò)去除Palm等Web OS外,無(wú)論是基于Linux/Unix構(gòu)建的系統(tǒng)如Meego,還是Symbian、MTK、UCOS、WindowsCE,無(wú)論是實(shí)時(shí)系統(tǒng)還是非實(shí)時(shí)系統(tǒng),這些移動(dòng)端系統(tǒng)都以C/C++為主且小巧精悍,對(duì)內(nèi)存使用和要求極為考究,雖然滿足了資源受限設(shè)備的使用訴求但帶來(lái)了門(mén)檻;虛擬機(jī)類(lèi)的平臺(tái)如KJava、.NET on Windows Phone雖然內(nèi)存使用和能耗方面比較大方,卻勝在研發(fā)效率和容錯(cuò)性,因而受到不少開(kāi)發(fā)者歡迎。

所以選擇混合架構(gòu)對(duì)于缺乏完整移動(dòng)領(lǐng)域產(chǎn)業(yè)鏈支撐的Google既符合其自身技術(shù)理念、又勝算***,于是量身定制的組件化能力便肩負(fù)起這一使命,使得各組件得到有機(jī)組合、應(yīng)用之間以及應(yīng)用和系統(tǒng)的溝通更為明確和有約束,最終幫助整個(gè)系統(tǒng)靈活運(yùn)轉(zhuǎn),能力被迅速放大。

觀察Android系統(tǒng)的啟動(dòng)運(yùn)行流程(圖4)以及APP對(duì)系統(tǒng)能力的使用(圖5),可以發(fā)現(xiàn)其各類(lèi)能力已按照組件化標(biāo)準(zhǔn)和粒度進(jìn)行組織(能力的注冊(cè)發(fā)現(xiàn)、接口和通信的標(biāo)準(zhǔn)化、運(yùn)行空間的隔離等),讓快速迭代的手機(jī)硬件和持續(xù)升級(jí)的系統(tǒng)能力以最小代價(jià)透出,將復(fù)用的價(jià)值在移動(dòng)設(shè)備系統(tǒng)上具體化并***化,從而具備更高的靈活性和兼容性;其背后軟件工程的意義在于為軟件需求、設(shè)計(jì)之間架起一座橋梁,解決了系統(tǒng)結(jié)構(gòu)和研發(fā)需求向?qū)崿F(xiàn)平坦過(guò)渡的問(wèn)題。

圖4. Android系統(tǒng)進(jìn)程架構(gòu)概要

圖5. 使用設(shè)備能力的典型調(diào)用路徑

當(dāng)然,歷史上其他公司面臨這類(lèi)挑戰(zhàn)時(shí)也有不一樣的想法,例如Windows Phone 8.0選擇了另外一條路,無(wú)論是提供媲美JAVA的C#及VB.NET框架、還是基于Sliverlight Dependency Property + XAML的UI系統(tǒng)、甚至是為了支持C++研發(fā)出來(lái)的C++/CX及一套運(yùn)行時(shí),都仿佛無(wú)時(shí)無(wú)刻標(biāo)榜著其系統(tǒng)技術(shù)的多樣化與復(fù)雜性,算得上是一場(chǎng)技術(shù)盛宴。

Meego則是另外一個(gè)例子,被期待救Nokia于危難,并由Intel聯(lián)袂推出,通過(guò)各種開(kāi)源能力的組合來(lái)完成系統(tǒng)的建設(shè),如Linux內(nèi)核+QEMU模擬器+QT+QML界面,但實(shí)際上曇花一現(xiàn)。

1.3 應(yīng)用的基礎(chǔ)-接口層

系統(tǒng)能力基本就緒,如何迎來(lái)更多開(kāi)發(fā)者對(duì)Android長(zhǎng)遠(yuǎn)發(fā)展至關(guān)重要。選擇JAVA作為上層語(yǔ)言,既需要勇氣又足夠彰顯其野心;為迎合資源受限這一移動(dòng)領(lǐng)域過(guò)去、現(xiàn)在也是未來(lái)的***客觀事實(shí),其設(shè)計(jì)了基于寄存器架構(gòu)、可執(zhí)行文件更小的Dalvik虛擬機(jī),并通過(guò)凈室工程來(lái)高質(zhì)量實(shí)現(xiàn),同時(shí)結(jié)合諸多工具對(duì)外提供了流暢的JAVA編程方式,擺脫類(lèi)似MTK feature phone只能用KJava寫(xiě)些小游戲的局限,使得Android研發(fā)兼具JAVA的便利和不錯(cuò)的性能。

天有不測(cè)風(fēng)云,SUN在09年4月被Oracle收購(gòu),距離Android 1.0發(fā)布還不到一年。雖然最初選擇Apache Harmony來(lái)提供JAVA API十分明智,但卻遭遇到技術(shù)上不支持JAVA 7/8、版權(quán)上Oracle訴訟紛至沓來(lái)等諸多挑戰(zhàn)。為應(yīng)對(duì)這一切,Google從Android N開(kāi)始,將JAVA的支持變更為OpenJDK。另外,Kotlin因?yàn)樘匦韵嘟?、又可被編譯為class或者dx字節(jié)碼,也獲得了Google青睞和收編(圖6)。

圖6. Android接口層的過(guò)去和未來(lái)

實(shí)際上,之所以Android敢這么做,還是因?yàn)橛衅湓O(shè)計(jì)基礎(chǔ)的支撐,根據(jù)個(gè)人的一點(diǎn)粗鄙了解,從Android API的調(diào)用鏈路(圖7)上能發(fā)現(xiàn)端倪:無(wú)論底層依賴(lài)、實(shí)現(xiàn)和流程如何變化,上層的使用形式并不會(huì)改變。

圖7. Android內(nèi)部對(duì)調(diào)用鏈路的3種實(shí)現(xiàn)

這意味著幾乎所有系統(tǒng)能力的核心,已在native library被實(shí)現(xiàn)殆盡,并結(jié)合上層提供良好屏蔽。這為其他語(yǔ)言實(shí)現(xiàn)Framework提供了可能,尤其是一門(mén)特性與JAVA相近的語(yǔ)言。所以是什么語(yǔ)言、是不是kotlin都只事先設(shè)計(jì)規(guī)范下的一種合適的選擇。

圖8. 一種未來(lái)用kotlin代替java的極端可能

2. 對(duì)于我們的象征意義和實(shí)踐

綜上所述,Android從三個(gè)方面來(lái)解決其發(fā)展的關(guān)鍵問(wèn)題:

  • 硬件驅(qū)動(dòng):形成廠商的合作基礎(chǔ),并反過(guò)來(lái)對(duì)整個(gè)產(chǎn)業(yè)施加影響。
  • 組件化:高效組織各種內(nèi)部能力,尋求自身的更快發(fā)展。
  • 接口層:滿足上層對(duì)系統(tǒng)和硬件能力的各種使用訴求。

移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)巨頭發(fā)展因?yàn)槠瘘c(diǎn)以及執(zhí)行理念不同而有所不同,Apple圍繞著其App Store構(gòu)建其整個(gè)體系并精心維護(hù),而且在現(xiàn)代化API編程、整機(jī)體驗(yàn)、垂直領(lǐng)域技術(shù)如網(wǎng)絡(luò)/算法等各縱深領(lǐng)域走在前列;Google則用Android帶路,需要在各個(gè)層面維護(hù)和團(tuán)結(jié)不同力量來(lái)形成自己的發(fā)展特色。所以,Android為系統(tǒng)如何發(fā)展提供了另外一種答案:除關(guān)注系統(tǒng)自身能力的發(fā)展,如何維護(hù)好系統(tǒng)不斷發(fā)展的基礎(chǔ)和前提、如何更好地暴露和讓外界使用系統(tǒng)能力也至關(guān)重要(見(jiàn)圖九)。

圖9. Android設(shè)計(jì)對(duì)解決問(wèn)題的啟示

回到我們自身,在重用戶、重交互、手機(jī)即人的今天,我們的產(chǎn)品有理由也有必要用其內(nèi)涵延展并放大服務(wù)的價(jià)值。要做到這一點(diǎn)并非易事。首先,業(yè)務(wù)迭代越來(lái)越快,各種應(yīng)用層出不窮對(duì)中間件意味著廣泛的需求;其次,環(huán)境在改變,無(wú)論是運(yùn)行硬件和設(shè)備的五花八門(mén)、還是對(duì)接集群的復(fù)雜多樣,都對(duì)阿里原有端側(cè)中間件帶來(lái)巨大沖擊;再次,在基礎(chǔ)技術(shù)發(fā)展變緩的今天,技術(shù)的價(jià)值需要被持續(xù)放大,我們希望基于自身能力來(lái)構(gòu)建服務(wù)和業(yè)務(wù)的泛連接基礎(chǔ),并將其作為發(fā)展愿景。這要求我們基于集團(tuán)背景以及核心APP發(fā)展的主要目標(biāo)下,來(lái)綜合思考這個(gè)發(fā)展問(wèn)題(圖10)。

圖10. 對(duì)泛連接能力建設(shè)的思考

通過(guò)Android的啟發(fā),結(jié)合環(huán)境和現(xiàn)狀,在滿足業(yè)務(wù)目標(biāo)的同時(shí)我們從三個(gè)層面不斷演進(jìn)網(wǎng)絡(luò)能力(圖11)。

  • 首先,通過(guò)覆蓋線上線下、各類(lèi)場(chǎng)景、形態(tài)各異的設(shè)備,不斷打造高效私有、支持通用標(biāo)準(zhǔn)的協(xié)議,并提供部分其他端側(cè)網(wǎng)絡(luò)不能或者及其難以提供的特殊能力,來(lái)幫助我們構(gòu)建設(shè)備和服務(wù)、用戶與業(yè)務(wù)的泛連接基礎(chǔ)。
  • 其次,自底向上地抽象,將非阻塞的IO復(fù)用、用戶態(tài)網(wǎng)絡(luò)棧支持、通道能力擴(kuò)展以及可支持混合集群的多實(shí)例架構(gòu)進(jìn)行高效組織,從而保障了數(shù)據(jù)在不通層面的流轉(zhuǎn)和管理訴求。
  • ***,基于SDK矩陣和接入能力的建設(shè),我們實(shí)現(xiàn)了服務(wù)接入到業(yè)務(wù)、業(yè)務(wù)透出給用戶的目的,并通過(guò)提供豐富的數(shù)據(jù)帶來(lái)更多價(jià)值。

圖11. 泛連接能力的系統(tǒng)性建設(shè)

基于以上的不斷沉淀,目前我們已能觸達(dá)海量設(shè)備和用戶,成為接入阿里內(nèi)外各服務(wù)和平臺(tái)的接口,并為終端和服務(wù)分別屏蔽集群的多元化及設(shè)備的多樣性,實(shí)現(xiàn)新零售系統(tǒng)能力與用戶的泛連接(圖12)。

圖12.團(tuán)隊(duì)能力在集團(tuán)中所處的位置

3. 小結(jié)

結(jié)合傳統(tǒng)的C/S觀念,服務(wù)端獲取的信息來(lái)源于各網(wǎng)絡(luò)終端,網(wǎng)絡(luò)+協(xié)議屏蔽或規(guī)范了外界對(duì)服務(wù)輸入的多樣性,使得服務(wù)端過(guò)去關(guān)注的是集群和高并發(fā),但現(xiàn)在無(wú)論是上云還是利用率,背后都是業(yè)務(wù)、成本規(guī)模和邊際效應(yīng)在驅(qū)動(dòng),這里面發(fā)展的代際主旨鮮明。但回到客戶端,由于受到環(huán)境和交互等多樣性直接影響,即便是動(dòng)態(tài)性的技術(shù)也難以代表端側(cè)的全部甚至是主流。所以在某種局部技術(shù)比拼武功,成為過(guò)去客戶端的一種行業(yè)“潮流”。

在局部技術(shù)和單點(diǎn)深入的確有其意義,筆者也曾有過(guò)一些班門(mén)弄斧,如非輪詢(xún)方式獲取手機(jī)棧頂Activity、面向阿里特有復(fù)雜集群的SDK多實(shí)例設(shè)計(jì)、Sophix熱修復(fù)及云上產(chǎn)品等。但結(jié)合過(guò)往經(jīng)驗(yàn)及Android設(shè)計(jì),可以更系統(tǒng)性地看待這一現(xiàn)象:即除了滿足業(yè)務(wù)核心訴求(因?yàn)橥度氪罅抠Y源,必須、肯定要成,至少小成),更應(yīng)該關(guān)注技術(shù)如何更好地服務(wù)業(yè)務(wù)以及如何持續(xù)挖掘能力護(hù)城河這兩頭的問(wèn)題。所以要打造和發(fā)展好一個(gè)系統(tǒng),除構(gòu)建系統(tǒng)各中堅(jiān)能力外,還需維護(hù)好系統(tǒng)發(fā)展的前提、組織好各系統(tǒng)能力的內(nèi)聚、滿足好外部對(duì)系統(tǒng)的訴求。


當(dāng)前題目:Android整體設(shè)計(jì)及背后意義
路徑分享:http://www.dlmjj.cn/article/dpggpic.html