Flutter打包APK后调用ImagePicker出现PlatformException异常
问题原因与解决方案
该问题属于Flutter Android端release包与debug包配置差异导致的典型异常,debug模式运行正常、release打包后报错可以按以下优先级逐一排查解决:
- AndroidManifest.xml正式权限缺失
debug模式下Flutter会自动注入部分临时权限用于调试,release包需要手动配置正式权限。打开android/app/src/main/AndroidManifest.xml,在manifest标签下(不要写在application标签内部)添加如下权限配置:
<!-- 相机调用权限 --> <uses-permission android:name="android.permission.CAMERA" /> <!-- 存储读写权限,适配Android 13以下版本 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <!-- Android 13及以上版本图片访问权限 --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
- R8混淆规则缺失
release打包默认开启代码混淆,未配置ImagePicker库的保留规则会导致库中类被误裁剪,触发平台异常。打开android/app/proguard-rules.pro文件,在末尾添加如下规则:
-keep class io.flutter.plugins.imagepicker.** { *; }
- SDK版本不匹配
检查android/app/build.gradle文件中的compileSdkVersion和targetSdkVersion,如果低于33建议升级到33及以上,匹配当前版本ImagePicker库的最低适配要求。 - AndroidX配置缺失
检查android/gradle.properties文件,确认存在以下配置:
android.useAndroidX=true android.enableJetifier=true
- 依赖版本过旧
检查pubspec.yaml中image_picker的依赖版本,升级到官方最新稳定版即可覆盖已知的历史兼容性问题。
验证方法
所有配置修改完成后,执行flutter run --release直接在设备上运行release版本,可以在控制台输出完整的错误日志,方便定位剩余异常。
内容的提问来源于stack exchange,提问作者Rubenszinho
相关产品推荐
相关产品推荐

