上一章初级体验了一下模块化,但是还是有很多需要优化和改进的地方
思考点:
- 怎么单独运行某一个子模块,不影响到其他模块之间的依赖?
- 子模块需要Application,难道要每个模块写一个?
- 因为是同一个服务器,所以网络请求库,怎么跨模块间公用?
- 模块间怎么通信?
解决
将项目结构修改下:
- app 模块
只内置一个 LauncherActivity 作为启动界面,之后跳转到某个详细模块
- library 模块
与业务无关的库,可放置到任何APP项目内作为底层支持
- common 模块
直接依赖library库, 与业务有关的公共库,内置 Application 、启动图标 、网络请求,以及路由地址管理,后期所有子模块,直接依赖common模块
详细
- 针对到每个模块,不影响到其他模块之间的依赖,的解决方案
ext {
// false 单独运行模式
// true 组建依赖模式
// isComponent = true
androidConfig = [
compileSdkVersion: 27,
minSdkVersion : 19,
targetSdkVersion : 27,
versionCode : 1,
versionName : "1.0"
]
moduleConfig = [
// 这里放置,每个模块的包名,以及是否开启模块模式
app : [
appId: "com.teccyc.teccyc"
],
loginAccount: [
isComponent: true,
appId : "com.teccyc.teccyc.loginAccount"
]
]
appcompat_v7_version = '27.1.0'
arouter_compiler_version = '1.2.2'
arouter_api_version = '1.4.1'
}
在moduleConfig 里,将每个模块的appID,以及是否模块化,详细配置
- 所有子模块公用一个Application
将APPlication,ic_launcher 以及网络请求,路由地址管理,以及会话支持,全都转移到common模块中去。所有子模块直接依赖common模块
- 模块间通信
在common模块中,依赖阿里开源的 ARouter ,模块之间跳转,传值,直接使用路由来搞定
2019-01-11 10:56:43 星期五