Android 组件化开发

本文探讨了Android组件化开发的重要性,旨在解决项目维护困难和代码耦合度高的问题。通过将应用拆分为多个可独立运行的Module,降低模块间的依赖,便于单独测试和维护。在开发过程中,Module可以通过配置在application和library间切换,实现灵活的打包和部署。总结来说,组件化开发能提高项目的可维护性和复用性。
摘要由CSDN通过智能技术生成

Android 组件化开发


前言

以前我在一家公司遇到这样的问题,他们时专门给客户做各种各样的app的,写了很多应用,基本上都有一些通用的功能,本来是有一个功能齐全的项目,可是随着人员的进出,标准项目没人维护,于是git上建了一堆不同功能的app分支,后来的人每当修改完这个分支的bug,又得去修改其他分支的问题,至少十几个的分支,维护起来相当耗费精力,在这种情况下,网上查了一堆资料,知道了有个东西叫组件化开发,当然还有个插件化,但本篇文章只讲组件化的一些个人理解。

目的

将整个app按模块分成几个Module,公用的部分封装成一个单独的Module,降低代码之间的耦合性,每个不同的app只需要调用不同的Module就行,处理bug时也只需要修复有问题的Module就可以,然后调用调用最新的Module就可以。

原理

我们的项目中主要是各种Module组成的,可运行的在对应的build.gradle配置为apply plugin: ‘com.android.application’,不能运行的在对应的build.gradle配置为apply plugin: ‘com.android.library’,而组件化的开发其实就是将各种Module动态配置,开发的时候每个Module都设置为application,变成可单独运行的apk,做release版本时在将其他的Module都设置为library。

组件化
下图我是我一个登录的demo,其他的Module默认是library,现在如何将这个项目组件化
这里写图片描述
组件化就是为了在开发的时候将各个Module变成单独可以运行的apk,而发布时合成到一起变成一个完整功能的apk。所以

步骤一:

先在项目的gradle.properties中添加IsBuildMudle=false|true这句话,false代表其他的Module以library的形式存在,而true代表以application的形式存在。

步骤二:

在app Module的gradle中dependencies下重新配置引入其他Module的方式,原来的时这样写compile project(path: ‘:loginlibrary’),而现在需要这么写

if (!IsBuildMudle.toBoolean()) {
compile project(path: ‘:loginlibrary’)
} else {
compile project(path: ‘:baselibrary’)
}

修改loginlibrary中gradle中默认以library引入的方式
apply plugin: ‘com.android.library’,改为

if (IsBuildMudle.toBoolean()) {
apply plugin: ‘com.android.application’
} else {
apply plugin: ‘com.android.library’
}

步骤三:

切换状态的Module还需要配置不同的AndroManifest.xml文件,应为作为application的时候是需要配置启动Activity的
这里写图片描述

而作为library时,AndroidManifest.xml中是这样的
这里写图片描述

如何切换使用这俩个文件呢,在对应Module的gradle中的android中添加一下代码:

sourceSets {
main {
if (IsBuildMudle.toBoolean()) {
manifest.srcFile ‘src/main/debug/AndroidManifest.xml’
} else {
manifest.srcFile ‘src/main/release/AndroidManifest.xml’
}
}
}
resourcePrefix “modulelogin_”

resourcePrefix的意思的是通过给模块设置不同的资源前缀,可以避免重复命名。

完整的Module结构图
这里写图片描述

总结

组件化的就是为了将项目中的Module可以单独出来开发测试,便于以后的项目维护。不管项目有几个Module,都需要有切换application,library的判断,Moudle中的AndroidManifest也要记得在gradle中android下添加配置做切换

注:baselibrary不要管,它就是一个公用的library,其他的Module都需要调用到它,所以不需要这种配置,每次更换IsBuildMudle配置时需要重新同步一下项目,个人见解,希望对大家有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值