be599a24fd0e0f6c702a73a6a3bd42a405216255
fix: 尝试修复启动下载服务异常 https://sentry.shanqu.cc/organizations/lightgame/issues/203713/?project=22&query=dist%3A592&sort=freq&statsPeriod=14d
光环助手Android客户端
概述
光环助手Android客户端目前使用 Kotlin 作为主要开发语言,以 MVVM 作为参考架构模式进行开发
约束
为编写易读易维护且较健壮的代码,可参考以下约束
- 尽量将逻辑代码放置于 ViewModel 中,View 中只执行 UI 操作
- 尽量使 View 在被销毁之后仍能恢复状态,处理方式可参考 保存界面状态
- 尽量参考原有文件结构及命名规范,即以 大模块 - 小模块 的形式生成包关系
- 遵循最小改动原则,在提交代码前务必先检查变动的代码,尽量以可控的变动规模来构成一个 commit ,以便日后追踪问题
- Commit message 提交规范可参考 Conventional Commits
- 代码规范可参考 AOSP Java 风格
- 尽量使用 Kotlin 来写新文件
- 不要使用 DataBinding
- Commit 前请确保不带入非项目必须文件,可手动修改 .gitignore 文件忽略
- 优先使用 ViewBinding 获取 View 对象
- No AsyncTask!
公用部分
本项目使用 LiveData 实现了一个简单通用的基础列表分页功能,具体可见 ListFragment, ListViewModel 等类,理想情况下只需少量代码即可新建一个简单分页列表
首次拉取项目代码
git clone -b dev git@git.shanqu.cc:halo/android/assistant-android.git --recursive
git 版本管理
本项目使用简化版的 git flow 来管理分支,细节请看 光环安卓简单 git 规范
API 环境配置
本项目使用 Build Variants 来切换 API 环境
- internal 为测试环境
- publish 为正式环境
图片资源配置
- 新增图片资源时,默认只添加最高规格的 xxxhdpi 文件
- 新增图片资源时,需要将其转换为 .webp 格式 (包括含透明图层的图片,默认质量为90%) (转换后体积变大的文件除外)
第三方appkey等配置
- 修改
gradle.properties文件将各种key填入其中,实现统一管理 - 通过 gradle 文件内的 resValue/buildConfigField/manifestPlaceHolder 方式实现编译期间修改,具体情况请参考
./build.gradle和./app/build.gradle配置
混淆配置
- 本项目使用了微信的 AndResGuard 作为资源混淆压缩方案,新增需要使用
getIdentifier获取的资源文件时需要添加至白名单 - 本项目默认使用 R8 作为混淆工具,往 proguard-rules.txt 添加 proguard 新配置项时请检查可用性(如语法等)
APK打包配置
打内部测试包:
./scripts/test_build.sh打邮件测试包:./scripts/jenkins_build.sh
TODO
- 把原有 EventBus 的消息 Type 统一到一个文件内
- 将实现细节从 View(Fragment、Activity) 剥离并以 MVVM 结构改造
- 重构 MainActivity
Description
Languages
Kotlin
79.3%
Java
20.1%
Shell
0.3%
JavaScript
0.2%
Groovy
0.1%