forked from luckybilly/CC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cc-settings-demo-b.gradle
50 lines (48 loc) · 2.37 KB
/
cc-settings-demo-b.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
//-----------------------------------------------------------
//
// demo使用的自定义cc-settings文件
// 主要是为了演示:
// 1. 自动注册组件B的processor
// 2. 全局拦截器的依赖
//
//-----------------------------------------------------------
apply from: rootProject.file('cc-settings.gradle')
//apply from: 'https://raw.githubusercontent.com/luckybilly/CC/master/cc-settings.gradle'
dependencies {
//这里是为了示例给跨app组件调用添加权限验证
//2018-06-03注:由于跨app组件调用在正式发布时会关闭,一般情况下,不需要添加权限验证
implementation project(':component_protect_demo')
//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的子类
}
*/
project.ext.registerInfoList.add([
//在自动注册组件的基础上增加:自动注册组件B的processor
'scanInterface' : 'com.billy.cc.demo.component.b.processor.IActionProcessor'
, 'codeInsertToClassName' : 'com.billy.cc.demo.component.b.ComponentB'
, 'codeInsertToMethodName' : 'initProcessors'
, 'registerMethodName' : 'add'
])
//也可以按照上述格式继续添加你自己的自动注册需求,俗称:搭顺风车