天天看點

iOS-一鍵打包釋出fir

iOS-一鍵打包釋出

  • 前言
  • 特别說明
  • 目的
  • 步驟
  • 問題集錦or注意事項
  • end

前言: 在日常開發的過程中,有時候需要頻繁的打包,特别是當項目開發改了一個小bug也需要重新打包安裝,會比較慢,浪費時間與效率,曾經遇到線上線下問題不一緻排除的時候需要頻繁釋出。電腦卡頓的時候,解決問題一分鐘,打包就一小時。是以一件釋出很有必要

特别說明: 如果項目沒有采用Cocoapodsa管理,沒有.xcworkspace,隻有xcodeproj:隻需要将腳本這句

xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \ 
           

替換成這句就可以了

xcodebuild \
archive -project ${project_path}/${project_name}.xcodeproj \
           

目的:

  • 送出測試版本的ipa,或者下載下傳位址給測試人員,配置到證書,appid跟描述檔案,在produce-archive編譯打包,在上傳。需要專業人工操作并且耗費時間
  • 送出到app store稽核。稽核就是一個坑。各種規則規範一大堆慢慢解決

步驟:

一:準備工作

  • 因為需要上傳到Fir平台。需要先安裝fir-cli。使用gem install fir-cli 準備fir平台的登陸token如果不想上傳到fir則忽略.token在登陸後的個人清單選中api token生成

    [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-0wZxwleN-1585232544414)(http://120.77.154.148:8080/testmybatis/fir.png)]

  • 注冊蒲公英賬号,擷取蒲公英則需要akey和ukey,如果不上傳則忽略
  • 蘋果開發者賬号一枚.用于獲驗證書與描述檔案等

二:配置打包的plist檔案

說明:

  • 在xcode9之前不需要provisionProfiles,在xcode9之後加入provisionProfiles才能打包通過.
  • 打包方法method包含四種

app store (打包app store ipa 包)

ad hoc (打包測試上傳到fir or 蒲公英包)

enterprise (企業開發中打包)

development (儲存一個ipa 單獨用于開發或者部署來使用)

在.xcodeproj或者.xcworkspace目錄下配置

  • 配置導出測試ad-hoc測試plist檔案-exportTest.plist
<dict>
	<key>method</key>
	<string>ad-hoc</string>
	<key>compileBitcode</key>
	<false/>
	<key>provisioningProfiles</key>
	<dict>
		<key>com.zhile.miyuan</key>
		<string>miyuanAdHoc</string>
	</dict>
</dict>
           
  • 配置導出app store檔案 - exportAppstore.plist
<dict>
	<key>method</key>
	<string>app-store</string>
	<key>uploadBitcode</key>
	<true/>
	<key>uploadSymbols</key>
	<true/>
</dict>
           

三:使用xcedebuild打包

說明:

  • #工程絕對路徑:project_path=$(cd

    dirname $0

    ; pwd)
  • #工程名:project_name=XXX
  • #scheme名:scheme_name=XXX
  • #打包模式 Debug/Release development_mode=Release
  • #build檔案夾路徑 build_path=${project_path}/build
  • #plist檔案所在路徑exportOptionsPlistPath=${project_path}/exportTest.plist
  • #導出.ipa檔案所在路徑exportIpaPath= p r o j e c t p a t h / I P A D i r / {project_path}/IPADir/ projectp​ath/IPADir/{development_mode}

打包:

  • 清理一下版本緩存-configuration 等于 debug or release
xcodebuild \
clean -configuration release
           
  • 編譯工程
xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive
           
  • 導出ipa包
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
           
  • 上傳ipa包

    上傳fir

fir login -T XXX
	fir publish $exportIpaPath/$scheme_name.ipa
           

上傳到蒲公英

curl -F "[email protected]"${exportIpaPath}"/"${scheme_name}.ipa \
	-F "uKey=275140e30b2044291ac695f1bd5c475e" \
	-F "_api_key=08d597e3b51430760932c5157e4369c2" \
	https://www.pgyer.com/apiv2/app/upload
           

問題集錦or注意事項

  • 安裝fir-cli失敗報錯
ERROR:  Could not find a valid gem 'fir-cli' (>= 0), here is why:
          Unable to download data from http://gems.ruby-china.org/ - bad response Not Found 404 (https://gems.ruby-china.org/specs.4.8.gz)
HuZhiYuandeMacBook-Pro:~ zyuan$ gem sources -l
           

說明鏡像錯誤。最新的鏡像為

http://gems.ruby-china.com/
           

注意字尾是com.而不是org

  • 打包過程中遇到錯誤
error: exportArchive: No profiles for 'com.zhile.miyuan' were found

Error Domain=IDEProfileLocatorErrorDomain Code=1 "No profiles for 'com.zhile.miyuan' were found" UserInfo={NSLocalizedDescription=No profiles for 'com.zhile.miyuan' were found, NSLocalizedRecoverySuggestion=Xcode couldn't find any iOS Ad Hoc provisioning profiles matching 'com.zhile.miyuan'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild.}
           

說明最新的導出plist檔案需要添加描述檔案的配置provisioningProfiles

provisioningProfiles = {
		"com.zhile.miyuan" = miyuanAdHoc;
	};
           
  • 最後把是以指令寫成腳本.sh檔案。直接運作就可以。可以直接下載下傳下方的檔案。修改

最終腳本下載下傳 點我下載下傳

繼續閱讀