68 lines
3.3 KiB
Markdown
68 lines
3.3 KiB
Markdown
# 光环助手Android客户端
|
||
|
||
### 概述
|
||
|
||
光环助手Android客户端目前使用 Kotlin 作为主要开发语言,以 MVVM 作为参考架构模式进行开发
|
||
|
||
### 约束
|
||
|
||
为编写易读易维护且较健壮的代码,可参考以下约束
|
||
|
||
1. 尽量将逻辑代码放置于 ViewModel 中,View 中只执行 UI 操作
|
||
2. 尽量使 View 在被销毁之后仍能恢复状态,处理方式可参考 [保存界面状态](https://developer.android.com/topic/libraries/architecture/saving-states)
|
||
3. 尽量参考原有文件结构及命名规范,即以 大模块 - 小模块 的形式生成包关系
|
||
4. 遵循最小改动原则,在提交代码前务必先检查变动的代码,尽量以可控的变动规模来构成一个 commit ,以便日后追踪问题
|
||
5. 代码规范可参考 [AOSP Java 风格](https://source.android.com/setup/contribute/code-style)
|
||
6. 尽量使用 Kotlin 来写新文件
|
||
7. RecyclerView 的 ViewHolder 尽量使用 DataBinding 来减少代码以及提高可读性
|
||
8. Commit 前请确保不带入非项目必须文件,可手动修改 [.gitignore](https://stackoverflow.com/questions/8527597/how-do-i-ignore-files-in-a-directory-in-git) 文件忽略
|
||
9. 新页面请勿使用 ButterKnife 来进行 View 获取和绑定,请使用 ViewBinding
|
||
10. No AsyncTask!
|
||
|
||
### 公用部分
|
||
|
||
本项目使用 LiveData 实现了一个简单通用的基础列表分页功能,具体可见 `ListFragment`, `ListViewModel` 等类,理想情况下只需少量代码即可新建一个简单分页列表
|
||
|
||
### 首次拉取项目代码
|
||
|
||
`git clone -b dev git@git.ghzs.com:halo/android/assistant-android.git --recursive`
|
||
|
||
### git 版本管理
|
||
|
||
本项目使用简化版的 git flow 来管理分支,细节请看 [光环安卓简单 git 规范](https://git.ghzs.com/halo/android/assistant-android/-/wikis/%E5%85%89%E7%8E%AF%E5%AE%89%E5%8D%93%E7%AE%80%E5%8D%95-git-%E8%A7%84%E8%8C%83)
|
||
|
||
### API 环境配置
|
||
|
||
本项目使用 Build Variants 来切换 API 环境
|
||
|
||
* internal 为测试环境
|
||
* publish 为正式环境
|
||
|
||
### 图片资源配置
|
||
|
||
* 新增图片资源时,默认只添加最高规格的 xxxhdpi 文件
|
||
* 新增图片资源时,需要将其转换为 .webp 格式 (包括含透明图层的图片,默认质量为90%) (转换后体积变大的文件除外)
|
||
|
||
### 第三方appkey等配置
|
||
|
||
* 修改`gradle.properties`文件将各种key填入其中,实现统一管理
|
||
* 通过gradle文件内的resValue/buildConfigField/manifestPlaceHolder方式实现编译期间修改,具体情况请参考``./build.gradle``和``./app/build.gradle``配置
|
||
|
||
### 混淆配置
|
||
|
||
* 本项目使用了微信的 [AndResGuard](https://github.com/shwenzhang/AndResGuard) 作为资源混淆压缩方案,新增需要使用 `getIdentifier` 获取的资源文件时需要添加至白名单
|
||
* 本项目默认使用 R8 作为混淆工具,往 proguard-rules.txt 添加 proguard 新配置项时请检查可用性(如语法等)
|
||
|
||
### APK打包配置
|
||
|
||
* 本项目使用了 [VasDolly](https://github.com/Tencent/VasDolly) 作为渠道包实现方案
|
||
* 打包命令,具体参数请见相应文件:
|
||
|
||
> 打内部测试包:`./scripts/test_build.sh`
|
||
> 打正式发布包:`./scripts/build_with_simple_backup.sh`
|
||
|
||
### TODO
|
||
|
||
* 把原有 EventBus 的消息 Type 统一到一个文件内
|
||
* 将实现细节从 View(Fragment、Activity) 剥离并以 MVVM 结构改造
|
||
* 重构 MainActivity |