记一次使用 Aria 的坑

时间线

  • 使用 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 的混淆配置

1
2
3
4
5
6
7
8
9
10
11
12
-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 截图如下

图片描述

缘灭

修改后的混淆配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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>;
}

其中新增的混淆规则

1
2
-keep class **$$M3U8PeerListenerProxy{ *; }

如果对你有帮助的话,欢迎一键三连+关注哦~


记一次使用 Aria 的坑
https://blog.funkt.cn/2023/03/29/1602272921402925058/
作者
anjiemo
发布于
2023年3月29日
许可协议
未经作者授权,禁止转载