使用actool编译tvOS的Assets.xcassets时App图标与Top Shelf图片缺失
tvOS Assets.xcassets编译后App图标与Top Shelf图片未包含在Assets.car中(Xcode 16.1)
问题详情
我使用以下actool命令编译tvOS的Assets.xcassets资源:
执行命令
xcrun actool --compile "/Users/abc/Desktop/ACToolTest/Output" "/Users/abc/Desktop/ACToolTest/Assets.xcassets" --platform appletvos --minimum-deployment-target "12.0" --app-icon "App Icon & Top Shelf Image" --launch-image "Launch Image" --output-partial-info-plist "/Users/abc/Desktop/ACToolTest/Output/out.plist" "/Users/abc/Desktop/ACToolTest/Output"
终端返回结果
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.actool.compilation-results</key> <dict> <key>output-files</key> <array> <string>/Users/abc/Desktop/ACToolTest/Output/Assets.car</string> <string>/Users/abc/Desktop/ACToolTest/Output/out.plist</string> </array> </dict> </dict> </plist>
异常情况
命令成功生成Assets.car和out.plist,但Assets.car中未包含App图标与Top Shelf图片(其他图标正常),out.plist无错误信息。该命令在Xcode 15.4 + macOS 14.5 / M2环境下可正常运行。
系统与环境信息
- 设备:MacBook Pro / M1 Pro / 16GB / 16英寸 / 2021款
- 系统:macOS 15.1 (24B83)
- Xcode:16.1 (16B40)
前置操作
已将Assets.xcassets放置在/Users/abc/Desktop/ACToolTest/路径下,并提前创建Output文件夹。
可能的解决方法
1. 修正actool参数冗余
命令末尾重复添加了Output路径,可能导致参数解析异常。修改后的命令:
xcrun actool --compile "/Users/abc/Desktop/ACToolTest/Output" "/Users/abc/Desktop/ACToolTest/Assets.xcassets" --platform appletvos --minimum-deployment-target "12.0" --app-icon "App Icon & Top Shelf Image" --launch-image "Launch Image" --output-partial-info-plist "/Users/abc/Desktop/ACToolTest/Output/out.plist"
2. 验证资源目录结构与配置
- 确认
App Icon & Top Shelf Image.appiconset下所有必填尺寸的图片已正确添加,文件名符合tvOS规范(如AppIcon60x60@2x.png、TopShelfImage1920x720@2x.png) - 检查目录内的
.contents.json文件,确保所有条目的idiom、scale、size属性配置正确,无缺失或错误
3. 添加Xcode 16适配参数
Xcode 16对actool逻辑可能有更新,尝试关闭按需资源编译:
xcrun actool --compile "/Users/abc/Desktop/ACToolTest/Output" "/Users/abc/Desktop/ACToolTest/Assets.xcassets" --platform appletvos --minimum-deployment-target "12.0" --app-icon "App Icon & Top Shelf Image" --launch-image "Launch Image" --output-partial-info-plist "/Users/abc/Desktop/ACToolTest/Output/out.plist" --enable-on-demand-resources NO
4. 清理缓存后重新编译
- 删除Output目录下所有文件
- 清理Xcode缓存:执行
rm -rf ~/Library/Caches/com.apple.dt.Xcode - 重新运行修正后的命令
5. 单独编译目标资源
尝试单独编译App Icon与Top Shelf资源,排查是否存在资源冲突:
xcrun actool --compile "/Users/abc/Desktop/ACToolTest/Output" "/Users/abc/Desktop/ACToolTest/Assets.xcassets/App Icon & Top Shelf Image.appiconset" --platform appletvos --minimum-deployment-target "12.0" --output-partial-info-plist "/Users/abc/Desktop/ACToolTest/Output/icon-out.plist"
若此命令能生成包含图标的Assets.car,说明原命令存在参数解析或资源冲突问题。
内容的提问来源于stack exchange,提问作者MD.
相关产品推荐
相关产品推荐

