69 lines
3.0 KiB
Markdown
69 lines
3.0 KiB
Markdown
# 光环助手Android客户端
|
||
|
||
### APK打包配置
|
||
|
||
* 使用[ApkChannelPackage](https://github.com/ltlovezh/ApkChannelPackage)的方案
|
||
* 打包命令,视情况使用:
|
||
|
||
> 打包Tinker基准包:`./scripts/tinker_release_base.sh`
|
||
|
||
> 以Tinker基准包打渠道包:`./scripts/tinker_release_channel.sh`
|
||
|
||
> 以Tinker基准包打补丁包:`./scripts/tinker_release_patch.sh`
|
||
|
||
### 混淆配置
|
||
|
||
* 配置文件:Android默认配置+proguard-rules.txt等
|
||
* 参考libraries下每个项目独立的配置文件`proguard-project.txt`
|
||
|
||
### apk大小优化
|
||
|
||
* 限制resConfig资源集
|
||
* 开启ShrinkResources
|
||
* 开启混淆,使用minifyEnabled(仅在release开启)
|
||
* pngquant对png压缩、png/jpg->webp(未尝试)
|
||
|
||
### 第三方appkey等配置
|
||
|
||
* 修改`gradle.properties`文件将各种key填入其中,实现统一管理
|
||
* 通过gradle文件内的resValue/buildConfigField/manifestPlaceHolder方式实现编译期间修改,具体情况请参考``./build.gradle``和``./app/build.gradle``配置
|
||
|
||
### 拉取代码步骤
|
||
|
||
1. 拉取主项目代码: `git clone -b dev git@gitlab.ghzhushou.com:halo/assistant-android.git`
|
||
2. 初始化公用类库: `bash ./scripts/submodules_init.sh`
|
||
|
||
### submodule管理方式(只拉取master)
|
||
|
||
* 提交代码,需要cd到submodule文件夹去做修改
|
||
* 更新远端代码,`bash ./scripts/submodules_update.sh`
|
||
|
||
### TODO
|
||
|
||
* GSON 序列化用统一的一个, GsonUtil fromJson
|
||
* CleanApkAdapter 转化字符串size工具函数 比如SpeedUtils
|
||
* getString 解决 字符串hardcode问题
|
||
* ~~Adapter 里面clicklistener 用接口传参将点击操作委托给controller~~
|
||
* ~~Adapter ViewHolder的功能,部分重写到ViewHolder类本身~~
|
||
|
||
* ~~activity 统一入口未完成(外部入口相关),去除多余activity使用,统一toolbar~~
|
||
* ~~release / debug compile不同的类库,不需要再做什么开关~~
|
||
|
||
* ~~Toolbar分离,有图形按钮/没有图形按钮~~
|
||
|
||
### TODO Since 3.1
|
||
|
||
- 解决 Utils 工具类引发的内存泄漏问题
|
||
- 把原有 EventBus 的消息 Type 统一到一个文件内
|
||
- 将实现细节从 View(Fragment、Activity) 剥离并以 MVVM 结构改造
|
||
- ~~将 ListViewModel 所对应的 ListRepository 合并到 ListViewModel 中~~
|
||
- 依照光环助手界面功能以大模块 - 小模块的方式去修改包结构,包内文件建议以包名摘要作为前缀
|
||
- ~~使用 RxJava 的 Debounce 和 Map 操作优化搜索触发机制 参考资料:[1](https://proandroiddev.com/building-an-autocompleting-edittext-using-rxjava-f69c5c3f5a40),[2](https://medium.com/@kurtisnusbaum/rxandroid-basics-part-2-6e877af352)~~
|
||
|
||
- ~~把 ListViewModel 的数据结构类型转换方式换为抽象方法,让继承的类实现,避免出现无响应的问题~~
|
||
|
||
- ~~rxjava2 如果接口返回为空 会发生异常:java.lang.NullPointerException: Null is not a valid element (答案编辑) 解决方法->com.gh.gamecenter.retrofit.Response~~
|
||
- constraintLayout 1.1.2 导致布局出现异常(问题编辑标签选择弹窗)
|
||
|
||
- 搞清楚 GameManager 的用途,看能不能去掉
|
||
- 重构一下 MainActivity |