shell Unversal framework修复方案

10 篇文章 0 订阅
9 篇文章 0 订阅

摘要:
目前工程有两代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。

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

  • 最后加入新的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"
  • 把新的脚本放到下图的位置

这里写图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值