You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fastlane increment_build_number插件agvtool报错:无法找到$(SRCROOT)/Info.plist

解决Fastlane increment_build_number调用agvtool时找不到$(SRCROOT)/Info.plist的问题

我之前在多人协作的项目里也碰到过一模一样的坑!当用Fastlane的increment_build_number工具自动升级版本号时,agvtool突然抛出错误:

正在更新Info.plist中的CFBundleVersion... $(SRCROOT)/Info.plist 无法找到"$(SRCROOT)/Info.plist"

问题根源

agvtool是个独立的命令行工具,它根本不认识Xcode项目里的$(SRCROOT)这类环境变量——它会把这个变量当成路径的一部分直接去查找,自然找不到对应的文件。

关于“改绝对路径”方案的问题

确实有人会想到把Xcode设置里的Info.plist路径改成绝对路径,但这个方案在多人协作场景下完全行不通:每个开发者的本地项目路径大概率不一样,把绝对路径提交到Git仓库只会导致其他同事的项目报错,反而徒增协作成本。

更靠谱的替代方案

方案1:让Fastlane直接操作Xcode项目(推荐)

绕过agvtool的路径解析问题,让Fastlane直接修改Xcode项目文件来更新build number。在你的Fastfile里,给increment_build_number指定xcodeproj参数即可:

lane :bump_build do
  # 获取当前最新的build号
  current_build = get_build_number(xcodeproj: "./YourApp.xcodeproj").to_i
  # 递增build号
  increment_build_number(
    xcodeproj: "./YourApp.xcodeproj",
    build_number: current_build + 1
  )
end

这样Fastlane会直接修改Xcode项目文件里的build配置,完全不需要调用agvtool,自然就避开了路径变量解析的坑。

方案2:动态替换路径后调用agvtool

如果你坚持要用agvtool的话,可以在Fastlane里先动态获取项目的实际根路径,把$(SRCROOT)替换成真实路径再执行命令:

lane :bump_with_agv do
  # 获取项目根路径
  src_root = File.expand_path(".")
  current_build = get_build_number(xcodeproj: "./YourApp.xcodeproj").to_i
  # 调用agvtool时指定正确路径
  sh "agvtool new-version -all #{current_build + 1}", chdir: src_root
end

内容的提问来源于stack exchange,提问作者Alex Andrews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:22:51