因为公司业务原因,需要快速生成合作方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里配置那么灵活,可以添加到各个时期。