Android 插件化系列文章目录

【Android 插件化】插件化简介 ( 组件化与插件化 )
【Android 插件化】插件化原理 ( JVM 内存数据 | 类加载流程 )
【Android 插件化】插件化原理 ( 类加载器 )
【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 )
【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 )
【Android 插件化】“ 插桩式 “ 插件化框架 ( 注入上下文的使用 )
【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 )
【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 )

文章目录

  • Android 插件化系列文章目录
  • 一、组件化与插件化
  • 二、插件化示例
  • 三、插件化标准引入

一、组件化与插件化


组件化 是将应用分成若干 Module 模块 , 每个模块称为一个组件 ;

组件化 项目中 , 分为两种模式 , " 集成模式 " 和 " 组件模式 " ;

在开发过程中的 " 组件模式 " 下这些组件可以 独立运行 , 在 " 集成模式 " 下 , 这些组件 相互依赖拼装成一个 APK 安装包 ;

组件化开发的弊端 :

多个模块必须是并发开发 , 模块之间相互依赖 , 如果修改了一个模块 , 那就必须重新打包 ;

插件化开发 , 解决了上述问题 ;

插件化 将应用拆分成若干模块 , 其中有 111 个 " 宿主 " 模块 , 若干 " 插件 " 模块 ;

最终打包时 , 将 " 宿主 " 模块 和 " 插件 " 模块 分开进行打包 ;

" 宿主 " 模块 和 " 插件 " 模块 都各自是一个单独 apk 安装文件 ;

插件化 中 , " 宿主 " 模块 和 " 插件 " 模块 可以分开进行编译 , 二者之间互不影响 , 各个模块可以并发进行开发 , " 宿主 " 模块 可以 动态更新插件 ,

二、插件化示例


如像 支付宝 等类似的特大型应用 , 内部提供了几百个小的应用模块 , 不可能在开发时就将其集成进去 , 这些软件的本体只有 100 MB 左右 , 不可能将所有的应用都纳入进去 ;

分辨原生组件与 Web 组件 : 在大型应用中 , 有些应用是使用 WebView 嵌入前端小程序 , 有些是远程组件 , 在 " 开发者选项 " 中 , 打开 " 显示布局边界 " 选项 , 如果是 WebView 就只有一个框 , 如果是原生组件 , 对应的 TextView , ImageView 等都有各自的边界 , 借助布局边界显示可分辨出该第三方小程序是 前端 WebView 界面还是原生应用 ;

打开 " 显示布局边界 " 选项 :

支付宝主界面效果 : 主界面是原生界面 ;

饿了么界面时 WebView 界面 , 主要内容是 前端小程序 开发的 ;

财富管理模块的股票模块 , 是原生应用 ;

支付宝的主体框架是 Android 原生应用 , 其中的第三方功能 , 小程序 , 基本都是 Web 前端页面 ;

目前这类应用的开发趋势是使用 Web 应用 替换 原生应用 ;

股票模块这类 原生应用 , 一般不会在支付宝开发时 , 打包在其中 , 而是通过 插件化 机制 , 动态部署其插件 apk ;

这类软件第一次打开时 , 需要下载该模块的 插件 apk , 并安装 , 此时会卡顿以下 , 之后可以流畅访问 ;

三、插件化标准引入


插件化 中 , " 宿主 " 模块 和 " 插件 " 模块 可以分开进行编译 , 二者之间互不影响 , 各个模块可以并发进行开发 , " 宿主 " 模块 可以 动态更新插件 ;

" 宿主 " 模块是当前运行的应用 , " 插件 " 模块是下载的插件模块编译后打包的 apk 文件 ;

在不安装 插件 apk 的情况下 , 调用该 插件中的功能 , 如 Activity , Service , 代码逻辑等 ;

不是任意 apk 文件都可以接入到 " 宿主 " 插件中 , 要接入的 apk 必须符合一定的标准 ;

在 apk 插件没有安装 , 因此不存在上下文 , 调用插件中的 Activity 界面时 , 需要将上下文传给插件的 Activity ,

