shell Unversal framework修复方案

摘要:
目前工程有两代Universal framework,第一代是基于shell实现,第二代是基于python实现。如果不修复第一代的Universal framework,虽然可以编译成功,但是无法生成有效的framework bundle。这样导致该业务bundle无法正常的加载到手淘工程中。

目前的修复方案为,使用脚本主动把基于shell的Universal framework主动修改为基于python的Universal framework。

具体收益—–未来只要统一维护Universal framework(基于python),如果未来target to iOS8,就可以用xcode提供的framework。

如何区分两代Universal framework

比较简单,打开工程,查看业务bundle target的是否有python的脚本,如果有这个是第二代,如果都是shell的脚本,这个是第一代。

修复步骤

如下:(以BMGuideMan工程为例子)

  1. 下载附件脚本压缩包:auto_xcode_edit.zip。放到工程BMGuideMan.xcodeproj文件同级目录下
|--BMGuideMan.xcodeproj
|--auto_xcode_edit
   |-- universal_python_fixed.py
   |-- universal_shell_fix.py
  1. 终端 cd到工程文件夹,运行python命令
python auto_xcode_edit/universal_shell_fix.py
  1. 手动打开TBGuideMan.xcodeproj工程, 选择业务bundle framework对应的的target,该例子是选择TBGuideMan这个target。这个地方请大家仔细,由于时间有限,没有完全做到自动化,还是请大家手动改下吧。

第三步的步骤具体看下图,一步一步来吧。

  • 选中业务bundle framework的target的build parse。

shell Unversal framework修复方案_第1张图片

  • 查看Run Script脚本,只保留图中红圈指定的Run Script。 可能有的同学发现此时工程的run script中有两个一样的Run Script。OK没错只要保留一个就可以。

shell Unversal framework修复方案_第2张图片

  • 重新Run Script顺序调整下,并且修改该Run Script中Shell为/usr/bin/python。具体修改看下图红圈标识部分

然后把build parse中的顺序,调整为下图的数据

shell Unversal framework修复方案_第3张图片

  • 最后加入新的Run Script脚本,内容如下
    # remove the last framework
    set -e
    set +u
    echo rm -rf "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework"
    rm -rf "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework"
  • 把新的脚本放到下图的位置

shell Unversal framework修复方案_第4张图片

总结:由于比较忙,解决方案,难免有问题,请大家多多提建议,发现问题。

你可能感兴趣的:(脚本)