为什么要用模块化、组件化才能完成 Android 项目中类加载功能

首页 / 常见问题 / 项目管理系统 / 为什么要用模块化、组件化才能完成 Android 项目中类加载功能
作者:项目管理 发布时间:24-10-23 18:02 浏览量:7866
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

要用模块化、组件化才能完成 Android 项目中类加载功能的原因:Android项目中的类加载功能是通过Java虚拟机实现的,而JVM是基于Java语言的模块化和组件化设计思想来构建的,如果要完成类加载功能,就需要使用模块化、组件化的方法来组织代码结构和管理资源。

一、要用模块化、组件化才能完成 Android 项目中类加载功能的原因

Android项目中的类加载功能是通过Java虚拟机(JVM)实现的,而JVM是基于Java语言的模块化和组件化设计思想来构建的。因此,在Android项目中,如果要完成类加载功能,就需要使用模块化、组件化的方法来组织代码结构和管理资源,以便让JVM能够更好地识别和加载所需的类文件。

Android工程的组件一般分为两种:

  • application组件: 是指该组件本身就可以运行并打包成apk。
  • lib组件: 是指该组件属于app的一部分,可以供其它组件使用但是本身不能打包成apk。

正常一个App中可以有多个module(模块),但是一般只会有一个module是设置为application的,其他均设置为library; 组件化开发就是要每个module都可以运行起来,因此在开发期间每个module均设置为application,发布时再进行合并。Android项目中代码量达到一定程度,编译将是一件非常痛苦的事情; 短则一两分钟,长则达到五六分钟;随着app业务的壮大,模块越来越多,代码量超10万是很正常的。这个时候我们会遇到以下问题:

  • 稍微改动一个模块的一点代码都要编译整个工程,耗时耗力
  • 公共资源、业务、模块混在一起耦合度太高
  • 不方便测试

组件化开发可以有效降低代码模块的耦合度,使代码架构更加清晰,同时模块化的编译可以有效减少编译时间,当然总的编译时间是不会减少的,只是App模块化之后开发某个模块时,只需要编译特定模块,可以快速编译调试。通过模块化和组件化,可以将整个应用分解为多个模块或组件,并将其编译成不同的二进制文件,从而实现代码的复用和灵活性。同时,模块化和组件化还能简化开发流程、提高代码质量,并使代码更易于维护和升级。

二、模块化、组件化和插件化简介

在 Android 中,组件化、插件化和模块化都是很常见的架构设计手段,用于提高应用开发的灵活性、扩展性和复用性。组件化、插件化和模块化可以混合使用,根据项目的需求和规模选择合适的方案。

1、模块化

模块化最初的目的是将同一类型的代码整合在一起; 所以模块的功能相对复杂,但都同属于一个业务;不同模块之间也会存在依赖关系; 但大部分都是业务性的互相跳转,从地位上来说它们都是平级的。模块化编程是一种软件设计技术,强调将程序的功能分离为独立的可互换模块,因此每个模块都包含仅执行所需功能的一个方面所需的一切。简单来说就是:模块化是将功能拆分,分成相互独立的模块,以便于每个模块只包含与其自身功能相关的内容。

特点:

  • 分属同一功能/业务的代码进行隔离(分装)成独立的模块,可以独立运行; 以页面、功能或其他不同粒度划分程度不同的模块,位于业务框架层,模块间通过接口调用,目的是降低模块间的耦合,由之前的主应用与模块耦合,变为主应用与接口耦合,接口与模块耦合;
  • 模块就像有多个USB插口的充电宝,可以和多部手机充电,接口可以随意插拔,复用性很强,可以独立管理; 模块就像是独立的功能和项目(如淘宝:注册、登录、购物、直播…),可以调用组件来组成模块,多个模块可以组合成业务框架。

模块化设计是将整个项目按照功能模块进行拆分,在开发期间更加方便地进行分工协作。和组件化不同,模块化并不是将业务逻辑拆分到不同的组件内部,而是将整个项目按照业务模块进行逻辑的划分。在实现模块化的过程当中,可以采用以下步骤

  • 确定项目中每个模块的职责和功能。
  • 使用 Gradle 等自动化工具来管理每个模块的依赖关系。
  • 使用业务相关的命名空间来划分代码的功能,从而实现模块化。
  • 定义接口或抽象类来规范模块之间的交互,避免相互依赖。

