浅谈组装式应用--Android组件化开发

简介: 当我们做项目的时候,大部分功能都是重复的,尤其一些定制化saas的APP,提供基础版本后,进行定制修改,但是可能有6,7成的功能是重复的,这样子就造成大量的浪费,如果我们像一个组装积木一样,对公共模块以及定制模块进行组装,这样子来提高人效,于是引入了组件化开发。

为什么要组装式开发

当我们做项目的时候,大部分功能都是重复的,尤其一些定制化saas的APP,提供基础版本后,进行定制修改,但是可能有6,7成的功能是重复的,这样子就造成大量的浪费,如果我们像一个组装积木一样,对公共模块以及定制模块进行组装,这样子来提高人效,于是引入了组件化开发。

什么是组件化开发

正常的项目如下图,一个APP,包含了多个业务模块,多个功能模块再去调用底层的Library库,在这种情况下,业务之间相互依赖并且相互调用,牵一发而动全身,由于存在多个业务模块,导致编译速度缓慢。
其实对于大模块下是可以拆分出不同的小模块,组件化的思想也就由此而来,我们可以把一个APP拆分成一个个小的功能块。
组件化的方向就是由一个项目工程拆分成若干个模块工程,由App主工程提供统一的入口,每个业务独立的模块共享项目的Common依赖库。每个模块完成属于自己这部分独立的功能,并且也提供了不同的团队独立并行开发不同的模块的解决方案。
图片1.png

如何实现组件化

组件化开发的第一步就是分层,分出公共的库提供各个组件公共调用,公共库是一个特殊的组件库,它是项目中最底层的组件,基本上所有的其他组件都会依赖公共库 组件,公共库 中放项目中所有弱业务逻辑的代码和解决循环依赖的代码和资源。
图片2.png
到这里,一个基本的组件化开发结构就差不多,但是这个结构可以继续细化。上述的模块如果在使用中,会经常遇到一个问题,不同模块之间也会存在自定义view、布局文件或者资源文件等重复性,但是这些如果放在系统层的依赖库中,又会破坏系统层的通用性。所以,我们还需要一个公共组件来专门提供上层业务逻辑模块的公共资源,比如所有的功能模块都需要登录,我们就可以将其放入公共组件中,这也能很好的保证APP的UI统一性,那么就组成了下面的模块化分层
图片3.png

如何进行不同Module的组装,核心是Module的切换,在集成打包的时候,所有的业务的module组成一个APP进行发布,但是在开发阶段,业务的module自身就是一个Application。
如何切换module的模式呢 ?
我们需要定义一个Boolean变量作为开关。根据开关分别设置module的模式,如下

if (isModule) {

apply plugin: 'com.android.application'

} else {

apply plugin: 'com.android.library'

}

组件间通信问题
页面跳转统一采用路由;在平常的Android开发中,页面的跳转我们使用Intent进行跳转,但是由于组件化之后,各个组件在开发阶段已经不能相互依赖,那么也就是至少不能使用显式Intent进行Activity的跳转,于是在这里引入了路由。
组件化之后,所有页面跳转都必须采用路由来实现。我们可以自己定义,当然也可以使用市场上比较成熟的方案,比如阿里的Arouter或者美团的WMRouter

路由需要定义URI,一个基本的URI如下:iwhalecloud://www.baidu.com/webview?url=*
包含了scheme,host,path,query。scheme这里根据不同的项目进行定义,比如这里的项目的scheme就定义为iwhalecloud,scheme跟host在同个项目中,都可以定义相同的值。我们真正使用到的是path以及query,path定义不同的页面,比如path=webview就代表webview页面,query带入传递的参数。当然,这只是在uri中带入参数,实际上路由也有类似post的方式带入比较复杂并且数据量大的参数。

相关文章
|
6天前
|
Android开发 开发者 Kotlin
探索安卓开发中的新特性
【9月更文挑战第14天】本文将引导你深入理解安卓开发领域的一些最新特性,并为你提供实用的代码示例。无论你是初学者还是经验丰富的开发者,这篇文章都会给你带来新的启示和灵感。让我们一起探索吧!
|
5天前
|
搜索推荐 Java Android开发
打造个性化安卓应用:从设计到发布的全程指南
【9月更文挑战第15天】本篇文章将带领读者踏上一段激动人心的旅程,从构思一个独特的安卓应用想法开始,直至将其变为现实并成功发布。我们将一起探索如何捕捉灵感、设计界面、编写代码以及最终将应用推向市场。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供宝贵的洞见和实用的技巧,让你的应用在竞争激烈的市场中脱颖而出。
35 17
|
3天前
|
Java Linux Android开发
深入理解Android开发:从基础到高级
【9月更文挑战第17天】本文将深入探讨Android开发的各个方面,包括应用开发、操作系统等。我们将通过代码示例来展示如何创建一个简单的Android应用,并解释其背后的原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
2天前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
20 3
|
2天前
|
存储 API Android开发
"解锁Android权限迷宫:一场惊心动魄的动态权限请求之旅,让你的应用从平凡跃升至用户心尖的宠儿!"
随着Android系统的更新,权限管理成为应用开发的关键。尤其在Android 6.0(API 级别 23)后,动态权限请求机制的引入提升了用户隐私保护,要求开发者进行更精细的权限管理。
13 2
|
6天前
|
XML 编解码 Android开发
安卓开发中的自定义视图控件
【9月更文挑战第14天】在安卓开发中,自定义视图控件是一种高级技巧,它可以让开发者根据项目需求创建出独特的用户界面元素。本文将通过一个简单示例,引导你了解如何在安卓项目中实现自定义视图控件,包括创建自定义控件类、处理绘制逻辑以及响应用户交互。无论你是初学者还是有经验的开发者,这篇文章都会为你提供有价值的见解和技巧。
14 3
|
8天前
|
API Android开发 iOS开发
安卓与iOS开发中的线程管理对比
【9月更文挑战第12天】在移动应用的世界中,安卓和iOS平台各自拥有庞大的用户群体。开发者们在这两个平台上构建应用时,线程管理是他们必须面对的关键挑战之一。本文将深入探讨两大平台在线程管理方面的异同,通过直观的代码示例,揭示它们各自的设计理念和实现方式,帮助读者更好地理解如何在安卓与iOS开发中高效地处理多线程任务。
|
8天前
|
Android开发 开发者 Kotlin
告别AsyncTask:一招教你用Kotlin协程重构Android应用,流畅度飙升的秘密武器
【9月更文挑战第13天】随着Android应用复杂度的增加,有效管理异步任务成为关键。Kotlin协程提供了一种优雅的并发操作处理方式,使异步编程更简单直观。本文通过具体示例介绍如何使用Kotlin协程优化Android应用性能,包括网络数据加载和UI更新。首先需在`build.gradle`中添加coroutines依赖。接着,通过定义挂起函数执行网络请求,并在`ViewModel`中使用`viewModelScope`启动协程,结合`Dispatchers.Main`更新UI,避免内存泄漏。使用协程不仅简化代码,还提升了程序健壮性。
21 1
|
3天前
|
搜索推荐 Java 测试技术
打造个性化安卓应用:从设计到发布的完全指南
【9月更文挑战第17天】在这个数字时代,拥有一款个性化的安卓应用无疑是展现创意、实现梦想的一大步。本文将带你走进安卓应用的开发世界,从设计理念的孕育到实际代码的编写,再到最终的应用发布,我们将一步步揭开应用开发的神秘面纱。无论你是编程新手还是希望提升现有技能,这篇文章都将是你的宝贵资源。让我们开始这段激动人心的旅程吧!
|
7天前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
19 0