组件化
一、组件化是可以单独运行的也可以依赖到moduel.
1.比如公司旗下有很多项目,如果业务有重叠部分,使用组件化方便复用,同时减少公司人员成本,也有方便于新项目的研发
2.组件化业务模块分离,更加的解耦
二、如何看是module还是libary?
就是在build.gradle中,看apply是啥
三、如何单独运行同时也可依赖到主项目中?
1.建moduel,选择第一个。建完之后,加入
apply plugin: 'com.android.library'
先将它依赖到主项目上,后面会用到
2.在gradle.properties中加标识 ,通过改变它,来决定用libary还是module
isUsermodule=true(相当于开关)
false就是可以单独运行
3.在module的build.gradle中,获取标识,来进行判断
if(isUsermodule.toBoolean()){
apply plugin: 'com.android.library'
}else{
apply plugin: 'com.android.application'
}
同时删除applicationId “包名”,因为同一个应用,不可存在两个包名
如果是kotlin语言,kotlinandroid要在这个的下面,不然报错
4.在主项目中也要判断
因为第三个的第一步中作为libary引入了,可以看到主项目中会出现引入依赖
if(isUsermodule.toBoolean()){
implementation project(path: ':usercontent')
}
5.还有一个问题就是Usermodule里面是有入口的,而作为libary是不能有入口的。
1.在Project模式下的Main中建两个文件夹1.debug 2.release
debug为测试所以是有入口的清单文件,release文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.usercontent">
<application>
<activity android:name=".LoginActivity">
</activity>
</application>
</manifest>
6.配置两个清单文件:
android{
sourceSets{
main{
if(isUsermodule.toBoolean()){
manifest.srcFile'src/main/release/AndroidManifest.xml'
}else {
//单独测试的
manifest.srcFile'src/main/debug/AndroidManifest.xml'
}
}
}
}