该文档未完善
开发文档
欢迎来到中大儿开发者文档!本部分内容专为希望了解中大儿工作原理以及参与开发的用户设计。
项目
中大儿是一个基于 Java/Kotlin + Jetpack Compose 开发的Android应用,使用Android Studio作为开发工具,采用MVVM的思想,通过viewModel将view和model连接。
开源
中大儿使用了以下开源项目:
- Material3
- androidX
- fastjson2
- okHttp
- Shizuku
- Kotlin
- Glide
- RikkaX
- Markwon
- Shizuku
- [Navigation3]
- [Room3]
- [Compose]
- [DataStore]
- [Miuix]
开发流程
网络请求$\rightarrow$数据处理$\rightarrow$UI渲染$\rightarrow$界面过渡
网络请求
本软件使用okhttp进行网络请求,okhttp的使用文档参考()[]
为了方便调用okhttp,对okhttp常见的方法封装到com.sysu.edu.api.HttpManager,HttpManager的各函数及说明参考()[]
同时整理不同域名下的网络请求,在基于com.sysu.edu.model.BaseModel继承基于jwxt、xgxt、portal、zhny、pay等域名开发的model,统一处理登录请求时需要的必要参数(如Cookie、Authorization、Token、UA、Referer)以及响应数据的统一处理,model的使用方法参考()[]
绝大部分请求需要使用NetID登录后的Cookie,同时不同域名下NetID登录的逻辑是不同的,本软件将部分域名的登录逻辑统一到com.sysu.edu.api.LoginManager,具体已经实现登录的域名详见com.sysu.edu.api.TargetUrl,LoginManager的文档详见()[]
Cookie、Token、Authorization数据统一在com.sysu.edu.api.CookieManager、com.sysu.edu.api.Authorization
数据处理
鉴于网络请求返回的数据多数为json和html格式,因此本软件使用fastjson2和jsoup处理数据,fastjson2的使用文档参考()[],jsoup的使用文档参考()[]
存储在本地的数据主要使用Datastore和Room3进行管理
UI渲染
本软件目前使用compose进行UI渲染,使用MaterialExpreessive作为主题,并且使用Material Componet作为组件,具体组件参考()[]
同时为了统一界面风格,本软件将常用的视图和控件整合到com.sysu.edu.view下
界面过渡
为实现更优雅的过渡效果,本软件采用Navigation3作为导航,Navigation3的使用文档参考()[]
本软件将NavKey整合在com.sysu.edu.nav.NavKey下,命名为各个服务对应的Activity前缀