快车道。在 Xcode 项目根文件夹中运行 sh 操作

Posted

技术标签:

【中文标题】快车道。在 Xcode 项目根文件夹中运行 sh 操作【英文标题】:FastLanes. Run sh action in Xcode project root folder 【发布时间】:2015-11-04 14:54:16 【问题描述】:

在以下Fastfile 上运行fastlane build_and_rename

  lane :build_and_rename do
    sigh
    gym(output_directory: "./Build/")
    sh "mv ./Build/MY-APP.ipa ./Build/nicely_name.ipa"
  end

导致以下错误ln: ./Build/MY-APP.ipa: No such file or directory

测试表明,FastLane 的sh 操作在./fastlane 目录中运行。例如,fastlane test_sh 代表以下 Fastfile

  lane :test_sh do
    sh "touch where_am_i.txt"
  end

导致在./fastlane 文件夹中创建where_am_i.txt。不在运行fastlane 的文件夹中。

显然我可以更改所有脚本以包含 ../,但想知道是否有办法让 fastlane 在 xCode 的根项目中运行 sh 操作?

【问题讨论】:

【参考方案1】:

原来比较简单,只要加上cd.. &&就可以切换到根目录了。

lane :test_sh do
    sh "cd .. && touch where_am_i.txt"
end

https://github.com/fastlane/fastlane/issues/990#issuecomment

【讨论】:

如何在shell脚本中传递参数?这不起作用lane :addPrivateKey do | options | sh ("cd .. && ./add_key.sh ", options[:clientKey]) end 错误是什么?您是否尝试过 sh ("touch", options[:clientKey]) 之类的方法来查看 options 参数是否按预期工作?【参考方案2】:

要更改目录,您可以使用 Ruby,Dir.chdir

示例

lane :test_sh do
  Dir.chdir("..") do
    # code here runs in the parent directory
    sh "touch where_am_i.txt"
  end    
end

见Fastlane docs

【讨论】:

【参考方案3】:

在 shell 脚本中调用 fastlane 操作。

转到包含 fastlane 文件夹的文件夹。

path="快速通道路径"

cd $path/
fastlaneAction="fastlane test_do"
$fastlaneAction

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于快车道。在 Xcode 项目根文件夹中运行 sh 操作的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 获取 Xcode 根文件夹目录路径

使用 Xcode 7、iOS 9 运行项目时出现“应用程序窗口应在应用程序启动结束时具有根视图控制器”错误

sh 每次构建项目时,如何强制Xcode重建项目中的Info.plist文件?

如何删除xcode项目中不再使用的图片资源

/bin/sh: /packages/flutter_tools/bin/xcode_backend.sh: 没有那个文件或目录

Xcode 9.2升级导致此错误:“命令/ bin / sh失败,退出代码为1”