1. 程式人生 > >iOS自動化打包上傳的踩坑記

iOS自動化打包上傳的踩坑記

很久以前就看了很多關於iOS自動打包ipa的文章, 看著感覺很簡單, 但是因為一直沒有AppleDeveloper賬號可以給我用, 到了真的要搞自動打包的時候, 才發現到處都是坑。

基本命令

  1. xcedebuild: 生成Archive、匯出ipa, 還有其它功能…

  2. xcrun: 把*.app打包成ipa, 還有其它功能…

基本使用

一. xcedebuild打包Archive檔案

1 xcedebuild -workspace ${path to *.xcworkspace} -scheme ${scheme} -destination generic/platform=iOS archive -configuration Release ONLY_ACTIVE_ARCH=NO -archivePath ${export path *.arichive}
  • -workspace 你的*.xcworkspace檔案

  • -scheme 專案檔案裡面的scheme

  • -archivePath 生成的*.arichive檔案路徑

二. xcedebuild*.archive匯出ipa

1 xcedebuild -exportArchive -exportFormat IPA -archivePath ${path to *.archive} -exportPath ${export path *.ipa} -exportProvisioningProfile ${ProvisioningProfileName}
  • -archivePath 你的*.archive

    檔案, 可以使用上一個命令匯出

  • -exportPath 匯出的ipa路徑

  • exportProvisioningProfile 你的Distribution釋出證書的名稱(只需要名稱)

三. xcrun打包ipa

"xcrun -sdk iphoneos PackageApplication -v ${path to *.app} -o ${package path *.ipa}"
  • -v 你的*.app檔案, 生成的*.archive裡面有

  • -o 打包生成的*.ipa檔案路徑, 注意!!!這裡是不能填相對路徑, 因為這裡的路徑環境變數不是當前執行命令的路徑了

踩坑

坑一

使用第一個命令前, 需要確保你的專案的簽名配置好, 證書下好最新的

坑二

第二個命令的-exportProvisioningProfile填的只是你的釋出證書的名稱, 不是那一串id

坑三

第二個命令打包出來的*.ipa不能用來上傳到AppStore, 一直報CocoaPods裡面的第三方庫簽名錯誤

坑四

打包出來的*.ipa需要上傳到AppSotre的話, 可以使用第三個命令, xcrun那一個

坑五

使用第三個命令打包出來的*.ipa, 上傳到AppStore之後, 登入到iTunes Connect-APP-所有構建版本檢視到上傳的*.ipa正在構建。但是過了一會兒, AppleDeveloper賬號的郵箱就會收到一封報錯的郵件, 大概是說你的*.ipa包裡面, 缺少了一個SwiftSupport資料夾

經過各種搜尋之後, 原來需要把xcrun打包出來的*.ipa解壓, 然後新建一個資料夾, *.archive裡面的SwiftSupport資料夾copy進去, 還有把ipa解壓出來的move進入, 最後打個zip包, 再改成ipa字尾就可以上傳到AppStore了(應該吧, 還沒測試????)

番外篇

在踩到了第五個坑之後, 在github發現了一個iOS的打包、釋出庫…
上地址: https://github.com/nomad/shenzhen
懶得自己搞的可以使用這個庫, 感覺還是挺不錯的