上一章初级体验了一下模块化,但是还是有很多需要优化和改进的地方
思考点:
- 怎么单独运行某一个子模块,不影响到其他模块之间的依赖?
- 子模块需要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 星期五