Xcode 9.2中AppIcon overlay功能失效问题求助
解决Xcode 9.2 + iOS 11.2.2环境下AppIcon Overlay失效问题
我之前也碰到过Xcode版本升级后第三方图标工具失效的情况,结合你的测试场景,给你几个针对性的排查和解决方向:
1. 适配Xcode 9+的Asset Catalog路径变更
Xcode 9开始对Asset Catalog的编译流程和产物路径做了调整,Amaro的旧版本脚本大概率还在沿用Xcode 8的路径逻辑。你可以这么调整:
- 打开项目中Amaro对应的Run Script Phase,找到脚本里定位AppIcon目录的代码,把旧路径替换为Xcode 9+的标准路径:
APPICON_DIR="${BUILT_PRODUCTS_DIR}/${ASSETCATALOG_COMPILER_APPICON_NAME}.appiconset" - 同时确认脚本是否处理了iOS 11+新增的图标尺寸(比如1024x1024的App Store图标),Amaro需要能识别并覆盖这些新尺寸的图标。
2. 调整构建阶段的执行顺序
Xcode 9对构建阶段的依赖检查更严格,如果Amaro脚本在资源打包后才执行,生成的overlay图标根本不会被包含进最终安装包:
- 进入项目的Build Phases面板,找到Amaro的Run Script,按住拖动它,将其移到Copy Bundle Resources这一项的前面。
- 勾选脚本下方的
Run script only when installing选项,避免增量编译时跳过脚本执行。
3. 手动调试脚本定位静默错误
有时候脚本会因为路径、权限问题静默失败,你可以手动在终端执行Amaro命令,查看具体报错:
- 切换到项目根目录,执行类似这样的命令(替换成你的实际路径和参数):
amaro --app-icon "${SRCROOT}/YourApp/Assets.xcassets/AppIcon.appiconset" --overlay "v${MARKETING_VERSION} (${CURRENT_PROJECT_VERSION})" - 重点排查是否存在路径不存在、权限不足,或者图标格式不符合iOS 11要求的错误(比如图标必须为PNG格式,不能有异常透明设置)。
4. 改用兼容性更好的原生工具方案
如果Amaro暂时没有适配Xcode 9的版本,你可以试试用ImageMagick或者系统自带的sips来实现overlay,这两个工具在各Xcode版本的兼容性更稳定:
- 先通过
brew install imagemagick安装ImageMagick,然后在Run Script里添加类似命令:
这个方法可以自定义文本样式、位置,完美适配所有图标尺寸。# 遍历AppIcon目录下的所有图标文件 for icon in "${APPICON_DIR}"/*.png; do # 在图标底部添加带描边的版本号文本,避免浅色图标上看不清 convert "$icon" -gravity south -pointsize 14 -fill white -stroke black -strokewidth 1 -annotate 0 "v${MARKETING_VERSION} (${CURRENT_PROJECT_VERSION})" "$icon" done
内容的提问来源于stack exchange,提问作者Mrugesh Tank
相关产品推荐
相关产品推荐

