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

Flutter图片资源在Debug模式正常但iOS Release构建中提示‘Asset not found’加载失败

Flutter图片资源在Debug模式正常但iOS Release构建中提示‘Asset not found’加载失败

我之前也踩过这个一模一样的坑,折腾了好一阵才摸清楚几个靠谱的解决方向,你可以逐一排查试试:

1. 重点检查路径大小写(最常见原因!)

iOS的文件系统是严格大小写敏感的,Debug模式下热重载/模拟器可能会忽略大小写差异,但Release打包时会严格校验:

  • 对比代码里的资源路径 assets/img/santren/splash_screen1.jpg 和实际文件系统中的文件名、文件夹名是否完全一致(比如是不是实际文件叫Splash_Screen1.jpg,或者文件夹是Santren?)
  • 确保代码里的每一级路径大小写都和本地文件100%匹配

2. 验证pubspec.yaml的资源配置是否正确

YAML对缩进和格式要求极严,很容易因为小错误导致资源不被打包:

  • 检查资源声明的缩进:必须用2个空格,不能用Tab键
  • 确保资源路径正确,两种声明方式都可以:
    flutter:
      assets:
        # 方式1:导入整个目录下的所有资源
        - assets/img/santren/
        # 方式2:单独导入指定图片
        - assets/img/santren/splash_screen1.jpg
    
  • 修改pubspec后,记得执行flutter pub get刷新配置

3. 清理缓存后重新构建打包

缓存残留是Release打包的常见坑,彻底清理后再试:

  1. 清理Flutter全局缓存:
    flutter clean
    
  2. 进入iOS目录清理Pod缓存并重新安装:
    cd ios
    pod deintegrate && pod install
    cd ..
    
  3. 重新构建Release版本:
    flutter build ios --release
    

4. 检查Xcode中资源是否被正确添加到Target

有时候Flutter自动打包会漏加资源,需要手动确认:

  1. 打开ios/Runner.xcworkspace
  2. 左侧导航栏选中Runner → 切换到Build Phases标签页
  3. 找到Copy Bundle Resources列表,检查你的图片或assets目录是否在其中:
    • 如果不在,点击+按钮,从本地文件系统中选中对应的资源添加
  4. 同时选中图片文件,查看右侧Inspectors面板,确保Target Membership已经勾选Runner

5. 排查图片本身的问题

少数情况下,图片格式损坏或不兼容会导致Release打包失败:

  • 尝试重新导出图片(用PS或其他工具另存为标准JPG格式)
  • 临时将图片转为PNG格式替换原文件,看是否能正常加载

附上你提供的错误日志,方便对照排查:

══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
**The following assertion was thrown image failed to precache:
Unable to load asset: "assets/img/santren/splash_screen1.jpg".
Exception: Asset not found
When the exception was thrown, this was the stack:
#0      PlatformAssetBundle.loadBuffer (package:flutter/src/services/asset_bundle.dart:295:7)
#1      AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:731:35)
#2      AssetBundleImageProvider.loadBuffer (package:flutter/src/painting/image_provider.dart:695:14)
#3      ImageProvider.resolveStreamForKey.<anonymous closure> (package:flutter/src/painting/image_provider.dart:513:13)
#4      ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:384:22)
#5      ImageProvider.resolveStreamForKey (package:flutter/src/painting/image_provider.dart:511:81)
#6      ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:358:9)
#7      ImageProvider._createErrorHandlerAndKey.<anonymous closure> (package:flutter/src/painting/image_provider.dart:473:24)
#8      SynchronousFuture.then (package:flutter/src/foundation/synchronous_future.dart:41:39)
#9      ImageProvider._createErrorHandlerAndKey (package:flutter/src/painting/image_provider.dart:470:9)
#10     ImageProvider.resolve (package:flutter/src/painting/image_provider.dart:355:5)
#11     precacheImage (package:flutter/src/widgets/image.dart:115:39)
#12     _StartWizardPageState._precacheImage (package:mobile/Products/santren/layout/wizard.dart:22:13)
#13     _StartWizardPageState.didChangeDependencies (package:mobile/Products/santren/layout/wizard.dart:39:5)
...

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:20:30