2、组件化

组件化最初的目的是代码重用,功能相对单一或者独立; 在整个系统的代码层次上位于最底层,被其他代码所依赖,所以说组件化是纵向分层。基于组件的软件工程 (CBSE) 也称为基于组件的发展 (CBD),是软件工程的一个分支,它强调在给定软件系统中提供的广泛功能方面的关注点分离。它是一种基于重用的方法,用于定义、实现和组合松散耦合的独立组件到系统中。这种做法旨在为软件本身和赞助此类软件的组织在短期和长期带来同样广泛的利益。简单来说就是:组件化就是基于可重用为目的的,将一个大的软件系统按照分离关注点的形式,拆分多个独立的组件,减少耦合。

组件化的核心思想是将业务拆分成独立的模块,利用模块间的相互独立性,将不同业务模块分割成不同的组件。这样可以提高代码的可复用性、可维护性和可拓展性。在实际开发中,可以采用以下步骤来实现组件化:

  • 将项目按照不同的业务模块进行拆分。
  • 使用路由框架来实现模块与模块之间的跳转(通常使用 ARouter)。
  • 采用组件化设计模式,将组件间的依赖关系进行清晰地规划和管理,包括使用接口或抽象类定义组件的标准、使用消息机制来解耦组件之间的关系等。
  • 在代码实现时要注意各个模块之间的耦合度,避免出现相互依赖、难以维护的情况。

特点:

  • 把重复的代码提取出来合并成为一个个组件,组件最重要的就是重用(复用),位于框架最底层,其他功能都依赖于组件,可供不同功能使用,独立性强
  • 组件就像一个个小的单位,多个组件可以组合成组件库,方便调用和复用,组件间也可以嵌套,小组件组合成大组件

3、插件化

插件化是指将应用程序的一部分功能打包成一个插件,通过动态加载和卸载实现功能的增减。插件化相比于常规的 apk 开发,更加灵活,能够动态的添加功能模块,且不需要重新编译打包整个应用程序,缩小了应用程序的体积。插件化的主要思想就是将应用的某些功能模块以插件的形式动态加载到主工程中,从而实现应用动态化、组件化、灵活化、轻量化等一系列的好处。

插件化的实现步骤如下:

  • 开发插件化应用之前,需要先写一套基于插件化框架的核心代码,包括插件的加载、安装、卸载和类加载等逻辑。
  • 编写插件模块时,需要将代码写成插件模式,即将代码和资源打包成一个 APK,并且确保插件与主工程是相互独立、互不干扰的。
  • 主工程需要能够动态地加载某些插件,并进行跳转和使用。
  • 需要考虑插件与主工程之间的数据传递、通信和资源共享等问题,从而实现完整的插件化功能。

特点:

  • 宿主和插件分开编译
  • 并发开发
  • 动态更新插件
  • 按需下载模块
  • 方法数或变量数爆棚
  • 插件无需安装即可运行

延伸阅读1:组件化开发的优点

  • 业务模块分开,每个模块可以独立开发编译运行,解耦的同时也降低了项目的复杂度
  • 开发单个模块时可以共享资源和工具类
  • 可以针对单个模块测试, 开发调试时不需要对整个项目进行编译
  • 多人合作时可以只关注自己的业务模块,把某一业务当成单一项目来开发
  • 可以灵活的对业务模块进行组装和拆分
最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台:织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

管理型项目优缺点有哪些
01-10 16:58
项目部管理指标有哪些类型
01-10 16:58
管理亮点材料包括哪些项目
01-10 16:58
项目产品的风险管理有哪些
01-10 16:58
项目合同管理制服有哪些
01-10 16:58
项目实施的管理结构有哪些
01-10 16:58
项目总管理实践内容有哪些
01-10 16:58
项目安全管理岗职责有哪些
01-10 16:58
项目需求管理重点内容包括哪些
01-10 16:58

立即开启你的数字化管理

用心为每一位用户提供专业的数字化解决方案及业务咨询

  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科技中一路大族激光科技中心909室
  • 座机:400-185-5850
  • 手机:137-1379-6908
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2024. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
数字化咨询热线
400-185-5850
申请预约演示
立即与行业专家交流