-
Notifications
You must be signed in to change notification settings - Fork 635
/
cc-settings-demo.gradle
55 lines (52 loc) · 2.41 KB
/
cc-settings-demo.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//-----------------------------------------------------------
//
// demo使用的自定义cc-settings文件
// 主要是为了演示:
// 1. 自动注册组件B的processor
// 2. 全局拦截器的依赖
//
//-----------------------------------------------------------
project.apply plugin: 'cc-register'
//project.dependencies.add('api', project(':cc')) //用最新版
project.dependencies.add('api', "com.billy.android:cc:2.1.6") //用最新版
dependencies {
//其它apply当前gradle文件的module统一添加对demo_base的依赖
if (project.name != 'demo_base'){
implementation project(':demo_base')
}
//2018-06-03新增:这里是为了示例添加全局拦截器
if (project.ext.has('runAsApp') && project.ext.runAsApp) {
//说明:需要兼容的情况有3种(单独组件作为app运行、打包在主app内、组件在多个app上复用但全局拦截器不同)
// 为了兼容以上3种情况,建议将全局拦截器作为一个单独的module,在此处给不同app添加不同拦截器module
implementation project(':demo_interceptors')
}
}
//auto register extension:
// 源码地址:https://github.com/luckybilly/AutoRegister
// 功能介绍:
// 在编译期扫描将打到apk包中的所有类
// 将 scanInterface的实现类 或 scanSuperClasses的子类
// 并在 codeInsertToClassName 类的 codeInsertToMethodName 方法中生成如下代码:
// codeInsertToClassName.registerMethodName(scanInterface)
// 要点:
// 1. codeInsertToMethodName 若未指定,则默认为static块
// 2. codeInsertToMethodName 与 registerMethodName 需要同为static或非static
// 自动生成的代码示例:
/*
在com.billy.app_lib_interface.CategoryManager.class文件中
static
{
register(new CategoryA()); //scanInterface的实现类
register(new CategoryB()); //scanSuperClass的子类
}
*/
ccregister.registerInfo.add([
//在自动注册组件的基础上增加:自动注册组件B的processor
'scanInterface' : 'com.billy.cc.demo.component.b.processor.IActionProcessor'
, 'codeInsertToClassName' : 'com.billy.cc.demo.component.b.ComponentB'
, 'codeInsertToMethodName' : 'initProcessors'
, 'registerMethodName' : 'add'
])
//也可以按照上述格式继续添加你自己的自动注册需求,俗称:搭顺风车
//开启app内部多进程组件调用
ccregister.multiProcessEnabled = true