这个文档的目的主要是为了记录为两个 Application 的 module 添加混淆支持的过程,同时也会添加混淆支持后遇到的 Crash 和解决方案,以便后续接手人员查缺补漏。
添加配置步骤
- 基础参数设置
- 通用混淆规则
- Kotlin 混淆*
- 第三方库或 SDK 混淆规则
这里的通用混淆规则网上一大堆,主要就是考虑以下几点
- 系统组件等一些固定方法会被系统调用的
- 反射和 Native 对应的类和方法
- 自定义 View 等自定义类
- 实体类与序列化的类
注:*是可选项,kotlin 携程一般不会报错,不过如果报
Module with the Main dispatcher is missing
就要把 kotlin 给 keep 一下
第三方库或 SDK 列举
Third Library | :insurance 模块 |
:app 模块 |
备注 |
---|---|---|---|
androidx | √ | √ | |
Room | √ | √ | Rules reference |
Crashlytics | √ | √ | Rules reference |
Hilt | - | - | |
RxJava | - | √ | Rules reference |
Volley | - | √ | Rules reference |
Gson | √ | √ | Rules reference |
Moshi | √ | √ | Rules reference |
Glide | √ | √ | Rules reference |
Zxing | - | - | |
mmkv | - | - | |
- | √ | Facebook Core Facebook Login |
|
AppsFlyer | √ | √ | Rules reference |
Okhttp | √ | √ | Okhttp Okio |
Retrofit | √ | √ | Rules reference |
Jodatime | √ | √ | Rules reference |
Timber | √ | √ | Rules reference |
Blurry | √ | - | Rules reference |
PdfViewer | √ | √ | Rules reference |
Gigya | - | √ |
注:查看以上第三方库的 proguard 的 link,Android Studio 默认开启 R8 的话,link 中包含 META-INF
的 proguard rules 都可以不加,默认会从 sdk 下读取
Release 下打开 log 的方法
首先在 build.gradle.ktx
的 buildTypes
下添加 isDebuggable = true
,就像下面这样
1 | buildTypes { |
以在 Release 包下支持 debug 模式
其次 Android Studio 在 release 编译下 Crashlytics
会要求上传 mapping.text 文件,这时可能要求你的 Android Studio 支持代理,比如我的 Android Studio 就需要在 gradle.properties
里添加
1 | systemProp.https.proxyHost = 127.0 .0 .1 |
最后你的手机如果不支持 Google Services
的话就要在 SplashViewModel
里你当前的 Flow 会走到 state = PLAY_SERVICE_MISSING
,这是就需要把 stepForward()
方法里的 PLAY_SERVICE_MISSING
下的 if 条件里的 environment.isDebug
给去掉,不然流程走不下去
问题及解决方法
目前已安稳上线,没有遇到是混淆产生的问题!