目前阶段的秒拍工程已经有了一套成熟的组件化体系,不过仍然很多问题等待解决。
1.组件化完全依赖于工程的一些配置文件,导致没有一定经验的开发人员不能合理的把控好开闭原则。
2.当时提出的构想(组建一键切换为插件)仍然没有实现
3.繁琐的配置会容易出错。
为了解决这些问题,所以将提出下一代组件化的框架。
1.基本思路
主工程到底应该依赖什么?
现阶段的主工程,都是通过gradle的dependence直接compile引入gradle工程内部的project,如果可以更换一种方式,比如通过 "compile远程依赖",来引入其他工程,内部的module也都加上版本控制,这样会大大增加工程的稳定性。
主工程配置如下
MpAppWrapperConfig {
localMavenDir = "mpLocalMaven"
exclude['yxplayer']
}
其中,localMavenDir ,为指定的一个本地maven目录。通过此方法,构建一个本地的maven。然后其他工程publish到此maven目录下,可以增加编译的速度。
module怎样定义最好?
现在控制是否为单独编译模式存在着很大的隐患,配置文件都是通过明显的配置项在gradle.properties中配置。完全可以通过gradle plugin的方式来控制这些东西
module 中的config如下
MpCompConfig {
moduleName = "com.yixia.module.player"
debugDir = ['src/debug/java']
debugResDir = ['src/debug/res']
launcherActivity = "com.yixia.module.player.DebugActivity"
app = "com.yixia.module.player.PYApplication"
localMavenDir = "mpLocalMaven"
}
这里的配置项比较多,依次列举。
- moduleName指定独立编译期间的包名。
- debugDir,独立APP模式下的目录,在Module会剔除这项。
- debugResDir,独立模式下的res目录。
- launcherActivity ,独立模式下的主Debug用Activity。
- app ,此工程的独立app,如编译进主工程会自动打包进入application。
- localMavenDir输出的maven地址。