动态配置各定制版本启动图

应用场景

  • 公司存在很多定制版本,但是启动图有个不统一,但是又不想通过增加Launch Screen File文件来配置各个启动图

目标

  • 使用一份LaunchScreen.stroyboard来配置多个启动图

实现

  • 在storyboard中增加一个UIImageView,Label命名为XXX


    1574382349860.jpg
  • 添加Run Script Phases,并重命名.注意需要在Copy Bundle Resources之前


    1574382568671.jpg

    1574382687063.jpg
  • shell脚本

1574382845264.jpg
  # Type a script or drag a script file from your workspace to insert its path.
  # 获取APP 的BundleID
  appID="${PRODUCT_BUNDLE_IDENTIFIER}"
  #根据BundleID 去 项目中寻找定制版本对用的type
  appType=$(/usr/libexec/PlistBuddy -c "Print :${appID}"     "${PROJECT_DIR}/XXXX.plist")
  # 根据type 去项目路劲中获取type对应的配置文件,从配置文件中获取key对应的值
  # 获取配置的文案
  #versionTitle=$(/usr/libexec/PlistBuddy -c "Print :key" "${PROJECT_DIR}/XXXStore/Config/${appType}_Config.plist")
  # 获取配置的启动图
  versionImage=$(/usr/libexec/PlistBuddy -c "Print :key1" "${PROJECT_DIR}/XXXStore/Config/${appType}_Config.plist")

  # 设置Launch Screen Stroyboard中命名为'LanchTitleView'的userLabel的text的值
  # XXXX表示Stroyboard的路劲
  #sed -i bak -e "/userLabel=\"LanchTitleView\"/s/text=\"[^\"]*\"/text=\"$versionTitle\"/" $PROJECT_DIR/XXX/LaunchScreen.storyboard

  # 设置Launch Screen Stroyboard中命名为'LaunchImageView'的userLabel的image的值
   sed -i bak -e "/userLabel=\"LaunchImageView\"/s/image=\"[^\"]*\"/image=\"$versionImage\"/"   $PROJECT_DIR/XXX/LaunchScreen.storyboard

总结

在打包各个定制版本时,只需要修改对应的BundleID即可,无需创建多个stroyboard和选择Launch Screen File对应的文件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容