You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter构建Release APK时R8报错缺失ProGuard相关类(关联Razorpay)

Flutter构建Release APK时R8报错缺失ProGuard相关类(关联Razorpay)

我之前在集成Razorpay支付的Flutter项目里也碰到过一模一样的R8混淆报错,当时卡了好一会儿才解决。这个问题的核心是:Razorpay的SDK内部用到了ProGuard的注解类,但你的项目里要么没引入对应依赖,要么混淆规则没配置到位,导致R8在压缩代码时找不到这些类。

给你几个亲测有效的解决方案,按顺序尝试就行:

方案一:添加ProGuard注解依赖(推荐)

打开项目里的android/app/build.gradle文件,在dependencies代码块中添加ProGuard注解库的依赖:

implementation 'com.guardsquare:proguard-annotations:7.4.2'

版本可以根据你项目的gradle版本调整,选一个稳定兼容的版本即可。添加后同步gradle,这个依赖会直接提供缺失的proguard.annotation.Keep和proguard.annotation.KeepClassMembers类。

方案二:配置Razorpay专属的ProGuard规则

不管有没有加上面的依赖,都建议给Razorpay配置专门的混淆规则,避免R8误删它的核心代码。打开android/app/proguard-rules.pro文件,添加以下规则:

# 保留Razorpay所有类及成员
-keep class com.razorpay.** { *; }
# 忽略Razorpay相关的警告
-dontwarn com.razorpay.**
# 保留所有注解属性(包括ProGuard的注解)
-keepattributes *Annotation*

方案三:临时规避缺失类的警告(应急可用,不推荐)

如果暂时不想添加新依赖,也可以直接在proguard-rules.pro里添加规则让R8忽略这些缺失类的警告:

-dontwarn proguard.annotation.Keep
-dontwarn proguard.annotation.KeepClassMembers
-keep class proguard.annotation.Keep { *; }
-keep class proguard.annotation.KeepClassMembers { *; }

不过这只是临时绕开问题,还是方案一+方案二的组合更稳妥,能从根源解决问题。

最后执行清理和重新构建命令:

flutter clean
flutter build apk --release

这样应该就能顺利生成Release APK了,我当时就是这么解决的~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:22:58