《2017年Atlas手機淘寶Android架構實踐.pdf》由會員分享,可在線閱讀,更多相關《2017年Atlas手機淘寶Android架構實踐.pdf(28頁珍藏版)》請在三個皮匠報告上搜索。
1、0TMCS+?0OdRPKd?高級技術i家0MKDCDC 無線r業部關s我200*杭州虹軟 移動多媒體 2010 手機淘寶 負責手機淘寶0OdRPKd架構 m阿里巴巴各條無線端側u品提供基礎技術0TMCS發展歷程0TMCS?0TMCS工程期0TMCS運行原理0TMCS動態原理其x發展歷程?2012-2013?2014-2015?2015-20160TMCS?0TMCS工程期0TMCS運行原理0TMCS動態原理其x0TMCS發展歷程0TMCS包結構taobao.apkreslibclasses.dexAndroidManifestresources.arcx86armeabicom.taobao
2、.detail.socom.taobao.search.socom.taobao.homepage.soxxxxx.soxxxxx.so0TMCS并行特性?Bus(UI&Service&Message)?(Bundle)(UIs)(Services)?(Services)?(Bundle)(UIs)(Services)?(Bundle)(UIs)(Services)?(Services)0TMCS動態性支持類型兼容性高性能差量補d成功率開發透明全類型動態能力支持2MCSS文件a=:和資源的增刪改操作高兼容性適配(x*x:dp3版本a在線e穩定運行2年多對開發者友好兼容0OdRPKd開發p慣a無
3、遷移成本高成功率具有非常高的部署成功率和效率高性能通過去eRKHy等手段a達到極小的性能損耗補d大小通過精細化3KHH的方法a達到非常小的PCTch包0TMCS研發周期覆蓋運行期完整的生命周期的支持 z及運行的隔離性工程期獨立的開發模式、編譯調試等支持 運維期快速修復、動態更新的能力 0TMCS框架n要提供了組件化、動態性、解耦化的支持。支持工程師在工程編碼期、0pL運行期z及后續運維修復期的問題。實現完整的組件生命周期的映射a類隔離等機制實現工程獨立開發a調試的功能a工程模塊獨立快速增量的更新修復能力a快速升級?0TMCS價值手淘0OdRPKd發布次數手淘0OdRPKd發布頻率1*0+k業務
4、協同開發 2 移動平臺(00+工程師 3 外部20+1?參h0TMCS?0TMCS工程期0TMCS運行原理0TMCS動態原理其x0TMCS發展歷程0TMCS工程階段打包插件進化COT-NCVeO-IRCdMeCCpT定制-cUSTPNKzed-pCcLCIe-Kd-USe-SLT-pCcLCIe-OCNetype pa kage entry 0 x*H0 x020 x0002/COdRPKd+dRCWCDMe/KcBNeOUBSCVe”“/hPST+hPST資源”.分布式的w庫依賴統一的版本構建低內聚a業務模塊物理隔離獨立開發a獨立調試獨立集成a獨立發布0TMCS包構建1、0A1的ReS根據宿
5、n的ReSPURceCpB+包內資源構建2、0A1的R文件由DUOdMe的R資源+宿nR資源合并而來3、定制的CCpTa每k0A1g同的pCcLCIe5d(、pRPIUCRdm統一化混淆a多k輸入a多ku物在原生的基礎e定制了打包過程0TMCS?0TMCS工程期0TMCS運行原理0TMCS動態原理其x0TMCS發展歷程0TMCS運行期ToolsBundle FrameworkOS Hack toolkit&verifierDelegateAtlasBridgeApplicationMonitorBundleInstallerLifeCycleSecurityVersionBaselineInf
6、oManagerPackageManageDelegateInstrumentationContextActivityThread$HDelegateClassLoaderDelegateResourcesListingBundleInfoManagerBundlePkgManagerActivityManagerNative40pkgBundleClassLoaderAssetPatch41pkgBundleClassLoaderAssetPatch42pkgBundleClassLoaderAssetPatch0TMCS運行期-類加載1PPT2MCSSMPCdeR PCTh2MCSS7PC
7、deR 1UOdMe2MCSS7PCdeR3eMeICTe2MCSS7PCdeR1UOdMe2MCSS7PCdeRBundle?HKOd:WO HKOdKO4PST HKOdKO3epeOdeOcy 0TMCS運行期-資源加載3eMeICTeReSPURceS0SSeTSMCOCIeR1UOdMeSySTeNRPN1UOdMeBundle?1UOdMe4PST0TMCS?0TMCS工程期0TMCS運行原理0TMCS動態原理其x0TMCS發展歷程0TMCS動態性業務組件動態更新通過組件3KHHaMeRIe的過程進行更新c 直接在組件的生命周期內做a兼容性極好宿n動態更新通過宿n類、資源、SP文件
8、等的dKHH算法a 通過NeRIe算法來實現更新a兼容性好組件遠程f載 v無-有)在構建期參h構建a在最后發布階段v0PK包l剔除。在用戶啟動階段a通過遠程f載的方式進行安裝。適用s預裝a大體積業務等更新0TMCS宿n類動態更新ne.patch source classes.dex other classes.dex other classes.dex classes.dex other dalvik2源dex會剔除重復class,art2源dex保持不變 規避VeRKHy機制規避dex2PCT的OCTKVe cPde化0TMCS宿n資源動態更新0TMCS宿n資源動態更新abcd1234NO_
9、ENTRYNO_ENTRYNO_ENTRYdefghndex已有資源段ndex預留資源段 dCMVKL)resources.arscresources.arsc1 定制CCpT -1 基線CpL固定資源Kd2 預留空資源段dCMVKL新增資源點 支持所有的資源類型 全版本全機型兼容 開發無感知_g需要修改y碼)缺點 新增資源需要預埋資源在基線包0TMCS動態部署sourcediffclasses.dexclasses.dexclasses.dexDexMergearsc|AndroidManifestarsc|AndroidManifestarsc|AndroidManifestres|ass
10、etsres|assetsres|assetsmerge&overridereplacenew1.04.02.03.0diff2diff1dif3?diff0TMCS dexdKHH算法dKHHdexdex3KHH5OHP3exRCOSHPRN=TRKOI=ecTKPOcMCSSBdeHNeThPdNeThPd cPdeOexT dex STRKOI=PHH*-1+1cMCSS3CTC PHH=-1NeThPd cPde PHH=1deDUI KOHP PHH=0duplicateremove classduplicateremove debug info0TMCS?0TMCS工程期0TMCS運行原理0TMCS動態原理其x0TMCS發展歷程0TMCS 其x關s動態新增cPNpPOeOT關s坑0OdRPKd新版本 N的混合化編譯/:的SP OCNeSpCce問題)R:M廠商定制 資源適配問題/異步dex2PCT問題)R:M 的DUI_覆蓋安裝g完整問題)混淆o是巨坑_-PVeRMPCdCIIReSSKVeMy)比較AtlasDroidPlugindynamic-load-apkSmali?apk?hook?