Mac PRO下iOS项目Bot归档时lipo间歇性报错求助
Hey,我之前在维护一个70+ Pod组件的iOS项目时,遇到过几乎一模一样的问题——构建慢到离谱还时不时报lipo的错。结合我的踩坑经验,给你整理几个靠谱的解决方向:
一、先搞定间歇性lipo报错
这个报错本质是临时文件操作冲突或者缓存目录权限异常,毕竟持续集成的Bot环境容易出现缓存堆积或权限问题:
- 清空Bot专属缓存:手动删除
/Users/admin/Library/Caches/XCSBuilder/Bots/下对应你的Bot的缓存目录,或者直接在Bot的「构建前脚本」里加自动清理命令:
记得替换成实际Bot的路径,别误删其他缓存。rm -rf /Users/admin/Library/Caches/XCSBuilder/Bots/[你的Bot唯一ID] - 修复缓存目录权限:有时候Bot运行用户(admin)的权限变更会导致缓存目录读写异常,执行以下命令修复:
sudo chown -R admin:staff /Users/admin/Library/Caches/XCSBuilder/ sudo chmod -R 755 /Users/admin/Library/Caches/XCSBuilder/ - 关闭并行二进制合并:Xcode默认的并行lipo处理在大规模Pod项目里很容易引发文件竞争。你可以在Podfile里添加配置关闭Pods的并行编译:
或者在Xcode的Build Settings里,把install! 'cocoapods', :disable_input_output_paths => trueNumber of Parallel Build Subtasks调低(比如设为4,根据你的Mac Pro核心数调整)。
二、把1小时的构建时长砍下来(顺带降低报错概率)
构建时间越长,出错的概率越高,优化速度是治本之策:
- 升级CocoaPods到稳定版:1.4.0是五六年前的版本了,后续版本对大规模依赖解析、编译速度优化很多。建议升级到1.12.x这类稳定版本:
sudo gem install cocoapods -v 1.12.1 pod repo update pod install --repo-update - 启用Pod预编译:用CocoaPods的
precompile_frameworks!把常用第三方Pod预编译成静态库,减少每次构建的重复编译量。在Podfile开头添加:
如果有些Pod有资源文件或者动态依赖不能预编译,就排除它们:precompile_frameworks!precompile_frameworks! exclude: ['你的特殊Pod1', '你的特殊Pod2'] - 优化Xcode构建配置:
- 确保Bot设置里选了「使用上次成功构建的Derived Data」,避免每次都Clean Build;
- Release模式下把
Debug Information Format设为DWARF with dSYM File,减少编译后文件处理时间; - 如果项目不需要Bitcode,直接关闭
Enable Bitcode,这玩意儿会大幅增加构建时长。
- 简化Bot构建流程:
- 不要每次构建都执行
pod install,只在Podfile或Podfile.lock变更时再执行; - 把依赖下载放到预处理步骤,提前拉好所有Pod,避免构建时等待下载拖慢速度。
- 不要每次构建都执行
三、其他排查小技巧
- 检查Mac Pro的磁盘空间:缓存目录和Derived Data需要足够空间,磁盘满了也会导致文件移动失败;
- 去Console.app里搜
lipo或XCSBuilder,看看有没有更详细的报错日志,比如是不是某个文件被其他进程占用了; - 先在本地手动跑一次归档操作,看看会不会同样报错,排除Bot环境的特殊问题。
内容的提问来源于stack exchange,提问作者Jordi Rodriguez
相关产品推荐
相关产品推荐

