1. 程式人生 > 其它 >談一談 IPA 上傳到 App Store Connect 的幾種方法

談一談 IPA 上傳到 App Store Connect 的幾種方法

 

1、前言​

關於上傳​

2、Xcode​

利用​

 

3、Application Loader​

當然,Xcode 這種方式,是需要有原始碼情況下,才能上傳。所以,就會有沒有原始碼的情況,怎麼上傳的情況啦!​

Application Loader 就是這樣一種方式:​

Application Loader 是一款 Apple 工具能夠幫助您將 App 的二進位制檔案上傳至 App Store。​

Application Loader 上傳速度快、連線穩定並且具備早期驗證警告功能。​

登陸介面:​

 

主介面:​

 

其實,如果瞭解​

可能的原因,在我看來有幾點。第1點是,單獨維護這樣一個軟體,需要人力,因為,如果不依賴於 Xcode,在一臺電腦只安裝了 Application Loader,那個肯定需要安裝 Command Line Tools 這個命令列工具,如果是安裝 Xcode 預設也帶上,如果更新了 Xcode 版,也會跟隨升級,所以,維護 Application Loader 軟體,不只是單獨的一個應用入口,當然,也是因為這個 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 電腦,也許我的猜測是錯的吧,但願~)​

具體關於​​https://help.apple.com/itc/apploader/​​​

4、altool​

您可以使用​

所以,Application Loader 應用介面下,也是基於 altool 命令來處理 ipa 檔案。明白了這點,對於命令列就沒有什麼問題啦。​

若要在上傳之前驗證構建版本或將有效構建版本自動上傳至
Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/​

對於這點,如果有做過自動化打包、上傳發布或​

所以,若要執行--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。​

不論您使用​

這裡,只會介紹用Transporter 命令來上傳 ipa 檔案,更多的功能和說明,大家可以檢視官方文件(中文):​​https://help.apple.com/itc/transporteruserguide/​​​

注意: 下面命令中的 iTMSTransporter 是一個變數名,​​【重要事項】​​ 作為一名 App 開發者,您可以在已安裝 Xcode 或 Application Loader 的情況下使用 Transporter,或者您也可以手動下載 Transporter。有關如何為 App 開發者安裝 Transporter 的資訊,​​請參見​​。​

因為我們預設都安裝了Transporter 命令,我們引用 Xcode 中的 Application Loader 裡的 iTMSTransporter, 在 .bash_profile 添加了一個別名,這樣可以在任何目錄路徑呼叫 iTMSTransporter 命令:​

alias iTMSTransporter='`xcode-select --print-path`/../Applications/Application Loader.app/Contents/MacOS/itms/bin/iTMSTransporter' ​

注:​

  1. 1、其中 xcode-select --print-path:iTMSTransporter。​
  2. 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​

其中,我們除了剛才說的檢查和上傳模式外,可能會用於這個命令的幾種模式,​

  1. Lookup Metadata 模式​

檢索您之前上傳的某個​

iTMSTransporter -m lookupMetadata -u [user] -p [password] -apple_id(-apple_ids) -destination [output_path]​

  1. Provider 模式​

確定您有許可權為哪些帳戶交付內容。​

iTMSTransporter -m provider -u [user] -p [password]​

  1. Verify 模式​

驗證您的​

iTMSTransporter -m verify -u [user] -p [password] -f [itmsp_path] [-vp <text | json>]​

  1. Upload 模式​

檢查您的素材和​

iTMSTransporter -m upload -u [user] -p [password] -f [itmsp_path]​

關於這些模式的引數,蘋果文件有非常詳細的說明,雖然需要花一點的腦子去理解(文件真的很~),好了。下面簡單說明一下,上傳命令怎麼使用吧​

  1. 上傳​

iTMSTransporter -m upload -u [email protected] -p xxx -f /Users/HTC/Desktop/Upload.itmsp​

[email protected] :App Store Connect 賬號
xxx :App Store Connect 賬號的密碼
/Users/HTC/Desktop/Upload.itmsp :這個一個目錄,Upload.itmsp 是一個資料夾名字,不是檔案,裡面包含2個檔案,一個就是要上傳的 ipa 檔案,另一個是一個 xml ,描述這個 ipa 檔案的資訊。​

ipa_metadata.xml:​

<?xml versinotallow="1.0" encoding="UTF-8"?><package versinotallow="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>​

需要修改​

{apple_id} :這個 ipa 檔案對應的app的 apple id
{app_platform} : app的平臺,填寫ios
{archive_type} :歸檔型別,填寫bundle
{file_size} :ipa 檔案的大小
{file_name} :ipa 檔案的名字
{file_md5}:​

  1. 一些重要引數說明:​

引數

說明

-itc_provider​

檢查和上傳時建議加子賬號的團隊id,但測試發現不用 也行,先不帶,因為獲取很麻煩​

-errorLogs​

儲存錯誤日誌的目錄​

-loghistory​

記錄成功上傳的資料包​

-outputFormat xml​

以 XML 格式返回輸出資訊​

-throughput​

顯示成功上傳資料包的總傳輸時間以及資料包大小和每秒位元組數​

[-o ]​

記錄輸出資訊​

[-v ]​

日誌級別,預設eXtreme,詳細​

-vp​

在驗證或上傳資料包檔案時顯示進度資訊​

[-Xmx4096m]​

指定 4 GB Java 虛擬機器 (JVM) 堆疊記憶體​

總結​

最後,這就是幾種上傳ipa包的方法,當然,如果經驗豐富的開發者,可能使用過 fastlane 、shenzhen 這樣的自動化工具命令,也是可以上傳 ipa 檔案,如果你研究過它們的原始碼,你就會發現,他們使用的命令就是 iTMSTransporter,這也正是,我想寫這篇文章的原因。現在大家在開發過程中,一直想提升自己,想進階,想成為高手,然而找不到途徑?我希望,大家不要忽視開發過程的每一個重要的環節,這就是進階的途徑!願大家都能感悟達到~​

最後的最後,想說一下最近不怎麼更新部落格的原因?除了比較忙外(什麼時候閒!),寫好一篇文章,需要去考查相關的資料和知識,對每一行文字,都要精斟細酌,因為當我看到部落格的訪問量越來越多人時,為了不誤導大家,所以需要承擔的責任感覺也大了。這也是寫文章的好處吧,除了整理思維,體系構建,表達自己,還有分享,責任,擔當中國IT技術傳承的一份子,安樂~​

finally,五一快樂!致敬勞動者!​