如何使用 fastlane 为模拟器创建应用程序文件

How to create app file with fastlane for simulator

我需要使用 fastlane .app 文件(或者 .ipa 文件,如果可以的话)创建,然后我可以将其拖放到另一台计算机上的模拟器中。我尝试用 gym 或 xcodebuild 参数来做,但我不知道该怎么做。

目前我是这样做的:

但我需要用 fastlane 来完成。

如您在 issues at fastline repo 中所见,您可以使用健身房来完成,但也许,使用 xcodebuild 会更好(示例):

xcodebuild -configuration Debug -target targetname -arch i386 -sdk iphonesimulator10.3

比搜索 ~/Library/Developer/Xcode/Archives/<date>(或您用 -archivePath 指定的位置)和内部将是 xcarchive.

  1. 在查找器中导航到您的 .xcarchive 文件
  2. 右键单击 .xcarchive 文件和 select“显示包 弹出菜单中的“内容”
  3. 查找器将切换为显示 .xcarchive 的内容 文件。
  4. 导航到 Products/Applications
  5. 您的 .app 将位于 Products/Applications

来自 here.


Here is answer,对你有帮助。


更新: 如果你需要从命令行获取应用程序文件,你可以这样做:

mv /YourXCArchiveLocation/archive.xcarchive/Products/Applications/AppName.app /YourDesiredLocation/AppName.app

这是我使用的车道:

lane :generate_test_app do
    xcbuild(
        workspace: "MyApp.xcworkspace",
        scheme: "MyApp",
        configuration: "Debug",
        xcargs: "-sdk iphonesimulator SYMROOT='/var/tmp/'"
    )
end

它将在 /var/tmp/Debug-iphonesimulator/MyApp.app

中离开该应用程序

另请参阅:How do I build my projects from the command line?

我用 build_app 做到了:

build_app(
    scheme: scheme,
    workspace: workspace,
    configuration: build_configuration,
    derived_data_path: output_path,
    skip_package_ipa: true,
    skip_archive: true,
    destination: "generic/platform=iOS Simulator"
)

我认为如果你想使用健身房,你可以以此为基础。

棘手的部分是找到 .app 目录。这是我使用的:

Dir.mktmpdir do |dir|
  xcbuild(
    workspace: "#{project_name}.xcworkspace",
    scheme: "#{project_name}",
    configuration: "Debug",
    xcargs: "-sdk iphonesimulator SYMROOT=#{dir}"
  )
  app_path = sh("find #{dir} -name *.app -type d").strip()
  sh("mv #{app_path} #{options[:output_directory]}/#{app_identifier}.app")
end

我们通过以下 gym 调用实现了此功能:

archive_path = gym(
  skip_package_ipa: true,
  destination: "platform=iOS Simulator,name=iPhone 6",
  configuration: "Debug",
  build_path: "simulator_build"
)

这将在目录“simulator_build/”中生成一个 .xcarchive,其中包含一个模拟器兼容的 .app 文件。

archive_path 将是创建的 .xcarchive 包的绝对路径。

name= 需要匹配 xcrun simctl list 输出中显示的现有模拟器设备的名称。 iPhone 6默认存在,所以它应该是一个安全的选项。

在将此文件拖到模拟器上进行安装之前,您需要使用 Gatekeeper 将其列入白名单:

spctl --add ~/project/simulator_build/Products/Applications/YourApp.app

如果您忘记了,您将收到“...无法打开,因为它来自身份不明的开发人员。”在模拟器中点击应用程序时出错。

如果您收到“...已损坏且无法打开。您应该将其移至废纸篓。”,说明 .app 自代码签名以来发生了一些变化。使用

codesign -vvv ~/project/simulator_build/Products/Applications/YourApp.app

查看自代码签名以来添加、删除或更改了哪些文件。