Flutter:非调试APK模式下图片保存至图库功能失效求助
调试版能存图到图库,正式版不行?看这几个解决办法
最可能的原因:代码混淆搞的鬼
正式版APK默认会开启代码混淆,你用的image_gallery_saver第三方库相关类可能被混淆优化了,导致保存逻辑跑不起来。先试这个解决步骤:
- 找到项目里
android/app/proguard-rules.pro文件,加下面这行混淆规则,保护ImageGallerySaver的代码不被混淆:-keep class com.hemanthraj.imagegallerysaver** { *; } - 重新打正式版APK测试。
- 找到项目里
额外排查方向:
- 确认正式版权限真的生效:可以在保存图片前加个权限校验,确保权限确实被授予了,比如用
permission_handler包做检查,代码示例:import 'package:permission_handler/permission_handler.dart'; import 'dart:io' show Platform; Future<bool> checkSavePermission() async { PermissionStatus status; if (Platform.isAndroid) { // Android 13+ 用照片权限,之前用存储权限 status = await (await AndroidInfo.version >= 13 ? Permission.photos.request() : Permission.storage.request()); } else { status = await Permission.photos.request(); } return status.isGranted; } // 保存前先检查权限 if (await checkSavePermission()) { var image = await boundary.toImage(); var byteData = await image.toByteData(format: ui.ImageByteFormat.png); var ref = FFAppState().FrameRef; final name = 'cl1box1_' + ref; // 打印保存结果,方便排查 final saveResult = await ImageGallerySaver.saveImage( byteData!.buffer.asUint8List(), name: name); print('图片保存结果:$saveResult'); } - 看保存返回结果:
saveImage会返回保存状态,正式版里可以通过日志看具体错误信息,比如有没有路径问题、权限问题的提示。
- 确认正式版权限真的生效:可以在保存图片前加个权限校验,确保权限确实被授予了,比如用
内容的提问来源于stack exchange,提问作者AYMANE
相关产品推荐
相关产品推荐

