R8的-printusage参数未生效,无法生成未使用类报告求助
解决R8生成未使用类/成员报告(usage.txt)的问题
1. 先把路径配置弄对
-printusage指定的路径是以项目根目录为基准的,不是build目录。如果写的是proguard/unused.txt,先确认项目根目录下有没有proguard文件夹,没有就手动建一个,不然R8没地方写入文件。嫌麻烦的话直接指定build下的路径更稳妥:
-printusage ./build/outputs/proguard/unused.txt
2. 确认配置文件被Gradle正确加载
打开app模块的build.gradle(或build.gradle.kts),检查release构建类型里的proguardFiles是否包含了你添加-printusage的配置文件,比如:
android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 要是你把参数加在别的自定义规则文件里,得把文件也加在这一行 } } }
要是配置文件没被Gradle加载,写再多参数也不会生效。
3. 用R8原生配置反向推导(备选方案)
如果-printusage死活不生效,试试用-printconfiguration生成完整配置报告,结合seeds.txt反向找被移除的类:
- 在配置文件中添加:
-printconfiguration proguard/full-config.txt - 生成后对比项目源码和
seeds.txt,没出现在seeds.txt里的类/成员基本就是被R8移除的。
4. 清缓存重新构建
有时候Gradle缓存会干扰配置生效,执行下面的命令彻底清理后再打release包:
./gradlew clean assembleRelease
5. 检查AGP版本
旧版本的R8对-printusage支持可能存在bug,确保你的Android Gradle Plugin(AGP)版本在7.0以上,新版本的兼容性更好。
内容的提问来源于stack exchange,提问作者tribelei
相关产品推荐
相关产品推荐

