《手淘Native容器化框架发展和思考(31页).pdf》由会员分享,可在线阅读,更多相关《手淘Native容器化框架发展和思考(31页).pdf(31页珍藏版)》请在三个皮匠报告上搜索。
1、玄黎淘宝-移动平台手淘容器化框架Atlas实践倪生华(玄黎),淘宝移动平台技术部的资深专家2012年加入手机淘宝技术部门,主要负责手机淘宝技术团队的快速交付、研发支撑等体系的建设,参与开发了手淘容器化的动态化体系,构建支撑以及相关支撑体系等的工作,从无到有实现了手淘的插件化构建,集成交付,监控运维等体系,目前支撑了阿里集团大部分的无线业务。1.技术背景&现状2.组件化实现3.动态性实现4.周边优化点目 录content一、技术背景&现状1.并行开发2.快速迭代3.解耦&独立诉求点:高效团队协作快速迭代能力内部广泛应用运行高稳定性01030204从月-周-天的发布周期变更应用现状几十个团队几百人
2、App的协作淘系大小型应用普遍采用整体0.05%以下的Crash率运行期完整的生命周期的支持以及运行的隔离性工程期运维期实现完整的组件生命周期的映射,类隔离等机制13快速增量的更新修复能力,快速升级2实现工程独立开发,调试的功能,工程模块独立手淘的Atlas框架主要提供了组件化、动态性、解耦化的支持。支持工程师在工程编码期、Apk运行期以及后续运维修复期的问题。容器化支持独立的开发模式,编译调试等支持快速修复、动态更新的能力透明,灵活,稳定,敏捷,高性能二、组件化实现APK包结构模块分层BusinessOS Hack tookit&verifierDelegateAtlasApplicatio
3、n(AtlasApplicationDelegate)Bundle FrameworkMonitorDebugtoolVersionListingBaselineInfoManagerBundleInstallerLifeCycleSecurityPackageManageDelegateBundleInfoManagerBundlePkgManagerconfigurationFrameworkLifecycleUtil。PathClassLoaderResourcesInstrumentationContextImpl。容器设计Hack层BundleFramework层运行期管理层Busi
4、ness层应用接入层Bundle生命周期0102030405startInstallInstalledresolvedactivestartedCopy fileExtract libloadInject assetpathCreate class loaderCheck validStart applicationManifest处理宿主ManifestBundleManfiestBundleManfiestAar ManifestBundleManfiestAPK ManifestBundleInfoListMerge解析Bundle1.构建期进行全量Merge操作2.Bundle的依赖单
5、独Merge,生成Bundle的Merge manifest3.解析各个Bundle的Merge Manifest,得到整包的BundleInfoList类加载DelegateClassLoaderBundleClassLoaderBundleClassLoaderApplication.mLoadedApkPathClassLoader反射注入路由查找主Bundle业务Bundle业务Bundle1.DelegateClassLoader以PatchClassLoader为父classLoader,找不到的情况下根据BundleList找到对应的BundleClassLoader2.Bund
6、leClassLoader的父对象为BootClassLoader,包含PathClassLoader对象,先查找当前classLoader,再查找当前PathClassLoaderDelegateResourcesDelegateResourcesAssetManagerAssetManagerAssetManagerNativeAssetManagerNativeAndroid0 x01主dex0 x7FBundle0 x30Bundle0 x31.Bundle0 x7eResource.arscResource.arscResource.arscResource.arscResource