iOS通用Framework编译提示无bundle问题

在编译一个通用的Framework A, 但A依赖的Framework B有个bundle, 这个bundle在真机上编译运行没问题, 但是在模拟器编译通过不了, 提示错误如下:

A/DerivedData/A/Build/Products/Debug-iphonesimulator/B/B.bundle" not found. Run 'pod install' to update the copy resources script

 

主要原因是模拟器下拷贝bundle文件失败,到build目录发现其实是bundle路径有问提, 但是这些都是pod install自动生成的, 我们可以在编译simulator时不去执行拷贝资源的脚本,有两种方案, 一种是直接修改'[CP] Copy Pods Resources', 一种是在这之前添加一个 run script, 我选择第二种, 脚本如下:

set -x
set -e

echo "executecheck-simulator.txt"


if [ "${EFFECTIVE_PLATFORM_NAME}" == "-iphonesimulator" ];
then
    FILENAME="${SRCROOT}"/check-simulator.txt

    cp -f "${SRCROOT}/Pods/Target SupportFiles/Pods-xxx/Pods-xxx-resources.sh""${SRCROOT}/Pods-xxx-resources.sh.tmp"
    sed -i "" "3 r ${FILENAME}""${SRCROOT}/Pods-xxx-resources.sh.tmp"
    cp -f "${SRCROOT}/Pods-xxx-resources.sh.tmp""${SRCROOT}/Pods/Target SupportFiles/Pods-xxx/Pods-xxx-resources.sh"
    rm -f "${SRCROOT}/Pods-xxx-resources.sh.tmp"
fi

 

使用时根据自己情况将xxx替换为Framework名称

 

其中,有几个需要注意的点:

  • 检测xcodebuild当前执行的设备, 可以通过EFFECTIVE_PLATFORM_NAME, 也可以通过PLATFORM_NAME, 其中PLATFORM_NAME表示当前Platform名称, 和Effective_platform_name一样, 但是没有-前缀
  • 如何插入内容到shell script, 使用sed命令, 注意mac下需要加""

 

 重新编译运行通过

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值