Flutter调试模式正常,发布模式异常及Gradle相关报错求助
解决Flutter发布模式下FilePicker插件的IllegalAccessError问题
这个错误是因为发布模式下的代码混淆或依赖版本不兼容,导致FilePicker插件的内部生命周期观察者无法正常访问AndroidX Lifecycle接口。下面是一步步的解决方案:
升级FilePicker插件到最新稳定版
旧版本插件可能存在AndroidX兼容性问题。打开你的pubspec.yaml,找到file_picker依赖项,更新到pub.dev上的最新稳定版本,然后执行:flutter pub get添加ProGuard混淆规则
发布模式的代码混淆会误处理插件相关类,引发访问权限问题。在android/app/proguard-rules.pro文件中添加以下规则:# 保留FilePicker插件的所有类与方法 -keep class com.mr.flutter.plugin.filepicker.** { *; } # 保留AndroidX Lifecycle相关类 -keep class androidx.lifecycle.** { *; }若还未启用ProGuard,确保在
android/app/build.gradle的release配置中开启:buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }确认AndroidX配置正确
保证项目已完全迁移到AndroidX,检查android/gradle.properties文件中是否包含以下配置:android.useAndroidX=true android.enableJetifier=true没有的话直接添加,这会自动将第三方依赖迁移到AndroidX版本。
调整Gradle与AGP版本兼容性
你当前使用的AGP 4.0.0 + Gradle 6.1.1组合可能存在兼容性问题,建议换成更稳定的版本组合:- 修改
android/build.gradle中的AGP版本:classpath 'com.android.tools.build:gradle:4.2.2' - 修改
gradle/wrapper/gradle-wrapper.properties中的Gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
- 修改
清理并重建项目
最后执行以下命令清理缓存,重新构建发布版本:flutter clean flutter pub get cd android && ./gradlew clean && cd .. flutter run --release
内容的提问来源于stack exchange,提问作者Abdul Kadhar
相关产品推荐
相关产品推荐

