iOS腳本自動化打包方案--xcodebuild

創新互聯建站主營浦江網站建設的網絡公司,主營網站建設方案,APP應用開發,浦江h5重慶小程序開發公司搭建,浦江網站營銷推廣歡迎浦江等地區企業咨詢
本文主要xcodebuild腳本自動化打包并上傳到蒲公英或者AppStore,廢話不多說,直接上干貨!
先了解一下xcodebuild打包需要的一些指令
-workspace XXX.xcworkspace
XXX.xcworkspace需要編譯工程的工作空間名稱,如果工程不是.xcworkspace的,可以不需要-workspace XXX.xcworkspace這段話
-scheme XXX
XXX是工程名稱,-scheme XXX是指定構建工程的名稱
-configuration Release
填入打包的方式是Debug或Release,就跟在Xcode中編譯前需要在Edit scheme的Build configuration中選擇打出來的包是Debug還是Release包一樣,-configuration就是配置編譯的Build configuration
-archivePath ./myArchivePath
配置生成.xcarchive的路徑, ./表示生成在當前目錄下,myArchivePath是生成的.Archive文件名稱
ODE_SIGN_IDENTITY=證書
配置打包的指定證書,如果該工程的Xcode已經配置好了證書,那么不加入這段話也可以,打包出來的證書就是Xcode中配置好的。
PROVISIONING_PROFILE=描述文件UUID
配置打包的描述文件,同上,Xcode已經配置好了就不用在填入這段話了
CONFIGURATION_BUILD_DIR
配置編譯文件的輸出路徑,如果需要用到.xcarchive文件內部的dSYM等文件,可以使用改字段指定輸出路徑。
如果工程是勾選了Automatically manage signing,那么就不用在配置ODE_SIGN_IDENTITY和PROVISIONING_PROFILE,今天這里講到的Automatically manage signing自動配置證書,手動配置的就不多說了,有興趣的話可以自己研究。
xcode工程配置自動獲取證書,如下圖:
打包所需要文件
配置打包的ExportOptions.plist文件,可以在任意一個Xcode工程中新建一個ExportOptions.plist文件。dev和adHoc和AppStore的配置文件內容不一樣,可以先手動打包后看下plist文件的樣式,這里提供一個樣例:
這里method對應的value為打包對應的環境,有development、ad-hoc、app-store、enterprise根據打包環境來配置不同的值
編譯腳本命令
xcodebuild archive -workspace XXX.xcworkspace -scheme XXX -configuration Release -archivePath ./myArchivePath CONFIGURATION_BUILD_DIR ./dir ODE_SIGN_IDENTITY=證書 PROVISIONING_PROFILE=描述文件UUID
導出ipa包命令
xcodebuild -exportArchive -archivePath ./myArchivePath.xcarchive -exportOptionsPlist ./ExportOptions.plist -exportPath ./out
-archivePath ./myArchivePath.xcarchive指定需要打包的.xcarchive路徑,./myArchivePath.xcarchive表示在當前終端路徑下的myArchivePath.xcarchive文件
-exportOptionsPlist ./ExportOptions.plist指定打包需要的ExportOptions.plist配置文件路徑
-exportPath ./out指定打包輸出的路徑, ./out表示打包結果輸出在終端的當前路徑下的out文件家中。如果沒有out文件夾會自動創建一個
腳本操作
首先:cd到需要自動打包的工程下
然后:在終端中輸入touch xcodebuild.sh創建xcodebuild.sh腳本文件
然后:雙擊打開腳本寫入下面 腳本內容(請確保所有版本的plist配置文件都寫好了)
最后:在終端中輸入./xcodebuild.sh運行腳本,按照步驟完成打包選擇(如果運行的時候出現Permission denied,請先在終端中執行chmod a+x *.文件的后綴名后,在運行,相當于提高腳本文件的權限)
腳本內容
此腳本包含了自動上傳蒲公英的選擇操作,根據輸入指令來執行具體操作
腳本實現
具體詳細腳本見GitHub地址: 如果好用記得給star,謝謝!
如腳本打包執行遇到問題可留言溝通!
pod登錄庫里報出的錯誤,因為把警告當成了錯誤
解決方案: build Setting 里的 Treat Warnings as Errors 改成 NO
解決方案:在 Build Setting 里的 Framework Search Paths 下添加 $(inherited) 配置項
解決方案:在對應的報錯文件里,如 "PMUISKeletonAdapter" 項目的 Build Phases-Headers-Public 里添加對應報錯的文件
解決方案:刪除緩存, DerivedData 里緩存文件清空或者clear
組件互相持有導致
解決方案: podfile 里刪除一個持有關系。或者不同時引用這兩個組件,只引用其中一個。
找不到庫導致(前提是項目里能搜索到)
解決方案:在Other Linker Flags里添加對應的庫
找不到MPGroupService庫里的MPMXXX文件里的CPMGroupMgr類
解決方案:添加對應的類文件或者相關的pod庫。
OBJC_METACLASS意思是報錯類重復,OBJC_IVAR是指定屬性重復
解決方案:刪除其中一個,如果是pod庫可以找找有沒有刪除相同的引用文件,能解決沖突的pod版本,如果沒有只能刪除其中一個pod庫。
當安裝多個xcode的版本,使用該工具使用指定的版本。
-p 或者 --print-path 查看當前開發者目錄,也即是xcode的版本目錄。print the path of the active developer directory
-s path 或 --switch path 選擇xcode的版本
--install 安裝
--version 查看版本
--reset 恢復默認
sudo rm -rf /Library/Developer/CommandLineTools 強制刪除安裝目錄下的文件
是管理Fat File的工具, 可以查看cpu架構, 提取特定架構,整合和拆分庫文件。
Mac OS X下二進制可執行文件的動態鏈接庫是dylib文件。所謂dylib,就是bsd風格的動態庫。基本可以認為等價于windows的dll和linux的so。mac基于bsd,所以也使用的是dylib。
Linux下用 ldd 查看,蘋果系統用 otool 。
otool命令介紹
MobSF
Mach-O 文件格式解析
xcodebuild :通過工程文件,生成app文件。
xcrun :通過app文件,來生成ipa文件(包含了簽名的過程)。
通過app文件生成ipa文件
libtool是一個通用庫支持腳本(/usr/bin/libtool),將使用動態庫的復雜性隱藏在統一、可移植的接口中。
可以在不同平臺上創建并調用動態庫,我們可以認為libtool是gcc的一個抽象,也就是說,它包裝了gcc或者其他的任何編譯器,用戶無需知道細節, 只要告訴libtool說我需要要編譯哪些庫即可,并且,它只與libtool文件打交道,例如lo、la為后綴的文件。
libtool工具的使用
庫是一單獨的文件,里面包含了按照特定的結構組織起來的其它的一些文件(稱做此庫文件的member)。原始文件的內容、模式、時間戳、屬主、組等屬性都保留在庫文件中。
詳細命令參見, 菜鳥網絡-ar命令
可以用來創建、修改庫,也可以從庫中提出單個模塊。
lipo libAFNetworking.a -thin arm64 -output lib-arm64.a 生成Arm64包
ar -t lib-arm64.a 輸出包含的.o文件 和 otool -L libAFNetworking.a 一樣。
ar -x lib-arm64.a 解壓出包里面的.o文件
在iOS開發中,常常用來分析二進制和靜態庫文件。
列出 .o .a .so 中的符號信息,包括諸如符號的值,符號類型及符號名稱等。所謂符號,通常指定義出的函數,全局變量等等。
iOS開發中,可以用來查看.a靜態庫所有打包進去的.o文件和函數接口信息,幫助我們定位崩潰信息。
例如: nm -u libAFNetworking.a 列出某個.o文件的接口信息。
二進制查看命令,將文件顯示為16進制字符串表示形式。
例如: xxd libYTKNetwork.a | grep "net" 查看YTKNetwork.a文件里面包含net字符串的,幫助我們分析一些二進制文件。
DWARF文件初探——提取輕量符號表
Mac系統下lipo, ar, nm等工具的使用簡介
美團 iOS 工程 zsource 命令背后的那些事兒
Linux工具參考篇
iOS 靜態庫沖突 兩個不同的.o 文件沖突 ,靜態庫分離
每個iOS開發者都是被折翼過翅膀的天使,都曾被證書配置折磨的痛苦不止,好不容易學會了手動管理證書,結果蘋果霸霸來了一個Automatically manage signing,又會陷入一圈的懵逼中,還真是不讓我們輕松,下面跟著我來將“充滿霧霾”的身心放空,不埋怨,不抱怨,畢竟蘋果霸霸也是好意嘛!接下來,讓這篇文章帶你理解自動配置證書如輕拂過額頭的一縷清風一般,吹過就驅散了你心中的“霧霾”。
到此,我想你已經能夠理解Xcode自動管理證書的過程了,如果還不夠理解,建議 靜下心 來再看一遍保證其意自現!
1:自動管理證書的原則是根據你創建的APP ID來匹配證書和配置文件,也可以理解成根據你的Bundle ID來匹配,比較手動管理還是方便很多,同時也不易出錯,理解證書的管理過程讓你在配置的時候輕松一笑面對,不再打錯配置文件的包,不再混淆證書配置之間的關系,這點還是非常重要的,你要理解證書配置的來龍去脈,而不是每次配置好后自己仍不知所以然,雖然成功了,但是難免出錯。
2:如果你發現Xcode自動配置的APP ID不是你想要的配置文件時候,因為你一個APP ID可以對應多個配置文件,所以它雖然APP ID是對的,配置文件不一定對,這個時候,你去文件夾刪除所有配置文件,然后再配置就可以了!
我是Qinz,希望我的文章對你有幫助。
標題名稱:ios開發xcode,iOs開發版會清空數據嗎
分享路徑:http://www.yijiale78.com/article8/dschsop.html
成都網站建設公司_創新互聯,為您提供網站維護、關鍵詞優化、網站導航、定制網站、品牌網站制作、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