Flutter 3.24打包Release APK遇R8缺失类错误,Debug正常
Flutter 3.24 Release打包R8缺失类报错解决方案
解决步骤
1. 导入自动生成的缺失规则
报错提示中提到的missing_rules.txt文件位于项目根目录/build/app/outputs/mapping/release/路径下,打开该文件,将所有内容复制到android/app/proguard-rules.pro文件的末尾,然后重新执行Release打包。
2. 手动添加Keep规则
如果自动导入规则无效,直接在proguard-rules.pro中添加以下规则,强制R8忽略缺失类的警告:
# 忽略conscrypt相关缺失类 -dontwarn com.android.org.conscrypt.SSLParametersImpl -dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl # 忽略javax.annotation.Nullable缺失类 -dontwarn javax.annotation.Nullable
3. 排查并修复依赖冲突
Flutter 3.24升级后可能引发okhttp或conscrypt相关依赖版本不兼容,可在android/build.gradle中强制指定兼容版本:
allprojects { repositories { // ... 其他仓库配置 } configurations.all { // 强制指定okhttp版本 resolutionStrategy.force 'com.squareup.okhttp3:okhttp:4.12.0' // 强制指定conscrypt版本 resolutionStrategy.force 'org.conscrypt:conscrypt-android:2.5.2' } }
同时检查项目中使用的http类依赖(如dio、http包),确保版本与Flutter 3.24兼容。
4. 调整R8配置
在android/app/build.gradle的release构建类型中,确保正确配置R8相关参数:
buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 引入Flutter官方提供的ProGuard规则 proguardFile "${flutterRoot}/packages/flutter_tools/gradle/flutter_proguard_rules.pro" } }
完成上述操作后,执行flutter clean再重新打包Release版本即可。
内容的提问来源于stack exchange,提问作者verified_user
相关产品推荐
相关产品推荐

