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?