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
相关产品推荐
相关产品推荐

