如何使用fastlane为模拟器创建app文件

Pio*_*icz 14 xcode ios fastlane

我需要使用fastlane .app文件(或.ipa文件,如果它适用)创建,我可以下一步拖放到另一台计算机上的模拟器.我尝试用健身房或xcodebuild参数做,但我不知道该怎么做.

现在我这样做:

  • 在XCode中,我为模拟器构建应用程序

  • 接下来我在DerivedData中搜索app文件(〜/ Library/Developer/XCode/DerivedData/Build/Products/Debug-iphonesimulator /)

  • 我把这个文件复制到其他地方

但我需要用fastlane来做.

Tom*_*nka 6

我已经设法用 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"
    )
Run Code Online (Sandbox Code Playgroud)

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


Sam*_*ach 5

你可以在fastline repo的问题中找到,你可以用健身房做,但也许,如果你使用xcodebuild(例子)会更好:

xcodebuild -configuration Debug -target targetname -arch i386 -sdk iphonesimulator10.3
Run Code Online (Sandbox Code Playgroud)

比搜索~/Library/Developer/Xcode/Archives/<date>(或你指定的地方-archivePath)和里面将是xcarchive.

  1. 导航到查找程序中的.xcarchive文件
  2. 右键单击.xcarchive文件,然后在弹出菜单中选择"显示包内容"
  3. 查找程序将切换为显示.xcarchive文件的内容.
  4. 导航到产品/应用程序
  5. 您的.app将位于产品/应用程序中

这里开始.


这是答案,这对你有所帮助.


更新: 如果您需要从命令行获取应用程序文件,您可以执行以下操作:

mv /YourXCArchiveLocation/archive.xcarchive/Products/Applications/AppName.app /YourDesiredLocation/AppName.app
Run Code Online (Sandbox Code Playgroud)


Ale*_*oVD 5

这是我使用的车道:

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

它将离开应用程序 /var/tmp/Debug-iphonesimulator/MyApp.app

另请参阅:如何从命令行构建项目?


Phi*_*vin 5

我们通过以下gym调用得到了这个工作:

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

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

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

name=需要与 的输出中显示的现有模拟器设备的名称相匹配xcrun simctl listiPhone 6默认情况下存在,因此它应该是一个安全的选择。

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

spctl --add ~/project/simulator_build/Products/Applications/YourApp.app
Run Code Online (Sandbox Code Playgroud)

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

如果您收到“...已损坏且无法打开。您应该将其移至垃圾箱。”,则说明自从 .app 进行协同设计以来,该 .app 发生了一些变化。使用

codesign -vvv ~/project/simulator_build/Products/Applications/YourApp.app
Run Code Online (Sandbox Code Playgroud)

查看自协同设计以来添加、删除或更改了哪些文件。

  • 杰出的!我只会添加 @tomasz-wronka 答案中的一段内容,可以指定通用设备,如“目的地:“generic/platform=iOS Simulator”” (2认同)