根据Gradle配置,自动实现Android组件的构建模式(application or library)
可配置多个依赖不同组件的App
自动要依赖需要的组件
自动配置组件独立运行
根据Gradle配置,自动生成你需要的smallestWidth适配文件
自动压缩位图
1.导入依赖库 在项目的build.gradle中
buildscript {
...
}
plugins {
id "calces.appconfig" version "3.3.0-alpha01"
}
在较旧的版本Gradle中或需要动态配置的情况下的插件构建脚本代码:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "gradle.plugin.com.tangpj.tools:component:3.3.0-alpha01"
}
}
apply plugin: "calces.appconfig"
2.在项目build.gradle配置AppConfig
appConfig {
debugEnable true
apps {
app1 {
mainActivity "com.xxx.MainActivity1"
modules ':modules1',
':modules2'
}
app2 {
mainActivity "com.xxx.MainActivity2"
modules ':modules1'
}
}
modules {
modules1 {
applicationId "com.xxxx.modules1"
mainActivity ".Modules1Activity"
isRunAlone true
}
modules2 {
applicationId "com.xxxx.modules2"
mainActivity ".Modules2Activity"
isRunAlone true
}
}
}
3.在modules(子模块)引入模块自动化构建插件(注意:不需要手动配置com.android.library或com.android.application)
apply plugin: 'calces.modules'
1.引入依赖库在Gradle及2.1及更高版本的插件构建脚本代码:在项目的build.gradle中
buildscript {
...
}
plugins {
id "calces.screen" version "1.3.4-alpha01"
}
在较旧版本的Gradle中或需要动态配置的情况下的插件构建脚本代码:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "gradle.plugin.com.tangpj.tools:screen:1.3.4-alpha01"
}
}
apply plugin: "calces.screen"
2.在需要适配的组件上build.gradle配置Screen值
screen{
auto true
dimens{
designPx 375
smallesWidths 360,480
scale 3 //保留小数位,默认为2
scaleMode BigDecimal.ROUND_HALF_UP //小数保留的方式
}
}
auto是用来确认是否需要自动生成sw文件的,会影响编译时间,如果values没有更新的话建议设置为false.除此之外,可以通过手动调用gradle任务来手动生成sw文件.
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
从外部URL映射到内部页面,以及参数传递与解析
跨模块页面跳转,模块间解耦
拦截跳转过程,处理登陆、埋点等逻辑
跨模块API调用,通过控制反转来做组件解耦
1.添加依赖和配置
android {
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
}
dependencies {
// 替换成最新版本, 需要注意的是api
// 要与compiler匹配使用,均使用最新版可以保证兼容
compile 'com.alibaba:arouter-api:x.x.x'
annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
...
}
// 旧版本gradle插件(< 2.2),可以使用apt插件,配置方法见文末'其他#4'
// Kotlin配置参考文末'其他#5'
2.添加注解
// 在支持路由的页面上添加注解(必选)
// 这里的路径需要注意的是至少需要有两级,/xx/xx
@Route(path = "/test/activity")
public class YourActivity extend Activity {
...
}
这里需要给每一个要进行跳转或传值的Module添加 path 不然找不到
在主入口的build.glider导入要进行跳转的Module
implementation project(':modules)
3.绑定Application
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// 打印日志
ARouter.openLog();
// 开启调试模式(如果在InstantRun(就是AndroidStudio2.0以后新增的一个可以减少很多编译时间的运行机制)模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
ARouter.openDebug();
// 初始化尽可能早,推荐在Application中初始化
ARouter.init(this);
}
}
4.传值
ARouter.getInstance().build("/day02/m1")//选择要跳转的module
.withString("name","李浩帆")//通过键值对的方法传值
.navigation();//开始
5.接收值
@Autowired(name = "name")//通过注解得到键值对
//在onCreate中声明
ARouter.getInstance().inject(this);
//name就是传过来的值