360手机助手安卓技术负责人 张勇 - 《分拆:DroidPlugin的实现原理及其应用》

2020-02-27 596浏览

  • 1.分拆:DroidPlugin实现原 理及在360手机助手中的应用 张勇 360手机助手 zhangyong232@gmail.com
  • 2.
  • 3.
  • 4.我们在移动研发中经 常会遇到什么问题?
  • 5.新版本就要发布了,可兄弟部门 负责的模块还没完成?
  • 6.等
  • 7.线上产品突然出现了重大质量问 题要紧急修复?
  • 8.急
  • 9.安装包越来越大,下载安装成功 率越来越小?
  • 10.肥
  • 11.我们的解决方案
  • 12.拆
  • 13.DroidPlugin
  • 14.DroidPlugin 是什么?
  • 15.DroidPlugin 是什么? 免安装、免修改、免重新打包 的运行APK的插件机制
  • 16.DroidPlugin 的特点
  • 17.高完整度
  • 18.高完整度 支持Android四大组件 支持Android 95%以上API 无需对插件APK做任何修改 完全模拟Android运行环境
  • 19.低侵入性
  • 20.低侵入性 研发流程 对宿主程序 对插件APK 对Android系统和实现方式 完整的隔离机制
  • 21.DroidPlugin 在360手 机助手的实践
  • 22.DroidPlugin 在360手机助手的实践 - 架构 10余个插件运行 覆盖了90%的用户 瘦身30% 模块快速更新 随时新增、删除功能而不需发版本
  • 23.DroidPlugin 在360手机助手的实践-流程 插件、主程序独立发版 各个插件有自己的负责人 插件、主程序研发互不影响 插件发布、部署后台
  • 24.DroidPlugin 的架构
  • 25.DroidPlugin 的架构 包管理服务(PMS) APK解析 缓存功能的反射机制 进程管理 服务( AMS) Manifest预先 注册占坑、预 先注册权限 Hook模块(Binder、代理),欺上瞒下 工具类、隐藏方法调用
  • 26.DroidPlugin 的原理
  • 27.DroidPlugin 核心原理 插件加载:进程共享 组件注册:占坑机制 代码运行:HOOK欺骗 机型适配:API & AppOps & ROM
  • 28.DroidPlugin 核心原理之:占坑 handleLauncheActivity System Server (AMS) App Process startActivity 发送Fork命令、参数 Zygote fork并执行 ActivityThread.main函数
  • 29.DroidPlugin 核心原理之: Hook 动态代理、反射 PackageManager和ActivityManager服 务 关于Android的ActivityThread类 解决AppOps问题 Dalvik/ART method hook
  • 30.DroidPlugin与其它插件 机制的区别
  • 31.DroidPlugin与其它插件机制的区 别 Droid Plugin Dynamic dynamicAPK load-apk Android Dynamic Loader androidpluginm gr APKPlug API完整 度 所有API 四大组件 不支持服 务和广播 不支持 Resource API 不支持服 务和广播 跳转动画 、 ContentP rovider 迁移成本 低 高 高 高 高 高 授权 LGPL MIT Apache 2.0 MIT - 商业收费
  • 32.DroidPlugin 未来计划 • Native支持,游戏支持 • 安全模块 • 插件之间的高效、低耦合的通讯机制 • 更细粒度的Fragment支持 • ………
  • 33.谢谢 By 张勇