前言
组件化构建Gradle插件 插件包的名字叫: component,其中提供了两个组件化辅助插件,分别叫calces.appconfig和calces.modules。 主要的功能是: 提供Gradle配置App依赖的组件、配置组件是否能单独运行、实现多个依赖不同模块的App同时构建等。
GitHub
https://github.com/Tangpj/calces-gradle-plugin
1. 项目的build.gradle配置plugins依赖
buildscript {
...
}
plugins {
id "calces.appconfig" version "3.3.0-alpha01"
}
2. 项目build.gradle配置AppConfig
AppConfig
debugEnable
布尔值 是否开个debug模式,只有当debugEnbale为true时,modules的isRunAlone才能生效。即modoules只能在debug模式中独立启动
apps
String列表 app列表,控制当debug模式为false时的app数量与基础配置
modules
String列表 组件列表,配置需要实现自动组件化控制的组件列表
App(apps里面的配置项)
name
String类型 app的名字,需要和项目路径对应,如果不填写默认为该配置的名字(如配置名为app的话,name则为:name)。导入规则和setting.gradle中的include规则保持一致
modules
String列表 需要依赖的组件列表,通过修改该属性实现依赖不同的组件
dependMethod, String类型 依赖的方法,默认为implementation,一般不需要配置该字段,除非有特殊需求
applicationId
String类型 动态填入applicationId。非特殊情况,建议为空
applicationName
String类型 配置启动Application(对应manifest中的application name属性)
mainActivity, String类型 配置启动Activity,为空则默认为AndroidManifest中的Activity。非特殊情况,建议为空
Modules(modules里的配置项)
name
String类型 与app中的name一致
isRunAlone
布尔值 该组件能否独立启动
applicationId
String类型 独立启动时的applicationId
applicationName
String类型 配置启动Application(对应manifest中的application name属性)
mainActivity
String类型 独立启动的Activity
appConfig {
debugEnable true
apps {
app {
name ":app"
modules ":user", ":store", ":news"
applicationId "com.course.beehome"
applicationName ".app.App"
mainActivity ".mvp.view.act.MainActivity"
}
}
modules {
user {
name ":user"
mainActivity ".mvp.view.act.MainActivity"
applicationId "com.course.user"
applicationName ".app.UserApp"
isRunAlone false
}
store {
name ":store"
mainActivity ".mvp.view.act.MainActivity"
applicationId "com.course.store"
applicationName ".app.StoreApp"
isRunAlone true
}
news {
name ":news"
mainActivity ".mvp.view.act.MainActivity"
applicationId "com.course.news"
applicationName ".app.NewsApp"
isRunAlone false
}
}
}
3. 在modules(子模块)引入模块自动化构建插件 (包括app)
apply plugin: 'calces.modules'