ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

阿里P7+资深Android面经:DexClassLoader原理、Tinker热修复、Sophix底层、Atlas插件化

阿里P7+资深Android面经:DexClassLoader原理、Tinker热修复、Sophix底层、Atlas插件化 P7高级聊完并发和JVM,这篇进入P7+资深——动态加载与热修复。这是P7和P8的分水岭:P7会用框架,P7+能讲清楚Tinker怎么合成dex、Sophix怎么改ART方法入口。阿里资深岗必问这块。淘宝用Atlas做插件化,支付宝用Sophix做热修复。你只说"用过Tinker",面试官追三句就露馅。今天8道题覆盖动态加载全链路,每道给出能深聊三轮的答案。Q1:DexClassLoader和PathClassLoader区别?两者都继承BaseDexClassLoader,核心差异在dex来源。PathClassLoader:加载已安装APK(/data/app/xxx.apk)。系统的AppClassLoader就是PathClassLoader实例,App运行时默认用它加载类。DexClassLoader:加载任意路径的dex/jar/zip/apk。构造时传dexPath和optimizedDirectory,先把dex优化到私有目录再加载。热修复和插件化用它——修复dex不在安装目录,得靠DexClassLoader加载。追问:Android 8.0后optimizedDirectory参数废弃,系统自动管理优化目录。以前可以指定目录方便管理,现在目录权限受SELinux限制更严。Q2:DexClassLoader的加载流程?完整链路四步:构造时调DexFile.loadDex把dex优化到私有目录(生成odex加速加载)→ 创建DexFile对象 → parent委派给BaseDexCla
返回列表