-
Notifications
You must be signed in to change notification settings - Fork 208
/
note.txt
72 lines (64 loc) · 3.4 KB
/
note.txt
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
signature 是签名文件, 文件的密码都是 123456, 或者 xiaojinzi
java8 的支持修改点:
- 注解驱动器上的 @SupportedSourceVersion 注解 RELEASE_7 更换为 RELEASE_17
- ComponentCompiler 模块的 sourceCompatibility = "8" 和 targetCompatibility = "8" 修改
- 各个模块添加如下代码:
```
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
```
发布的时候分支合并操作流程
develop -> master
master -> master-java8
master -> master-androidx
master-androidx-java8
master -> develop
每次发布的流程
- 简单走一下各个跳转的流程
- 走完全部的测试用例
- 修改 dependencies.gradle 中 gradle plugin 的版本号
- 生成一个 gradle plugin 插件.
- 修改 dependencies.gradle 中 Component 的版本号
- 合并代码到 Master 分支
- 打上 Tag, 比如:v1.7.5.1
- 推送 master 到远程
- 合并 master 代码到 master-androidx
- 解决冲突并且修复代码中运行的错误并提交
- 简单走一下各个跳转的流程
- 走完全部的测试用例
- 打上 Tag, 比如 v1.7.5.1-androidx
- 推送代码到远程
整个项目中, 可能需要利用 Context 进行初始化的地方有:
- 用户自定义的拦截器
- 用户自定义的路由降级
整个项目中, 需要用户自定义的组件有:
- 自定义拦截器
- 全局拦截器
- 局部拦截器
- 自定义路由降级
- 自定义条件
每次开发完毕后都必须检查的几个项目,demo 中的所有测试情况都应该涵盖下面的情况
1.全局拦截器和自定义拦截器和页面拦截器执行是否正常
2.跨组件拦截器不存在的时候执行是否正常
3.query 传递参数是否正常
4.默认的bundle 携带参数是否正常
5.自定义跳转和自定义Intent 是否正常
6.当Activity销毁路由请求是否自动取消
7.当Fragment销毁路由请求是否自动取消
8.RxRouter 的错误默认忽略是否全部正常
9.RxRouter 获取 Intent 是否正常
开发的库哪些地方如果有改动需要注意的:
1.业务组件加载和卸载的时候,几个模块需要各自注意几点:
1.1 中央路由表中有全部的路由对应的关系,当业务组件加载和卸载的时候,会把业务组件的那部分子路由表的对应关系给删除
1.2 ServiceCenter 倒是不会有全部的 Service
当加载业务组件的时候,每一个业务组件的 HostServiceImpl 会注册自己的 Service 到 Service 容器中
当卸载业务组件的时候,每一个业务组件的 HostServiceImpl 会删除自己的 Service 从 Service 容器中
1.3 InterceptorCenter 当加载或者卸载业务组件的时候会感知到,并且记录下已经发生模块的变化
当用到全部的全局拦截器的时候,会根据是否变化选择是否去重新加载每一个子模块的全局拦截器
而 InterceptorCenter 也会从总表里面删除或者加载业务模块的拦截器
一个特殊的例外:ModuleBase 是一个模块,理论上是不可能卸载的,也可以不当成一个业务模块
这个模块会被所有业务模块引用,如果业务模块是使用了 ModuleBase 的拦截器,通过 class 的方式引用,那你就算卸载 ModuleBase
模块也是没用的,还是能引用到.但是操作上是不允许出现卸载 ModuleBase 模块的
1.4 生命周期的管理中,当有业务模块加载的时候,缓存的部分不动,如果有业务模块卸载,会清空缓存模块的所有缓存!