android 组件化demo,组件化demo

1. 环境准备

1.1创建相关组件

MainApp — app

Module A — LoginComponent Login组件

Module B — SearchComponent Search组件

BaseLibrary — ComponentLib 通讯库

1.2 配置gradle使相互依赖,为了让两个组件都可以作为library相互依赖

1.在gradle.properties中配置

#全局配置gradle环境

compile_sdk_version=28

min_sdk_version=21

target_sdk_version=28

support_version=28.0.0

constraint_layout=1.1.3

#配置某个组建是否可以独立运行

loginRunAlone=false

searchRunAlone=false

2.Login组件根据loginRunAlone判断LoginComponent是作为application还是libiary,如果是application,defaultConfig里面存在applicationId的选择(Search组件一样的逻辑)

if (loginRunAlone.toBoolean()) {

apply plugin: 'com.android.application'

} else {

apply plugin: 'com.android.library'

}

android {

.....

defaultConfig {

if (loginRunAlone.toBoolean()) {

applicationId "com.example.logincomponent"

}

.....

}

.....

}

3.相互依赖

e4b5598c442c

image.png

在MainApp依赖ModuleA和ModuleB时,若A/B为application,则不能依赖,所以在MainApp的build.gradle中

dependencies {

....

implementation project(':componentlib')

if (!loginRunAlone.toBoolean()){

implementation project(':logincomponent')

}

if (!searchRunAlone.toBoolean()){

implementation project(':searchcomponent')

}

}

4.配置组件 AndroidManifest.xml

作为一个application和一个library,AndroidManifest.xml是不一样的,library不需要节点的描述

新建manifest文件夹,copy AndroidManifest.xml到文件夹内作为application的AndroidManifest.xml。外面的AndroidManifest.xml作为library的AndroidManifest.xml,删除不需要的内容

在build.gradle中配置

defaultConfig {

.....

}

sourceSets {

main {

//独立运行与集成调试时使用不同的 AndroidManifest.xml 文件

if (loginRunAlone.toBoolean()) {

manifest.srcFile 'src/main/manifest/AndroidManifest.xml'

} else {

manifest.srcFile 'src/main/AndroidManifest.xml'

}

}

}

buildTypes {

....

}

e4b5598c442c

image.png

1. 代码实现通讯

demo地址 地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值