• April 28, 2024

【安卓 手機淘寶架構】Android |手機淘寶的架構演進 |手機淘寶Android客户端架構 |

  手機淘寶Android客户端有幾百人開發,十幾個團隊。如果整個Android客户端是一個工程,那十幾個團隊每個人上午上班第一件事情估計合代碼,運氣,一天合代碼,而且只要有一個人提交代碼編譯不過,所有人會堵塞在那裏,所以單個工程是可能事情。     只要是包含了很多業務客户端,會面臨這個問題,各個業務代碼量多,需求源源來,業務團隊之間要是有直接依賴,那依賴團隊成員,改代碼時候是戰戰兢兢,生怕自己改動導致其他業務奔潰。交付時候,總會一個業務線人卡住,導致沒法及時交付這個版本。而且代碼量多,方法數超65535問題跟着到來。

    只要是包含了很多業務客户端,會面臨這個問題,各個業務代碼量多,需求源源來,業務團隊之間要是有直接依賴,那依賴團隊成員,改代碼時候是戰戰兢兢,生怕自己改動導致其他業務奔潰。交付時候,總會一個業務線人卡住,導致沒法及時交付這個版本。而且代碼量多,方法數超65535問題跟着到來。

     自然而然,美團基礎上面我們可以發展出這樣一個架構,業務aar之間允許依賴,業務如果要外提供接口,那提供接口jar包,自己業務 aar裏面去現。有一個BaseCompat項目將集成這些接口jar包,還包括一些基礎jar包,業務aar可以依賴BaseCompat aar,業務aar之間沒有依賴,這樣做處每次發版本時候需要任何一個業務,某個業務沒有截至時間內集成,直接使用上一個版本。

    aar包會打包成一個dex文件(或者多個dex文件,引入MulitDexApplication),但是這個解決不了手機淘寶Android客户端問題,手機淘寶Android客户端底層有Atlas插件框架。通過將業務包打成awb(其實apk包),然後外麪包一個殼工程,殼工程中包含所有業務awb包。在手淘客户端啓動時候,載入各個業務awb包,這個裏面包括awb包解析,dex文件優化,res文件加載一系列操作。

客户端容器架構設計原則是“everything is a component”, Android 平台上,基於我們隔離化容器架構設計,我們既可以提高集成期多團隊協作效率,收穫了運行時部署。通過工程拆分成一系列獨立服務,以及我們具備容器升級能力,需要同時編譯和集成所有功能模塊。一個模塊完成了測試,我們可以需對他進行升級。

Weex, hotfix熱

支撐體系 完備支撐體系。如果沒有話,在線上運行情況是不可感知。手淘維度做了很多支撐工具。

1.研發支撐 像傳統Reivew代碼,統一UI庫,設計模板,預發、線上染色。

2.測試支撐 單元功能測試,有定性性能,以及自動化。像手機淘寶差不多是一個月左右時間可能會迭代一個版本。 智能化測試,自動化調用迴歸,偽造數據進行業務測試,靜態代碼掃描。

3.運維支撐 性能定性分析,有App業務監控輿情監控。 輿情監控這個應該是移動App所特有環節

客户端監控 可以分鐘級確定用户調用某個操作次數、失敗次數和失敗率,實現業務可用性監控。

輿情平台 輿情平台是移動App獨有。要獲取信息,會用户手機淘寶自己填反饋,利用市場和,抓取,然後內容聚合起來,進行熱門詞歸類,篩選出一些熱門標籤話題做一些智能分類,分類後知道是支付、、退款出現了什麼問題,確定問題重點後,可以直接聯繫用户,去跟蹤用户,這些問題去修復線上急問題或者是改善產品,這在線上使用輿情平台。通過熱門詞分類排名,可以知道某一個版本某一個階段問題是什麼,還擴展了用户集中反饋。

延伸閱讀…

手機淘寶Android客户端架構- 架構- 開發語言與工具

手機淘寶技術能力開放的經過和發展

    手機淘寶Android客户端有幾百人開發,十幾個團隊。如果整個Android客户端是一個工程,那十幾個團隊每個人上午上班第一件事情估計合代碼,運氣,一天合代碼,而且只要有一個人提交代碼編譯不過,所有人會堵塞在那裏,所以單個工程是可能事情。

    只要是包含了很多業務客户端,會面臨這個問題,各個業務代碼量多,需求源源來,業務團隊之間要是有直接依賴,那依賴團隊成員,改代碼時候是戰戰兢兢,生怕自己改動導致其他業務奔潰。交付時候,總會一個業務線人卡住,導致沒法及時交付這個版本。而且代碼量多,方法數超65535問題跟着到來。

     自然而然,美團基礎上面我們可以發展出這樣一個架構,業務aar之間允許依賴,業務如果要外提供接口,那提供接口jar包,自己業務aar裏面去現。有一個BaseCompat項目將集成這些接口jar包,還包括一些基礎jar包,業務aar可以依賴BaseCompat aar,業務aar之間沒有依賴,這樣做處每次發版本時候需要任何一個業務,某個業務沒有截至時間內集成,直接使用上一個版本。

    aar包會打包成一個dex文件(或者多個dex文件,引入MulitDexApplication),但是這個解決不了手機淘寶Android客户端問題,手機淘寶Android客户端底層有Atlas插件框架。通過將業務包打成awb(其實apk包),然後外麪包一個殼工程,殼工程中包含所有業務awb包。在手淘客户端啓動時候,載入各個業務awb包,這個裏面包括awb包解析,dex文件優化,res文件加載一系列操作。

    Atlas插件框架工作原理:跳轉到一個Activity時候,看看Activity所在awb包有沒有加載到內存,如果沒有,那load optDex文件,res文件。

延伸閱讀…

[Android][應用架構] [手機淘寶的架構演進-總結] 原創

手機淘寶Android客户端架構_weixin_34216036的博客

    看老羅博客:http://blog.csdn.net/Luoshengyang/article/list/1  研究一下apk包加載,Activity啓動。應該是可以做一個開源Atlas出來,大部分情況是然並卵,因為大部分公司應用沒有這麼複雜業務。

m0_69244878:
不行呀 改了後錯了,運行不了了,不要誤人子弟

   淘寶技術能力開放和發展是怎樣?於目前移動開發來説,開發者自己開發耗時耗力,使用第三方服務是明智選擇,而使用這些服務會用到它們提供SDK。因此少數應用外,大量使用第三方SDK是不可避免趨勢。但是,大量第三方SDK使用,一些問題暴露出來,多平台、多風格、包大小。

 因為同時開放了很多服務,會帶來很多SDK,因此它推出了OneSDK來解決這個問題。使用OneSDK,開發者只需要下載一個SDK包,一次接入動作,一個初始化入口完成集成,開發者帶來一致性體驗。OneSDK所接入服務和能力中包括了手機淘寶開放出來能力,手機淘寶多年架構演進積累了很多經驗,這次技術分享上,手淘分享了它們開放出來能力。

 淘寶技術能力開放,移動開發技術了10年發展。2005年KJava代表單進程技術,到2008年Symbian應用級動態部署,到2010年左右iOS/Android代表多進程,其後湧現出來進程級動態部署插件化,以及2014年到如今容器級動態部署。

業內領先單台服務器建鏈400萬,同時在線長連接1.2億+,接入集團內部應用,經歷了3次雙十一。並且支持消息盒子和國際化。