Flutter打包APK时运行R8检测到缺失类,求解决方案
解决Flutter打包APK时R8缺失类报错的方案
1. 应用自动生成的缺失类保留规则
报错提示里提到了自动生成的keep规则文件,找到build/outputs/mapping/release/missing_rules.txt,把文件里的所有规则复制到android/app/proguard-rules.pro中。
2. 完善Release构建类型的R8配置
修改android/app/build.gradle里的buildTypes块,明确启用R8混淆与资源压缩,并指定混淆规则文件:
buildTypes { release { signingConfig signingConfigs.release minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
3. 添加Flutter基础混淆规则
如果proguard-rules.pro里没有Flutter相关规则,添加以下内容避免核心类被误删:
# Flutter核心类保留规则 -keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; } -dontwarn io.flutter.**
4. 排查第三方插件的混淆需求
如果是第三方Flutter插件导致的缺失类,查看该插件的官方文档,把它要求的特定混淆规则添加到proguard-rules.pro中。
5. 清理缓存后重新构建
执行以下命令清理项目缓存,再重新打包Release版APK:
flutter clean flutter build apk --release
内容的提问来源于stack exchange,提问作者nady
相关产品推荐
相关产品推荐

