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

Swift Package跨模块引用图片报错:资源目录未找到对应图片

Swift Package跨模块引用图片问题排查

需检查的遗漏配置

  • Asset Catalog需单独配置处理规则:.process("Resources")仅适用于普通资源(如JSON),Asset Catalog(Assets.xcassets)必须用.assetCatalog()专门声明。修改PackageB的Package.swift资源配置:

    resources: [
        .assetCatalog("Resources/Assets.xcassets"), // 单独处理资源目录
        .process("Resources/your.json") // 保留JSON的处理规则
    ]
    

    若用.process处理Asset Catalog,会导致资源未被正确编译进bundle,自然无法被找到。

  • 图片名称不要带文件后缀:报错中的myImage.png是错误写法,Asset Catalog中图片的引用名称不含后缀,调用时直接用myImage即可。

  • 确认资源归属正确的Target:确保资源配置在PackageB的主Target下,而非测试Target或其他无关Target。示例配置:

    targets: [
        .target(
            name: "PackageB",
            dependencies: [],
            resources: [
                .assetCatalog("Resources/Assets.xcassets"),
                .process("Resources/data.json")
            ]
        )
    ]
    

跨模块引用的限制说明

  • 跨模块引用资源本身无限制,但必须保证:资源被正确编译到对应模块的bundle中,调用时使用该模块的Bundle.module(每个模块的Bundle.module独立,不可混用)。
  • 若PackageA为动态库、PackageB为静态库,Swift Package默认会处理资源合并,但前提是资源配置正确。
  • 注意:Asset Catalog无法被多个Target直接共享,若需共享需单独创建资源Target,让其他Target依赖该资源Target。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:14:54