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

Flutter中安装时资源交付的子目录使用问题

解决FlutterPlayAssetDelivery访问子文件夹资源失败的问题

1. 检查pubspec.yaml的资源配置

确保pubspec.yaml里正确声明了需要交付的资源,尤其是子文件夹的资源:

flutter:
  assets:
    - assets/reset.png
    - assets/fu/  # 递归包含fu文件夹下所有文件及子文件夹
    # 如果是fu文件夹内还有fu子文件夹,要写- assets/fu/fu/

如果只需指定单个文件,直接写完整路径:assets/fu/logo.png(根据实际文件位置调整)。

2. 核对实际文件路径与访问路径

先确认本地文件系统的真实结构:

  • 若文件是assets/fu/logo.png,访问路径应为fu/logo.png
  • 若文件是assets/fu/fu/logo.png(fu文件夹下嵌套fu子文件夹),访问路径必须是fu/fu/logo.png
    避免因路径层级描述错误导致访问失败。

3. 使用FlutterPlayAssetDelivery专属API访问资源

不能用Flutter默认的AssetImage或rootBundle方法,必须用包提供的API:

import 'package:flutter_play_asset_delivery/flutter_play_asset_delivery.dart';

// 加载图片资源
final bytes = await FlutterPlayAssetDelivery.loadAsset('fu/logo.png');
final image = MemoryImage(bytes);

// 或者直接用封装好的Widget
PlayAssetImage('fu/logo.png')

4. 验证bundletool打包是否包含目标资源

用bundletool生成APKS后,检查资源是否被正确打包:

  1. 生成appbundle:flutter build appbundle
  2. 构建APKS文件:
bundletool build-apks --bundle=build/app/outputs/bundle/release/app-release.aab --output=app.apks --mode=universal
  1. 解压app.apks,查看assets/目录下是否存在fu/logo.png,确认资源被正确包含。

5. 清理缓存重新构建

缓存可能导致资源未更新,执行以下命令重置构建环境:

flutter clean
flutter pub get
flutter build appbundle

内容的提问来源于stack exchange,提问作者Yasan Malik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:12:06