【Android 插件化】插件化简介 ( 组件化与插件化 )相关推荐

  1. 【Android 插件化】“ 插桩式 “ 插件化框架 ( 代理 Activity 组件开发 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  2. 2020 Android 大厂面试-插件化、模块化、组件化,移动开发工程师的岗位职责

    替换了主工程context中LoadedApk的mResource对象 将新的Resource添加到主工程ActivityThread的mResourceManager中,并且根据Android版本做 ...

  3. 2020 Android 大厂面试-插件化、模块化、组件化,android开发环境的搭建视频

    if (Constants.COMBINE_RESOURCES) { //插件和主工程资源合并时需要hook住主工程的资源 Resources resources = ResourcesManager ...

  4. 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  5. 【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )

    文章目录 前言 一.应用开发者规避 APK 安装包被作为插件 二.检测插件化环境 1.检查 AndroidManifest.xml 清单文件 2.检查 运行时 信息 3.检查生成的目录 4.检查组件 ...

  6. 【Android 插件化】插件化技术弊端 ( 恶意插件化程序的解决方向 | 常用的插件化虚拟引擎 )

    文章目录 一.插件化技术弊端 二.恶意插件化程序的解决方向 三.常用的插件化虚拟引擎 一.插件化技术弊端 在之前的 Android 应用中 , 部分黑客将应用破解 , 植入自己的恶意代码 , 然后进行 ...

  7. login组件的两种用法_Android-模块化、组件化、插件化、热修复-组件化-组件间的通信(本地,下沉,bus,路由)...

    延续上一篇 MonkeyLei:Android-模块化.组件化.插件化.热修复-组件化工程构建+页面路由多种方式实践 ,我们进行搞下组件之间的通信.比如登录成功后怎么通知其他页面刷新: 方式可能有很多 ...

  8. MUI侧滑导航:页面组件(本地插件化)

    MUI侧滑导航:页面组件(本地插件化) 针对MUI框架须知: MUI框架内不支持<a>标签的点击跳转,所以需要修改部分代码,如下述代码中的代码块: // 实现MUI框架内的超链接点击跳转 ...

  9. 插件化基础(二)——加载插件资源

    系列文章目录: 插件化基础(一)--加载插件的类 插件化基础(二)--加载插件资源 插件化基础(三)--启动插件组件 一.了解 Asset 和 Resources 我们加载的资源通常来自 res 和 ...

最新文章

  1. 两个列向量相乘怎么计算_矩阵:行主序、列主序、行向量、列向量
  2. mysql为什么直接8.0_为什么要迁移到MySQL8.0?
  3. Android --- BaseQuickAdapter 子控件设置了addOnClickListener(R.id.xxx);点击的时候还是没反应
  4. 解决android应用程序适用新老android系统版本方法
  5. How to be a hacker
  6. ywy_c_asm题
  7. 【动态规划】cf1034C. Region Separation
  8. jquer WdatePicker 使用 手册
  9. 「 C++ MFC 」“设置线程运行多媒体定时器”教程
  10. MQ消息队列概述及主流MQ分析
  11. oracle手工重建EM步骤
  12. 小熊学Java第六天
  13. python房价分析论文_用Python研究了三千套房子,告诉你究竟是什么抬高了房价?...
  14. 高校邦python程序设计基础_高校邦Python程序设计基础【实境编程】答案
  15. python 文件缓存
  16. 【Python数据分析及可视化】美国犯罪监禁数据分析与可视化
  17. addb %al,%al
  18. 手机组态软件利用4G网络直接通信三菱E700变频器
  19. python字典按键值升序排列
  20. 【超详细Scratch教学课件分享】可暂停倒计时

热门文章

  1. Matlab中的一些小技巧
  2. 网页魔法菜单(使用说明)
  3. 画正圆角矩形 - HTML5 Canvas 作图
  4. 第二次作业 郭昭杰 201731062608
  5. web项目开启日志打印
  6. redirect_uri参数错误解决方法
  7. c++面对对象设计 2
  8. http://www.himigame.com/mac-cocoa-application/893.html
  9. Sqlserver循环嵌套
  10. thinkphp3.2.2前后台公用类架构问题