时间线
- 使用 Aria 库下载 m3u8 文件
- 发现问题,debug 包下能正常获取 m3u8 视频已下载文件的大小,release 包无法获取
- release 包开启了混淆,debug 包未开启混淆
- 查看 Aria 库的 Github 文档,发现项目中的混淆规则和文档里写的一样(直接从文档里 Copy 过来的)
- 查看 Aria 库依赖和文档,发现其使用了 APT 动态生成代理类文件的代码
- 查看 build 文件夹下生成的代理类文件,发现有生成 xxx$$M3U8PeerListenerProxy 的代码
- 对比 build 文件夹下动态生成的代理类的类名,发现混淆规则中缺少 xxx$$M3U8PeerListenerProxy 代理类的 keep 混淆(生成的别的代理类都有,就 m3u8 的没有)
- 按照其它代理类的写法添加上了 m3u8 代理类的 keep 混淆
- 打 release 包,运行,发现能够成功获取 m3u8 视频已下载文件的大小
- 打完,收工!
Aria 下载库
Aria Github地址:https://github.com/AriaLyy/Aria
官方 Github 的混淆配置
-dontwarn com.arialyy.aria.**
-keep class com.arialyy.aria.**{*;}
-keep class **$$DownloadListenerProxy{ *; }
-keep class **$$UploadListenerProxy{ *; }
-keep class **$$DownloadGroupListenerProxy{ *; }
-keep class **$$DGSubListenerProxy{ *; }
-keepclasseswithmembernames class * {
@Download.* <methods>;
@Upload.* <methods>;
@DownloadGroup.* <methods>;
}
README 截图如下
缘灭
修改后的混淆配置
# Aria 混淆配置
-dontwarn com.arialyy.aria.**
-keep class com.arialyy.aria.**{*;}
-keep class **$$M3U8PeerListenerProxy{ *; }
-keep class **$$DownloadListenerProxy{ *; }
-keep class **$$UploadListenerProxy{ *; }
-keep class **$$DownloadGroupListenerProxy{ *; }
-keep class **$$DGSubListenerProxy{ *; }
-keepclasseswithmembernames class * {
@Download.* <methods>;
@Upload.* <methods>;
@DownloadGroup.* <methods>;
}
其中新增的混淆规则
-keep class **$$M3U8PeerListenerProxy{ *; }
如果对你有帮助的话,欢迎一键三连+关注哦~
本文由
A lonely cat
原创发布于
阳光沙滩
,未经作者授权,禁止转载