谈一谈 IPA 上传到 App Store Connect 的几种方法
1、前言
關于上傳 ipa 包到 App Store Connect 的方法,相信有 iOS 開發經驗的同學,一定知道完成 App 開發后,一般都是用 Xcode 的 Archive 打包后上傳到蘋果后臺。所以,這個就是今天要寫的水文?顯示不是吧!答案肯定不是啊,本文將給大家一個相對全面介紹。蘋果開發的知識點非常多,官方文檔也很多,能夠學好學完,不一定人人能夠做到。在我的理解,iOS進階,不是說你必須掌握很高深的技術,而是了解全面的知識,能夠做出不一樣的產品、體驗,這個才是優秀的開發者!
2、Xcode
利用 Xcode 的 Archive 生成 app 包后,選擇 Distribute App ,將 App 通過 Xcode 上傳到 App Store Connect 后臺,這個就不多說的,iOS 開發都需要經歷一下。
3、Application Loader
當然,Xcode 這種方式,是需要有源代碼情況下,才能上傳。所以,就會有沒有源代碼的情況,怎么上傳的情況啦!
Application Loader 就是這樣一種方式:
Application Loader 是一款 Apple 工具能夠幫助您將 App 的二進制文件上傳至 App Store。
Application Loader 上傳速度快、連接穩定并且具備早期驗證警告功能。
登陸界面:
主界面:
其實,如果了解 Xcode 歷史的同學,會知道現在的 Application Loader App 的功能已經被蘋果弱化了,以前還能夠批量創建提交內購品項等,現在新版本已經去掉了。另外,以前在蘋果開發者官網,有單獨的頁面,可以下載獨立版本的 Application Loader 軟件,現在也已經去掉了。
可能的原因,在我看來有幾點。第1點是,單獨維護這樣一個軟件,需要人力,因為,如果不依賴于 Xcode,在一臺電腦只安裝了 Application Loader,那個肯定需要安裝 Command Line Tools 這個命令行工具,如果是安裝 Xcode 默認也帶上,如果更新了 Xcode 版,也會跟隨升級,所以,維護 Application Loader 軟件,不只是單獨的一個應用入口,當然,也是因為這個 Application Loader 做了一些早期驗證警告:
上傳 ipa 包時,工具會檢查一些要求和內容格式等,如果不符合,就會報錯,所以,這些初步的檢查報錯,也是 Application Loader 需要維護的。
第2點,Application Loader 需要的人并不多,站在開發者環境,大多數開發者負責上傳 ipa 包,另外,批量上傳內購品項,一定很多人不知道,所以,蘋果也去掉了。開發者后臺也去掉了,所以,Application Loader 現在是集成在 Xcode 中,說不定,那天就直接去掉。
第3點,越來越多的聲音,希望蘋果能通過 App Store Connect 后臺能直接上傳 ipa 包、批量創建內購品項等功能。但根據我觀察這幾年的 WWDC,蘋果對 App Store Connect 后臺進行了比較大的改變,2022年08月23日就是對 App Store Connect 和 Apple Developer 后臺,2個賬號體系合并,主線上,還是整個系統性上,對于功能和UI界面上,不知道有沒有相關計劃。我的猜測,還是有希望的。因為近年來,跨平臺開發, React Native/ Weex / Flutter,其實,可以不需要依賴 Xcode、macOS 進行開發,打包上傳 ipa 卻需要一臺 macOS 和 Xcode,有一點不可理解?(當然,也不排除蘋果希望大家因此,能多賣出幾臺 Mac 電腦,也許我的猜測是錯的吧,但愿~)
具體關于 Application Loader 使用方法,大家可以看看官方使用文檔,已經非常詳細,而且這幾年,蘋果很多文檔都已經有翻譯中文版本啦!Application Loader 介紹(中文):https://help.apple.com/itc/apploader/
4、altool
您可以使用 Application Loader 的命令行工具 altool,驗證 App 二進制文件并將其上傳至 App Store。
所以,Application Loader 應用界面下,也是基于 altool 命令來處理 ipa 文件。明白了這點,對于命令行就沒有什么問題啦。
若要在上傳之前驗證構建版本或將有效構建版本自動上傳至 App Store,您可在您的持續集成系統中包含 altool。altool 位于以下文件夾中: Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/
對于這點,如果有做過自動化打包、上傳發布或 shell 腳本命令的同學,應該就知道,我們很多時候,希望自動上傳,而不是人工操作UI,一步一傻瓜的操作,這不是程序員的工作方式!所以,用命令行的目的就在這里。需要說明一下,剛才也提到 Application Loader 是有早期驗證警告功能,也就是說,可以檢查這個 ipa 包的內容或格式,是不是符合蘋果的規定和要求。
所以,若要運行 altool,請在命令行指定以下一項操作,可以是檢查(--validate-app),或者上傳(--upload-app)操作:
$ altool --validate-app -f file -u username [-p password] [--output-format xml]$ altool --upload-app -f file -u username [-p password] [--output-format xml]
命令參數說明:
| --validate-app | 您要驗證指定的 App。 |
| --upload-app | 您要上傳指定的 App。 |
| -f file | 正在驗證或上傳的 App 的路徑和文件名。 |
| -u username | 您的用戶名。 |
| -p password | 您的用戶密碼。 |
| --output-format [xml / normal] | 您想讓 Application Loader 以結構化的 XML 格式還是非結構化的文本格式返回輸出信息。默認情況下,Application Loader 以文本格式返回輸出信息。 |
5、Transporter
也許,對于一般的開發者來說,altool 已經能滿足基本的上傳 ipa 文件的需求。但是,正好前面說的,如果你需要進行批量創建內購品項,還有其它操作,可能大多數開發者不知道,蘋果除了 iOS,還有非常多的服務, iTunes Connect 帳戶(圖書發行商或音樂提供商)、 iTunes Store、Apple Books,盡管我們中國地區有些服務或者非常少用。
所以,蘋果提供 Transporter 來處理大量和差異化數據的操作的工具(可以在 macOS、Windows 和 Linux 操作系統上安裝和運行 Transporter。):
Transporter 是 Apple 基于 Java 的命令行工具,用于進行大量目錄交付。您可以使用 Transporter 將預生成的內容以 Store 數據包的形式交付至 iTunes Store、Apple Books 和 App Store。
不論您使用 iTunes Connect 帳戶(圖書發行商或音樂提供商)、App Store Connect 帳戶(App 開發者)或是編碼工作室帳戶來交付圖書、視頻、音樂或 App 內容,您都可以使用 Transporter 以確保您的元數據和素材(例如音頻、視頻、圖書和 App 文件)適當地交付至 iTunes Store、Apple Books 或 App Store,并根據 Apple 的規范驗證 Store 數據包。
這里,只會介紹用 Transporter 命令來上傳 ipa 文件,更多的功能和說明,大家可以查看官方文檔(中文):https://help.apple.com/itc/transporteruserguide/
注意: 下面命令中的 iTMSTransporter 是一個變量名,【重要事項】 作為一名 App 開發者,您可以在已安裝 Xcode 或 Application Loader 的情況下使用 Transporter,或者您也可以手動下載 Transporter。有關如何為 App 開發者安裝 Transporter 的信息,請參見 App 開發者的安裝說明。
因為我們默認都安裝了 Xcode,所以 Transporter 命令,我們引用 Xcode 中的 Application Loader 里的 iTMSTransporter, 在 .bash_profile 添加了一個別名,這樣可以在任何目錄路徑調用 iTMSTransporter 命令:
alias iTMSTransporter='`xcode-select --print-path`/../Applications/Application Loader.app/Contents/MacOS/itms/bin/iTMSTransporter'
注:
-
1、其中 xcode-select --print-path: print the path of the active developer directory(打印當前使用的Xcode版本軟件的開發人員目錄的路徑),然后在當前使用的 Xcode 版本對應的 Application Loader 下的 iTMSTransporter。
-
2、當然,也可能通過設置全局環境變量來直接使用命令,添加 TRANSPORTER_HOME 環境變量。要添加 TRANSPORTER_HOME 環境變量,請在您的 .bash_profile 中添加以下行:export TRANSPORTER_HOME=。例如,如果您安裝了 Xcode,則該行應如下所示:
export TRANSPORTER_HOME=`xcode-select --print-path`/../Applications/Application Loader.app/Contents/MacOS/itms/bin
其中,我們除了剛才說的檢查和上傳模式外,可能會用于這個命令的幾種模式,
-
Lookup Metadata 模式
檢索您之前上傳的某個 App 當前的元數據。如果您之前上傳的是 .itmsp 數據包且 Apple 在您初次上傳后修改了元數據,您需要先檢索修改后的元數據,再重新發送元數據更新的數據包。
iTMSTransporter -m lookupMetadata -u [user] -p [password] -apple_id(-apple_ids) -destination [output_path]
-
Provider 模式
確定您有權限為哪些帳戶交付內容。
iTMSTransporter -m provider -u [user] -p [password]
-
Verify 模式
驗證您的 .itmsp 數據包,并在交付前確保元數據和素材符合技術要求,以保證上傳數據包前解決任何潛在的問題。
iTMSTransporter -m verify -u [user] -p [password] -f [itmsp_path] [-vp <text | json>]
-
Upload 模式
檢查您的素材和 .itmsp 數據包,驗證它們是否準備就緒以供交付,然后向 App Store 上傳內容和元數據。
iTMSTransporter -m upload -u [user] -p [password] -f [itmsp_path]
關于這些模式的參數,蘋果文檔有非常詳細的說明,雖然需要花一點的腦子去理解(文檔真的很~),好了。下面簡單說明一下,上傳命令怎么使用吧
-
上傳 ipa 示例:
iTMSTransporter -m upload -u xxx@xxx.com -p xxx -f /Users/HTC/Desktop/Upload.itmsp
xxx@xxx.com :App Store Connect 賬號 xxx :App Store Connect 賬號的密碼 /Users/HTC/Desktop/Upload.itmsp :這個一個目錄,Upload.itmsp 是一個文件夾名字,不是文件,里面包含2個文件,一個就是要上傳的 ipa 文件,另一個是一個 xml ,描述這個 ipa 文件的信息。
ipa_metadata.xml:
<?xml version="1.0" encoding="UTF-8"?><package version="software5.10" xmlns="http://apple.com/itunes/importer"> <software_assets apple_id="{apple_id}" app_platform="{app_platform}"> <asset type="{archive_type}"> <data_file> <size>{file_size}</size> <file_name>{file_name}</file_name> <checksum type="md5">{file_md5}</checksum> </data_file> </asset> </software_assets></package>
需要修改 xml 中的一些參數:
{apple_id} :這個 ipa 文件對應的app的 apple id {app_platform} : app的平臺,填寫ios {archive_type} :歸檔類型,填寫bundle {file_size} :ipa 文件的大小 {file_name} :ipa 文件的名字 {file_md5}: ipa 文件的md5值
-
一些重要參數說明:
| -itc_provider | 檢查和上傳時建議加子賬號的團隊id,但測試發現不用 也行,先不帶,因為獲取很麻煩 |
| -errorLogs | 存儲錯誤日志的目錄 |
| -loghistory | 記錄成功上傳的數據包 |
| -outputFormat xml | 以 XML 格式返回輸出信息 |
| -throughput | 顯示成功上傳數據包的總傳輸時間以及數據包大小和每秒字節數 |
| [-o ] | 記錄輸出信息 |
| [-v ] | 日志級別,默認eXtreme,詳細 |
| -vp | 在驗證或上傳數據包文件時顯示進度信息 |
| [-Xmx4096m] | 指定 4 GB Java 虛擬機 (JVM) 堆棧內存 |
總結
最后,這就是幾種上傳ipa包的方法,當然,如果經驗豐富的開發者,可能使用過 fastlane 、shenzhen 這樣的自動化工具命令,也是可以上傳 ipa 文件,如果你研究過它們的源代碼,你就會發現,他們使用的命令就是 iTMSTransporter,這也正是,我想寫這篇文章的原因。現在大家在開發過程中,一直想提升自己,想進階,想成為高手,然而找不到途徑?我希望,大家不要忽視開發過程的每一個重要的環節,這就是進階的途徑!愿大家都能感悟達到~
最后的最后,想說一下最近不怎么更新博客的原因?除了比較忙外(什么時候閑!),寫好一篇文章,需要去考查相關的資料和知識,對每一行文字,都要精斟細酌,因為當我看到博客的訪問量越來越多人時,為了不誤導大家,所以需要承擔的責任感覺也大了。這也是寫文章的好處吧,除了整理思維,體系構建,表達自己,還有分享,責任,擔當中國IT技術傳承的一份子,安樂~
appuploader視頻教程:2022最全Hbuilder打包成蘋果iOS-App的詳解 - 騰訊云開發者社區-騰訊云騰訊云開發者社區致力于打造開發者的技術分享型社區。營造云計算技術生態圈,專注于提高開發者的技術影響力。https://cloud.tencent.com/developer/video/33058
總結
以上是生活随笔為你收集整理的谈一谈 IPA 上传到 App Store Connect 的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪里有mysql认证_国内哪个城市可以考
- 下一篇: 怎么把数据文件上传云服务器,怎么把数据上