簡體   English   中英

如何使用 fastlane 為模擬器創建應用程序文件

[英]How to create app file with fastlane for simulator

我需要使用 fastlane .app 文件(或 .ipa 文件,如果適用)創建,然后我可以將其拖放到另一台計算機上的模擬器中。 我試過用gym或xcodebuild參數來做,但我不知道該怎么做。

現在我這樣做:

  • 在 XCode 中,我為模擬器構建應用程序

  • 接下來我在 DerivedData (~/Library/Developer/XCode/DerivedData/Build/Products/Debug-iphonesimulator/) 中搜索應用程序文件

  • 我將此文件復制到其他地方

但我需要用快車道來做。

這是我使用的車道:

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

另請參閱: 如何從命令行構建我的項目?

正如您在 fastline repo 的問題中發現的那樣,您可以使用gym 來完成,但也許使用xcodebuild (示例)會更好:

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

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

  1. 在查找器中導航到您的 .xcarchive 文件
  2. 右鍵單擊 .xcarchive 文件並在彈出菜單中選擇“顯示包內容”
  3. 查找器將切換到顯示 .xcarchive 文件的內容。
  4. 導航到產品/應用程序
  5. 您的 .app 將位於 Products/Applications

這里


這是答案,這將對您有所幫助。


更新:如果您需要從命令行獲取應用程序文件,您可以執行以下操作:

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

我已經設法用 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"
)

如果您想使用健身房,我認為您可以以此為基礎。

我們通過以下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

查看自協同設計以來添加、刪除或更改了哪些文件。

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

我在日常生活中使用快速fastlane

這很簡單。 安裝fastlane並確保在執行任何其他操作之前更新到最新版本。

首先,您必須在應用程序的文件夾中運行fastlane init

然后,您必須確保在目標的構建設置中,您擁有正確的配置文件和證書(例如AdHoc或AppStore用於發布)。

然后,您只需在項目的文件夾中運行此命令:

gym —workspace "WORKSPACE_NAME.xcworkspace" —scheme "SCHEME_NAME" -n "IPA_FILE_NAME"

對於模擬器構建,您可以將export_options "./ExportOptions.plist"參數與專用導出選項.plist文件一起使用,或者在專用的Gymfile如下所示:

export_options( method: "ad-hoc", manifest: { appURL: "https://example.com/My App.ipa", }, thinning: "<thin-for-all-variants>" )

它使用與xcodebuild相同的參數,所以你應該沒問題。 例如,你可以通過-archivePath-exportArchive如果你需要歸檔,而不是一個選項.ipa文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM