主工程的代码堆积,造成包目录结构臃肿,难区分。借用pins工程结构暂时,其相互独立的代码进行区分,为后期模块组件化,留下了灵活性。
pins ,原理是gradle sourceSets
,
sourceSets {
main {
def dirs = ['p_vpos',//vpos
'p_vbook',//v图
'p_vbook_door', //v图桌面机+门禁
'p_vlocker',//v柜
'p_thirdPart',//第三方库
'p_serialBus',//串口库
'p_commonPart',//公用库
'p_samplePart',//样例demo
]
dirs.each { dir ->
def projectName = project.getName()
def javaSrcDir = "src/$dir/main/java"
def resDir = "src/$dir/main/res"
def javaFiles = new File(projectName, javaSrcDir)
def resDirFiles = new File(projectName, resDir)
println("include pins project ${javaFiles.getAbsolutePath()} ")
if (!javaFiles.exists()) {
javaFiles.mkdirs()
}
if (!resDirFiles.exists()) {
resDirFiles.mkdirs()
}
java.srcDir(javaSrcDir)
res.srcDir(resDir)
}
}
}
目录结构清新
src
main
p_commonPart
p_samplePart
p_serialBus
p_thirdPart
p_vbook
p_vbook_door
p_vlocker
p_vpos
对于,代码隔离性,可以参考微信的api, 或者一些插件MicroModule等实现。个人觉得要是模块与主工程关系不强,就是应该独立一个模块