启用On-Demand Resources后无法构建watchOS应用,求解决方案
解决watchOS按需资源(ODR)编译报错的思路
你遇到的错误本质是Xcode不允许直接在Watch App/Extension目标中启用按需资源——即便官方文档说明watchOS支持ODR,实际配置也需要严格区分目标范围和资源托管方式。以下是具体解决步骤:
核心配置修正
- 仅在iOS主应用目标中开启
ENABLE_ON_DEMAND_RESOURCES,Watch App和Watch Extension目标必须关闭这个Build Setting。watchOS的按需资源依赖iOS主应用托管,无法独立启用。 - 将标记为按需资源的
.xcassets文件归属到iOS主应用目标,不要添加到Watch相关目标中。
资源传输方案
如果Watch端需要使用这些按需资源,通过Watch Connectivity框架实现:
- 在iOS主应用中完成ODR资源的下载
- 用
WCSession将下载好的资源文件传输到Watch Extension - Watch端接收后本地缓存使用
其他排查步骤
- 升级Xcode到最新稳定版:旧版Xcode对watchOS ODR的支持存在兼容性bug,纯测试项目报错大概率和版本有关。
- 清理构建缓存:执行
Product > Clean Build Folder,手动删除DerivedData目录(路径见报错信息),再重新构建。 - 检查Asset Catalog配置:确保iOS端的Asset Catalog中资源的按需标记正确,没有重复或冲突的设置。
报错代码重现
/* com.apple.actool.errors */ : error: Cannot enable on demand resources for the platform "watchOS". Consider disabling the ENABLE_ON_DEMAND_RESOURCES build setting. /* com.apple.actool.compilation-results */ /Users/myMac/Library/Developer/Xcode/DerivedData/cuaaa-bfkiwkbyypwohfahhwdaqhzirchn/Build/Intermediates.noindex/cuaaa.build/Debug-watchos/cuaaa Watch App.build/assetcatalog_generated_info.plist /Users/myMac/Library/Developer/Xcode/DerivedData/cuaaa-bfkiwkbyypwohfahhwdaqhzirchn/Build/Products/Debug-watchos/OnDemandResources/.watchkitapp.cucarobga-747198866748abb7711ab70510b9c29e.assetpack/Assets.car /Users/myMac/Library/Developer/Xcode/DerivedData/cuaaa-bfkiwkbyypwohfahhwdaqhzirchn/Build/Products/Debug-watchos/cuaaa Watch App.app/Assets.car Command CompileAssetCatalog failed with a nonzero exit code
内容的提问来源于stack exchange,提问作者Duck
相关产品推荐
相关产品推荐

