总结一波安卓组件化开源方案

2023-11-02

摘要

为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。

前言


android平台上组件化开发的概念近两年非常火热,面试中被问到的频率也很高。

目前网上关于组件化开发方案的文章、开源库比较多,让很多初学者感到迷茫,不知该从何处入手,难以确定自身的业务特性适合使用哪种框架,如果全部都学习一遍成本比较高,而且在学习过程中容易将各方案的一些特性记混淆。

为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。

由于篇幅及个人精力所限,只选取了比较有代表性的几个组件化方案进行比较,欢迎大家提issuepr完善更多组件化方案的对比。

持续更新中,欢迎watch、star

对比表


markdown语法对表格支持的不太友好,为了方便查看,下面贴出对比表的截图,具体的表格见github

点击看大图

android组件化框架对比图

表格中框架的相关链接


序号 名称 相关文章
1 CC wiki

CC框架实践(1):实现登录成功再进入目标界面功能

CC框架实践(2):Fragment和View的组件化

CC框架实践(3): 让jsBridge更优雅
2 得到DDComponentForAndroid Android彻底组件化方案实践

组件化设计思路 浅谈Android组件化

原理解释文章Android彻底组件化方案实践

demo解读文章Android彻底组件化demo发布
3 ModularizationArchitecture Android架构思考(模块化、多进程)

ModularizationArchitecture 使用教程
4 阿里ARouter 开源最佳实践:Android平台页面路由框架Arouter
5 聚美组件化方案Demo
(基于聚美Router)
聚美组件化实践之路

Router:一款单品、组件化、插件化全支持的路由框架
6 ActivityRouter ActivityRouter路由框架:通过注解实现URL打开Activity

通过 URL 打开 Activity

