[英]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 。
從這里。
這是答案,這將對您有所幫助。
更新:如果您需要從命令行獲取應用程序文件,您可以執行以下操作:
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.