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

c3frrgcw  于 2023-04-07  发布在  其他
关注(0)|答案(6)|浏览(155)

我需要创建fastlane .app文件(或.ipa文件,如果它的作品),我可以下一步拖放到模拟器在另一台电脑上。我试图做它与健身房或与xcodebuild参数,但我不知道如何做到这一点。
现在我是这样做的:

  • 在XCode中我为模拟器构建应用程序
  • 接下来我在DerivedData中搜索应用程序文件(~/Library/Developer/XCode/DerivedData/Build/Products/Debug-iphonesimulator/)
  • 我把这个文件复制到别的地方

但我需要用快车道。

pgccezyw

pgccezyw1#

这是我使用的车道:

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
另请参阅:如何从命令行构建项目?

yyhrrdl8

yyhrrdl82#

我使用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"
)

我想如果你想去健身房的话,你可以以此为基础。

56lgkhnf

56lgkhnf3#

正如你在issues at fastline repo中发现的那样,你可以用gym来做,但也许,如果你使用xcodebuild(示例)会更好:

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

然后搜索~/Library/Developer/Xcode/Archives/<date>(或者你用-archivePath指定的地方),里面会有 xcarchive
1.在查找器中导航到.xcarchive文件
1.右键单击.xcarchive文件并在弹出菜单中选择“显示包内容

  1. finder将切换到显示.xcarchive文件的内容。
    1.导航到产品/应用
    1.您的.app将位于产品/应用程序中
    here
    Here is answer,这对你有帮助。

**UPDATE:**如果你需要从命令行获取app文件,你可以这样做:

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

rsaldnfx4#

我们通过以下gym调用实现了这一点:

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

这将在包含模拟器兼容的.app文件的目录“simulator_build/”中吐出一个.xcarchive。
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

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

ctrmrzij

ctrmrzij5#

棘手的部分是找到.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
ygya80vv

ygya80vv6#

要获取**.app**文件,您需要在不创建归档的情况下构建应用。您可以使用以下Fastlane脚本为iPhone模拟器创建.app文件:

lane :build_app_for_simulator do
  build_ios_app(
    workspace: "WorkspaceName.xcworkspace",
    scheme: "SchemeName",
    configuration: "Debug",
    clean: true,
    sdk: "iphonesimulator",
    build_path: "./build",
    derived_data_path: "./DerivedData",
    skip_archive: true,
    skip_package_ipa: true,
    include_symbols: false,
    include_bitcode: false,
    xcargs: "-UseModernBuildSystem=YES"
  )
end

运行此脚本后,构建的**.app文件将位于您在derived_data_path参数中指定的DerivedData文件夹中。您需要在DerivedData文件夹中找到Build/Products/Debug-iphonesimulator文件夹,您的.app**文件将位于该文件夹中。

相关问题