美文网首页
Android 插件化开发【路线方法】

Android 插件化开发【路线方法】

作者: 谁动了我的代码 | 来源:发表于2022-11-30 16:52 被阅读0次

前言

先简单介绍一下 Android 插件化。很早之前已经有公司在研究这项技术,淘宝做得比较早,但淘宝的这项技术一直是保密的。直到 2015 年才陆续出现很多框架,Android 插件化分成很多技术流派,实现的方式都不太一样。我今天的主题就是,Android 插件化的不同流派、不同思想,以及做插件化需要掌握哪些知识。

插件化历程

插件化入门

首先,做 Android 系统原代码的人应该非常熟悉 Binder,如果没有它真的寸步难行。Binder 涉及两层技术。你可以认为它是一个中介者模式,在客户端和服务器端之间,Binder 就起到中介的作用,这是我这段时间对 Binder 的思考。

  • Binder
  • APP打包流程
  • APP安装流程
  • APP启动过程
  • 资源加载机制
  • Gradle

技术流派学习

  • 动态替换
  • 静态代理
  • dex合并

第一种是动态替换

也就是 Hook。可以在不同层次进行 Hook,从而动态替换也细分为若干小流派。可以直接在 Activity 里做 Hook,重写 getAsset 的几个方法,从而使用自己的 ResourceManager 和 AssetPath;也可以在更抽象的层面,也就是在 startActivity 方法的位置做 Hook,涉及的类包括 ActivityThread、Instrumentation 等

第二种是静态代理

这是任玉刚的框架采取的思路。写一个 PluginActivity 继承自 Activity 基类,把 Activity 基类里面涉及生命周期的方法全都重写一遍,插件中的 Activity 是没有生命周期的,所以要让插件中的 Activity 都继承自 PluginActivity,这样就有生命周期了。

第三种是 Dex 合并

Dex 合并就是 Android 热修复的思想。刚才说到了两个项目——AndFix 和 Nuwa,它们的思想是相同的。原生 Apk 自带的 Dex 是通过 PathClassLoader 来加载的,而插件 Dex 则是通过 DexClassLoader 来加载的。

以上就是插件化的一些学习路线理解,当然还会有一些学习技术拓展譬喻:AAPT、增量更新、插件管理平台等等技术。更多有关Android的技术进阶,大家可以参考《Android核心技术手册》翻阅学习Android更高级的核心技术。

文末

Android 插件化未来的方向。阿里一位技术专家冯森林曾说,插件化最厉害的发展方向应该是每个 Activity 都是一个插件。这个观点在插件化技术交流群里一提出来之后,群里所有人都沉默良久。仔细想想,插件化的未来好像的确是这个发展方向,这样就可以将任何一个出问题的 Activity 迅速替换。但当 RN 一经提出,这个观点就慢慢消失了,RN 比插件化更轻量级,越来越多人选择了 RN。

相关文章

网友评论

      本文标题:Android 插件化开发【路线方法】

      本文链接:https://www.haomeiwen.com/subject/pabdfdtx.html