其它比较有特色的组件化方案简介


  • 51信用卡路由方案OkDeepLink

    曾经在作者的github账号上开源,现已删除,作者在博文中提到后续2.0版会放到公司的github账号上,但一直未发布。 这里有个fork版本

    这个方案中使用aspectJ来实现路由表的自动注册,与其它方案不太一样,不过此方案的作者也打算废弃这种方式,理由是aspectJ还是太重了

    这个方案文章中还提到了关于路由安全的措施,其中有使用URL中加签名的方式来屏蔽非法访问,类似于客户端连接服务端的http请求对参数进行加密校验

  • 组件总线方案ModuleBus

    介绍文档:组件化开发跨module交互方式—ModuleBus交互

    这个方案的特别之处在于其借鉴了EventBus的思想,组件的注册/注销和组件调用的事件发送都跟EventBus类似

  • 美柚路由方案RouterKit

    这个方案的特别之处在于其组件自动注册的方案:通过apt生成每个module的路由表,然后复制到app的assets目录,运行的时候遍历asset目录,反射对应的activity

  • 其它(欢迎给我提issuepr补充!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

总结一波安卓组件化开源方案 的相关文章

  • 如何在 Android 中保存相机的临时照片?

    在尝试从相机拍照并将其保存到应用程序的缓存文件夹中时 我没有得到任何可见的结果 应用程序不会崩溃 但在 LogCat 上 当我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 时 我收到此消息 09 17 14 03
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 面试题:软件测试工程师工作职责?

    软件测试工程师工作职责 工作职责 测试人员有不同的级别 或者说有不同的职位称呼 都有相对应不同的工作职责 如果你想了解现在企业里面最新的职位需求的话 最简单的一个方式就是直接去大型招聘网站上BOSS直聘或者前程无忧 赶集网去搜索软件测试工程
  • 前端表单验证 for循环验证 自定义表单验证

  • 关于Java的那些安全框架

    前言 在Java开发中 安全是一项至关重要的特性 不仅仅是因为它保护我们的数据和系统免受恶意攻击 还因为它保护着我们和我们的用户的隐私 因此 Java安全框架的选择至关重要 在本篇博客中 我们将探讨一些常见的Java安全框架 以及如何使用它
  • 微服务发展趋势

    目录 云原生网关逐步成型 服务网格回归理性 微服务架构分层逐渐清晰 微服务技术标准逐步形成 数据面 SidecarProxy 与 Proxyless 模式的融合 服务治理数据面透明化 控制面标准化 分布式事务从多样化到标准化 多语言解决方案
  • Android混合开发全解析

    现在的app都开始流行混合开发了 这是一个app开发的新技术 作为android程序猿的我们也应该要了解并且掌握他 那么在使用之前 我们一定要搞清楚 我们的哪些场景使用混合开发好一些呢 这个问题一定要搞清楚 因为现在的混合开发还不成熟 We
  • 测开基础知识02

    1 软件测试 软件测试 软件测试是软件研发的一部分 不止是找出软件错误的活动 是软件开发每一环节中一些列质量活动的总称 包括软件研发过程的改进 软件质量评定 需要参与到每一环关键的决策 发现程序中的错误 根据需求 分析执行软件的全过程 保证
  • lol英雄全皮肤爬取

    如何实现英雄联盟全皮肤 作为英雄联盟资深老玩家 想必大家都希望自己能拥有一套全皮肤 那么今天 小编就带着大家用网络爬虫的方式 爬取一套属于自己的全皮肤 冲 第一步 首先 打开我们全皮肤所在的网站 https 101 qq com hero
  • c#和c++的opencv位图数据参数互换问题解决方法

    1 C 调用vc dll 传递参数的问题 Bitmap 转换为 opencv mat 保存后图片不一样 vc 代码 bool Recognize Point 2F arr uchar b Mat src cv Mat 415 770 CV
  • 网络基础:网络协议及数据报格式

    网络应用程序设计模式 网络分层模型 两台计算机通过TCP IP协议通讯过程 协议格式 以太网帧格式 ARP探测的概念及数据报格式 ip段格式 UDP数据报格式 TCP数据报格式 TCP IP数据包封装 NAT映射与打洞机制 概念说明
  • 6950有史以来最经典玩机宝典/软件包/导航

    http www diypda com forum php mod viewthread tid 116274 教程 6950有史以来最经典玩机宝典 软件包 导航 复制链接 新支点6950玩机宝典 作为论坛资深认证商家和6950的改卡开发商
  • Linux进程

    目录 进程基本概念 描述进程PCB task struct内容分类 通过系统调用创建进程 fork 进程状态 Z zombie 僵尸进程 孤儿进程 进程优先级 进程基本概念 书上的概念是 进程是程序的一个执行实例 正在执行的程序等 在内核的
  • Python 回调函数实现异步处理

    说到异步处理大家应该会联想到Ajax 处理 那我们先来说说什么是Ajax 请求 Ajax 就相当于是模拟了一个信息发送请求 你可以在很多网站上注册的时候会发现 比如用户名输入 123 那么它可能会提示你该用户已经存在 而给你的感觉是页面并没
  • windows、Ubuntu安装QT时经常出现“无法下载存档……”解决办法

    说明 以windows为例 ubuntu操作一样 下载好exe执行文件 双击执行时 经常出现下图提示 无法下载存档 是由于默认使用的是境外源 有两种解决方式 方式一 挂魔法在线安装 方式二 使用国内源 清华大学 https mirrors
  • 读阮一峰ES6对象解构赋值小细节

    最近看阮一峰的ES6发现了个地方有点不懂 理解之后 特意记录下来 let obj let arr foo obj prop bar arr 0 foo 123 bar true obj prop 123 arr true 就是上面这块 首先
  • NavicatPremium连接MySQL出现异常Authentication plugin ‘caching_sha2_password‘ cannot be loaded的解决方案

    一 出现异常原因 由于个人本机安装的mysql是8 0 在使用Navicat连接数据库时 出现Authentication plugin caching sha2 password cannot be loaded异常 通过搜集资料得知my
  • 几种常用的无源滤波器的特征

    无源滤波器的缺点 带负载能力差 无放大作用 特性不理想 边沿不陡峭 各级相互影响 滤波器是一种通过一定频率的信号而阻止或衰减其他频率信号的部件 分类 按照处理信号形式 模拟滤波器和数字滤波器 按功能分 低通 高通 带通 带阻 按电路组成分
  • Visio中实现任意两点之间的连线

    参考博客01 https blog csdn net wanzhen4330 article details 84837279 想实现的效果 如下图所示 想要实现的是像下面图中 让箭头线段多次弯折 最终连接两个矩形方框 二 做法 在Visi
  • SQLServer数据库密码已过期问题 处理

    Sqlserver在设置登录账户信息的时候 有个复选框信息会被默认勾上 即强制实施密码策略 默认勾选上的还有强制密码过期 如果勾上了这个强制密码过期后 则你的账户密码在一定时间登录后会提示Sqlserver登录密码已过期请重新设置密码 如果
  • docker-management遇到的一些问题

    一个mysql节点 两个cloudstack management节点 先启动mysql节点 如果cloudstack management容器节点无法访问mysql节点 注意docker宿主机的iptables规则 启动cloudstac
  • 总结一波安卓组件化开源方案

    摘要 为了让大家能快速对android组件化有个整体的认识 本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比 从而更好的区分各组件化方案的特点 快速选择适合自己使用的方案深入学习并使用 在面试中被问到时也能做到心中有数 前