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

设置shrinkResources和minifyEnabled为true后Android发布版崩溃

解决开启代码混淆后flutter_inappwebview引发的java.lang.VerifyError崩溃

问题原因

开启minifyEnabled和shrinkResources后,R8混淆器错误地重命名了Android系统SSL相关类(如android.net.http.SslError、android.net.http.SslCertificate),而flutter_inappwebview库的InAppWebViewClient类内部方法依赖这些类的原始类型定义,混淆后虚拟机类型校验失败,抛出VerifyError。

解决方案

1. 添加混淆规则到proguard-rules.pro

在Android项目的android/app/proguard-rules.pro文件中添加以下规则,保留库和相关系统类不被混淆:

# 保留flutter_inappwebview所有类及成员,避免内部逻辑被破坏
-keep class com.pichillilorenzo.flutter_inappwebview.** { *; }

# 保留Android系统SSL及WebView相关类,防止类型校验失败
-keep class android.net.http.SslError { *; }
-keep class android.net.http.SslCertificate { *; }
-keep class android.webkit.ClientCertRequest { *; }
-keep class android.webkit.HttpAuthHandler { *; }
-keep class android.webkit.SslErrorHandler { *; }

2. 确认build.gradle配置正确

在android/app/build.gradle的release构建块中,确保混淆规则文件被正确引用:

android {
    // ...其他配置
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

3. 清理并重新构建发布版本

执行以下命令清理缓存并重新生成发布包:

flutter clean
flutter build apk --release

内容的提问来源于stack exchange,提问作者Sanjay Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:49:53