iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0

上一篇介紹了 Andriod 打包的方式,接著就是 iOS ,會先以 Xcode 的介面了解如何存擋、打包的你的應用程式,再來是將這一系列步驟使用 command line 寫成 script,讓你可以快速打包測試的應用程式。

IPA

就是 iOS 二進位制的格式,主要用來打包 iOS 應用程式所需要的程式碼、資源、文件、圖片...等,以用來安裝於 iPhone、iPad 等 iOS 系統的裝置。

使用 Xcode 打包測試用的 IPA

這邊我們要來打包測試用的 APP,首先打開 Xcode:
選好要打包的 APP scheme 跟 Build target Any ios Device(arm64)

https://ithelp.ithome.com.tw/upload/images/20230918/20162496pPFIu0o71e.png

存檔(archive)

點選Product/Archive開始存檔。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496etvTPODNK8.png

archive script

以上的操作,可以寫成 script 來執行。

package.json

{
"build_archive": "xcodebuild -workspace ./ios/你的Xcode workspace 文件的名稱.xcworkspace -scheme 你的應用程式方案名稱 -sdk iphoneos -configuration Release Provisioning_Profile=授權文件名稱_adhoc Development_Team=你的開發團隊ID archive -archivePath ./ios_ipa_build/你的文件名稱.xcarchive archive",
}
  • -workspace ./ios/你的Xcode workspace 文件的名稱.xcworkspace:指定 Xcode 的工作區文件的路徑,其中包含了你的項目。
  • -scheme 你的應用程式方案名稱:指定要編譯的 Xcode 方案的名稱,這個方案通常包括了項目的設置和構建信息。
  • -sdk iphoneos:這指定了要使用的 iOS SDK 版本,通常是 iphoneos 用於 iOS 設備。
  • -configuration Release:指定要使用的構建配置,這裡是 Release 通常這個版本是用於上架到 App Store 的版本。
  • Provisioning_Profile=授權文件_adhoc:指定的授權文件(Provisioning Profile)的名稱,它與憑證一起確保了你可以在實體設備上運行應用程序。
  • Development_Team=你的開發團隊ID:這是你的開發團隊(Development Team)的標識,用於識別你的應用程序,可以在 Apple 開者帳號的頁面中找到。
  • archive:Xcode 執行存檔。
  • -archivePath ./ios_ipa_build/你的文件名稱.xcarchive:這是指定存檔的輸出路徑和文件名,它將在./ios_ipa_build/目錄下創建一個 .xcarchive 文件。

發布應用程式(Disribute App)

存好後會跳出一個視窗,條列所有已經存好的檔案,包含應用程式名稱、版本、狀態、時間。
如果不小心關掉了,可以在 Window/Organizer打開。
這點下Disribut App(發布應用程式)的按鈕。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496c64bhjb1SX.png

發布的方法有 4 種,分別應用在不同的場景:

  1. App Store Connect: 當你的應用程式需要在 Apple App Store 上架,提供給全球的使用者時。
  2. Ad Hoc:主要適用於應用程式開發測試階段,可以安裝在指定的裝置,安全性較 Development 方式來得高,適合提供給測試團隊、客戶進行測試。
  3. Enterprise:適用於企業內部使用。
  4. Development:主要適用於應用程式開發測試階段,但是只有開發團隊內部的設備可以安裝,並且允許應用程式在測試環境。

這邊我們的目的是要提供內部用測試環境測試應用程式,所以先選 Development

後面的文章會聊到如何用 App Store Connect 上架你的應用程式。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496vobKgoDIGi.png

APP Thinning 指的是可以根據不同的 iOS 設備,僅提供該設備需要的資源或程式碼,以讓應用程式的大小降低,有點像上一篇 Andriod 提到的 AAB 檔案的處理機制,這裡 Xcode 會幫你依據不同的設備產出多個 ipa 檔案。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496F3TzBsQvam.png

簽署開發憑證,就選第一個讓 Xcode 自動幫你管理簽署的憑證吧~

https://ithelp.ithome.com.tw/upload/images/20230918/20162496rOhNZbo9to.png

開始進入打包的階段~

https://ithelp.ithome.com.tw/upload/images/20230918/20162496a2XHESEU8G.png

ipa 檔案打包完成!

https://ithelp.ithome.com.tw/upload/images/20230918/20162496bk1Du14JFR.png

匯出你的 ipa 檔案可以指定到你想要的目錄位置。

https://ithelp.ithome.com.tw/upload/images/20230918/2016249688OI0469Ty.png

Disribute script

這個步驟如果想要用 script 簡化,可以從剛剛匯出得到的那一包檔案中找到 ExportOptions.plist,把這個檔案放在你的專案目錄中。

https://ithelp.ithome.com.tw/upload/images/20230920/20162496LI6m1afyrD.png

ExportOptions.plist的就是你分發應用程式的配置文件,包含定義分發的方式、簽署的方式是手動或自動、團隊ID、是否開啟 APP Thinning...等,基本上與剛才使用 Xcode 圖形化介面的選項一樣。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>compileBitcode</key>
	<false/>
	<key>destination</key>
	<string>export</string>
	<key>method</key>
	<string>development</string>
	<key>signingStyle</key>
	<string>automatic</string>
	<key>stripSwiftSymbols</key>
	<true/>
	<key>teamID</key>
	<string>你的團隊ID</string>
	<key>thinning</key>
	<string><none></string>
</dict>
</plist>

package.json

{
"build_ipa": xcodebuild -exportArchive -archivePath ./ios_ipa_build/你的應用程式名稱.xcarchive -exportPath ./ios_ipa_build -exportOptionsPlist ./ios/ExportOptions.plist
}
  • -exportArchive:這部分告訴 xcodebuild 執行將存檔(archive)匯出為 .ipa 檔案。
  • -archivePath ./ios_ipa_build/你的應用程式名稱.xcarchive:這個選項指定存檔(archive)的路徑和名稱。
  • -exportPath ./ios_ipa_build:指定匯出的 .ipa 檔案存放的目錄。在這個例子中,它將匯出到名為 ios_ipa_build 的目錄中。
  • -exportOptionsPlist ./ios/ExportOptions.plist:這個選項指定匯出選項的配置文件。請換成你的實際配置文件路徑。

一次完成存擋與 .ipa 檔案匯出

yarn build_archive && build_ipa

參考資料

Difference ios ipa export with development or ad hoc profile
Using xcodebuild to Build from the Command Line


上一篇
DAY 12 React Native Android 打包 - APK & AAB
下一篇
DAY 14 使用 Firebase 發佈 React Native 測試版 APP - 多種環境配置
系列文
React Native CLI 開發心法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
DL
iT邦新手 5 級 ‧ 2023-10-10 15:58:33

酷~

我要留言

立即登入留言