一招解决pod update后工程icon不显示的问题(脚本)

本文介绍了在使用CocoaPods更新模块后遇到App图标不显示的问题,问题根源在于更新后的资源脚本不正确。通过修改资源脚本中的printf语句并创建一个自动化脚本添加到build.pre-actions中,解决了频繁手动修改的问题。总结指出,对于需要频繁调整的配置,可以利用脚本集成到工程配置中,提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为公司业务原因,需要快速生成合作方App。所以我们使用将项目拆分成模块,然后使用cocoapods制作私有模块,然后再在各个b端工程(合作方工程)将模块升级的方式,向b端工程导入代码(和模块维护)的方式。
然后可能是新的cocoapods的原因,update后程序icon不显示。查询后发现update后pods修改的pods-xxx.resources.sh最后的printf一句不合适,文件路径如下:

这里写图片描述

应该将上图文件中最后一句printf那句替换成下面:

  printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"
fi

但由于我们需要经常update,然后每次都需要改这里,很容易忘改等等。所以简单写了句脚本添加到了build. pre-actions里就好了,如下:

这里写图片描述

代码如下:

old='printf.*'
new='printf "%s\\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
sed -i '' "s#$old#$new#" ${PROJECT_DIR}/Pods/Target\ Support\ Files/Pods-BBAE/Pods-BBAE-resources.sh

总结:很多需要频繁修改或者特定条件下需要修改的配置,都可以简单写点脚本添加到工程配置中。
注意点:工程下,targets里,build Phases里也可以添加脚本,但我测试的过程中,build Phases里add的脚本,是在build后才执行的。而不像edit scheme里配置那么灵活,可以添加到各个时期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值