實現Xcode 9自動化打包
自動化打包指令碼
#!/bin/sh
#需要接受3個引數 1、scheme名 2、工程目錄 3、工程名字
#project目錄
PROJECT_PATH=$1
#project名稱
PROJECT_NAME=$2
#scheme名稱
SCHEME_NAME=$3
#現在時間(做資料夾名稱使用)
DATE=`date +%Y%m%d%H%M`
#歸檔檔案地址
ARCHIVE_PATH=$PROJECT_PATH/$DATE/$SCHEME_NAME
#通過archive歸檔出對應的xcarchive檔案
#對應步驟:
#1、清理工程
#2、歸檔工程
#3、工程名稱
#4、設定工程Scheme
#5、設定Debug或者Release模式
#6、歸檔輸出地址
#7、特殊設定,可忽略,為了讓過程更清晰
xcodebuild clean \
archive \
-project "$PROJECT_PATH/$PROJECT_NAME" \
-scheme "$SCHEME_NAME" \
-configuration "Release" \
-archivePath "$ARCHIVE_PATH" \
| xcpretty
echo "--------------------------------------"
#通過歸檔檔案打包出對應的ipa檔案
#對應步驟:
#1、打包命令
#2、歸檔檔案地址
#3、ipa輸出地址
#4、ipa打包設定檔案地址
xcodebuild -exportArchive \
-archivePath "$ARCHIVE_PATH.xcarchive" \
-exportPath "$PROJECT_PATH/$DATE" \
-exportOptionsPlist "$PROJECT_PATH/ExportOptions.plist"
open $PROJECT_PATH
前排提示:需要確保工程在沒使用指令碼的情況下也可以成功的進行歸檔與打包,指令碼只是為了簡化過程
遇到過的問題
-
xcodebuild: error: The flag -scheme is required when specifying -archivePath but not -exportArchive.
問題在於當你設定了 archivePath 的時候,必須要設定對應的是哪一個 scheme 。否則的話,命令不知道是對哪個 scheme 進行歸檔操作,無法繼續進行 -
This project contains no schemes.
通過命令xcodebuild -list
查詢工程中包含有哪些 scheme 的時候,提示該工程沒有 scheme。
解決方法:
1、開啟管理 scheme 介面進入管理 scheme
2、開啟對應的 Shared 開關scheme 管理介面
3.exportOptionsPlist 內容
如果不確定exportOptionsPlist中的內容有哪些,那麼可以通過 Xcode 打包來獲取對應的.plist的內容,再作刪減等處理。
1、Export 對應的Archive
2、選擇 Development (其他的暫時沒試過)打包介面
3、 然後選擇對應的配置,一直 next 直到打包出來就好
4、打包出來之後,在資料夾中會有多個檔案,ExportOptions.plist即為所需的.plist檔案
5、ExportOptions.plist 內容分析ExportOptions.plist
其中除了 provisioningProfiles,其他皆為可選的屬性,猜測會自動從 xcode 環境或者鑰匙串中獲取到對應的值
key | value |
---|---|
compileBitcode | 是否編譯 bitcode |
method | 打包型別(app-store/ad-hoc/enterprise/development) |
provisioningProfiles | key 為 bundleId、value 為描述檔名稱(如下圖 Provisioning Profile 可獲取) |
signingCertificate | 證書名(如下圖Code Signing Identity 可獲取,或直接使用 iPhone Developer/iPhone Distribution ) |
signingStyle | Automatic/Manual(手動設定或者自動設定,筆者這邊設定為 Manual) |
stripSwiftSymbols | 通常為 true |
teamID | 賬號ID(如下圖 Development Team 可獲取) |
thinning | 瘦身處理(為none即可) |
![3992845-a29c64387bda4546.png](https://i.iter01.com/images/24515c27057ae9bc1262a07903e087d07b6aad829b0c5aa7d722b07ef3051813.png)
Build Settings
相關文章
- Jenkins + GitLab + Xcode + Fir 實現iOS自動打包和分發JenkinsGitlabXCodeiOS
- iOS如何實現自動化打包iOS
- 使用 fastlane 實現自動化打包AST
- iOS--利用Fastlane實現自動化打包iOSAST
- WebDriverAgent xcode16 打包的 app 自動化真多坑(問題篇)WebXCodeAPP
- Jenkins + Git + fastlane + 蒲公英實現自動化打包上傳JenkinsGitAST
- 使用Jenkins實現前端自動化打包部署(Linux版本)Jenkins前端Linux
- fastlane 自動化打包工具實踐AST
- 幾行shell幫你的xcode迅速自動批量打包ipaXCode
- jenkins+gitlab + 蒲公英實現 android 應用自動化打包分發JenkinsGitlabAndroid
- Selenium自動化實現web自動化-1Web
- 基於Jekins+GitLab的混合工程實現Flutter自動化打包方案GitlabFlutter
- Python的iOS自動化打包PythoniOS
- iOS自動化打包(fastlane使用)iOSAST
- iOS自動化編譯打包iOS編譯
- jenkins+git+maven+tomcat 實現自動打包部署JenkinsGitMavenTomcat
- 前端使用docker+jenkins實現自動打包部署前端DockerJenkins
- 使用 Fastlane 實現 iOS 跟 Android 自動打包指令碼ASTiOSAndroid指令碼
- 基於DotNetty實現自動釋出 - 實現一鍵打包釋出Netty
- iOS9 Xcode10打包 崩潰修復iOSXCode
- IT 自動化:如何去實現
- 在XCode中實現生成Target後自動拷貝至指定目錄XCode
- iOS自動化打包部署踩坑記iOS
- 關於jenkins自動化打包探索Jenkins
- 安卓自動化打包環境搭建安卓
- ReactNative專案自動化打包釋出React
- 使用gulp實現前端自動化前端
- 如何實現辦公自動化?
- 是否只有實現了容器化、自動編排等等才算是實現了運維自動化?運維
- React Native專案自動化打包釋出React Native
- [原] php + Laravel 實現部署自動化PHPLaravel
- 如何實現高度自動化測試?
- CRD實現自動化容器安全方法
- python自動化審計及實現Python
- python實現自動化辦公01Python
- 利用Github Actions實現自動化部署Github
- Postman實現UI自動化測試PostmanUI
- 基於RestAssured實現介面自動化REST
- Python 實現自動化 Excel 報表PythonExcel