當前位置:首頁 » 編程軟體 » xcode打包腳本

xcode打包腳本

發布時間: 2023-05-18 09:09:04

『壹』 iOS自動化打包腳本(Shell)

相比於Xcode打包,自動化腳本打包可以更有效地解放生產力,不需要一步步操作等待.

ExportOption.plist 文件配置如下圖所示,

[圖片上傳失敗...(image-8ab379-1626745287775)]

<figcaption style="display: block;">ExportOptions.plist</figcaption>

provisioningProfiles 字典中的值是項目的 bundle id 以及對應描述文件的名字, 配置該文件有一個取巧的方法, 直接使用Xcode打包, 之後直接導出 ipa 即可得到一份該文件, 如下圖所示:

[圖片上傳失敗...(image-5ca4e4-1626745287775)]

<figcaption style="display: block;">Xcode打包獲取ExportOptions.plist文件</figcaption>

注意: 如果是使用Xcode自動打包需要更改 plist 文件中的 signingStyle 的值為 manual

xcodebuild 更多詳細使用, 在終端中輸入:

『貳』 Xcode9打包腳本報錯requires a provisioning profile with the Push Notifications feature.

解決辦法,手譽知純動用Xcode archive 一份,然後會生成正確的對應的plisty文件,然後再把這個plist文件按你打包配置猛孝的文件名位置放過去,就行了,實慶咐際原因在於:

文件一覽

『叄』 iOS開發知識體系之《腳本自動化打包--xcodebuild》

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

本文主要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地址: https://github.com/Luck-666/xcodebuild.sh.git 如果好用記得給star,謝謝!

如腳本打包執行遇到問題可留言溝通!

『肆』 iOS打包ipa方法(.app->.ipa)

注意: itunes里的「我的應用程序」是指電腦上的程序,不要求聯機,可以把裡面的app刪除

不用打開XCODE編譯運行即可實現打包

Xcode菜單欄->Proct->Archive->三選一,一般選後兩個。
局限性:個人開發一般採用這種方法,但是當一個證書多人使用時就稍顯麻煩。一般多人開發時都是採用衡腔明provisioning profile+P12文件來進行真機調試。上述方法在最後導出ipa包時需要輸入appleID,這時還要向團隊的其他人要。採用provisioning profile+P12真機調試的方式不要求開發者知道appleID以及密碼,密碼一般放在leader那裡;

在xcode編譯產生出.app包的基礎上進行進一步處理,通過簡單的壓縮以及改後綴名即可實現ipa打包。
兩種實現方式:腳本自動處理(推薦,一勞永逸)、手動處理。

Step1: 新建文件夾,命名為「distribute」,在其中新建distribute.sh腳本文件,內容為:(注意:下面所有appName都是你項目真正的名稱)

Step2: 將要轉化的.app文件放到distribute/文件夾下,目錄結構為:

此時可能會提示 permission denied
執行 "chmod 777 distribute.sh"命令賦予許可權
再執行一次distribute.sh,顯示以下進度,完成。

Step1: 新建「Payload」文件夾,注意名字咐告要一字不差;
Step2: 將你的.app包放到Payload中,注意app的名字不做任何更改,就用xcode生成圓鍵的app名稱;
Step3: 在Payload文件夾上右鍵壓縮成zip,然後將生成的.zip文件後綴改成.ipa即可

『伍』 xcode 創建腳本,打包時刪除動態庫的模擬機架構

ios8 之後, 蘋果開放了動態庫.也就是我們可以拍喊打包動態庫, 但動態庫如果上傳到iTunes 是不能包含模擬機架構的. 所以就要求我們在打包時先刪除模高悉擬機的架構.
可以添加一個run 腳本幫我襲念野們完成, 參考網址

下圖就是腳本

Shell: /bin/sh

該腳本將查看你構建的應用程序的Frameworks文件夾~~ end

『陸』 Xcode12 iOS SDK製作問題

近期打包SDK時突然發現以前的打包腳本不管用了,真機包和模擬器包無法合成,在終端使用 lipo -create 手動合成發現:

原因:Xcode12模擬器默認添加了arm64架構,真機禪氏包和模擬器包都包含了arm64架敬者構。
修改方法如下:

另外附上賀稿散打包腳本:

腳本使用:

『柒』 Xcode使用Run Script腳本

由於某次上高手毀線,忘記修改Display Name,鑄成大錯。
Xcode可以使薯汪用腳本,在打包時修改Display Name、Bundle Id等信息。

一、在Build Phases添加腳本

1.2 自增長Build Number

二、在Scheme里添加腳本

在這里寫可以不用寫判斷Debug或戚備Release模式

三、錯誤
可能會出現錯誤:

編譯前clean一下,就可以解決了。
這是由於PRODUCT_BUNDLE_IDENTIFIER並沒有改過來導致的。
所以在打包上傳之前,需要clean一下。

參考資料:

『捌』 iOS一鍵自動編譯打包提交

在開始之前先嘮叨兩句自己對iOS自動化打包的接觸,覺得沒啥看頭滴老鐵可以略過直接從第二部分開始。項目自動打包提交的優勢不用說了,很高效便捷的東西,很早就接觸到了,但是一直沒有用到項目中,分析一下主要有以下幾個原因:

總結以上原因,一直沒有用到自動打包技術。而現在的情況是,

基於以上的情況,所以想自己寫一個自動打包的腳本,能夠實現 只運行一句命令就自動編譯打包發布 ,啥都不要做,掛著就行,打包完自動打開頁面提醒。

打包所需要的文件已經掛在 Github 上了。只需要把 BuildTool 文件夾 復制 到 項目主目錄 ,注意是復制!不是拖入項目主目錄,因為蘋果審核有屏蔽fir關鍵詞。然後打開終端, cd 到 BuildTool 文件夾,輸入 sh build.sh 命令,回車,開始執行此打包腳本。

具體的使用方法和參數配置 shell腳本 裡面已經有非常詳細的注釋。

有 AppStoreExportOptions.plist 和 AdHocExportOptions.plist 兩個plist文件,分別對應發布到AppStore和AdHoc(蒲公英、fir)。簡單說一下裡面的屬性:

寫完腳本後,發現已經有老鐵對打包腳本做了很詳細的分析了: 詳解Shell腳本實現iOS自動化編譯打包提交 。也有老鐵早就寫了iOS自動打包的腳本: xcode_shell 。

看了一下,功能也比較全,比如上傳包到自己的伺服器、上傳完成發郵件測試人員。但是現在已經有第三方平台也做到了比這更多的功能,比如蒲公英,還可以手機簡訊通知測試人員,有專門的頁面外鏈,支持持續集成等。

老鐵們如果還有什麼建議,歡迎在下面給我留言或私信。🤗 🤗 🤗

問題一(更新於2018年11月14日):

升級 Xcode 10 以上版本,蘋果採用新的構建系統,之前的 xcodebuild clean 命令已經無法使用,如果用這個命令的話會報錯,蘋果給的建議是刪除根目錄下的 build 目錄文件夾,刪除就可以完整打包了。但是每次打包都需要再刪除一遍,由於這個目錄的主要作用就是存儲 該項目的歷史構建包(Archive歸檔文件和iPA包) ,所以解決辦法是:

參考資料: build_system_release_notes_for_xcode_10

『玖』 iOS如何打包支持真機+模擬器

xcode從12版本之後不再推薦大家將模擬器和真機的mach-o文件進行合並,因為他們有很大的區別,也佔用大量的資源,更合理的做法是通過一種技術,讓xcode自動切換真機和模擬器環境察茄的sdk包,xcode為我們帶來了xcframework來處理鍵辯這個問題。簡單來說,xcframework就是將不同架構的framework「合並」到一個(這里的合並不是真的合並,他們本質上還是兩個framework),在具體的app打包之後又會只採用相應架構。

為了方便打包,我寫了一個腳本,大家把下面的腳本,修改稿沒缺下target_name後,放到framework項目根目錄並執行,就可以在 dist 目錄下發現打包好的xcframework,他的使用和framework完全一致!!

『拾』 一鍵實現多環境ipa打包以及鏈接下載全過程

2018年4月27日
一.jenkins實現不同環境用不同證書打包首燃 (這樣uat,pro線上襲芹辯環境就可以用生產證書(ad-hoc)打包,測試極光推送等功能)

第一步.工程裡面創建開發和生產拍缺的打包文件
生產的(主要是以下幾個地方的區別)

第二步:需要用生產證書打包的,改成對應的pp文件,建議用release, 這樣debug模式 uat和pro環境本機工程上還可以調試。(生產證書無法聯機調試)

第三步:不同環境指定不同打包腳本 (注意shell if條件判斷一定要有左右空格,if [ ${i} == "UAT」] 這樣會有問題的),注意用release打包。

成功:

2017年6月1日
已修改腳本 支持最新版本xcode8.3
2016年10月23日
一.實現效果(一級目錄和二級目錄)

1.使用
a.直接運行腳本就可以

b.或者配置在jenkins上

如果您發現本文對你有所幫助,如果您認為其他人也可能受益,請把它分享出去。

熱點內容
安裝flexlinux 發布:2025-07-15 16:35:47 瀏覽:372
網站模板php 發布:2025-07-15 16:22:47 瀏覽:248
編譯簡譜 發布:2025-07-15 16:16:37 瀏覽:813
編程口是什麼 發布:2025-07-15 16:11:28 瀏覽:497
微博如何從賬號和密碼登錄 發布:2025-07-15 15:59:02 瀏覽:123
解說電影需要哪些硬體配置 發布:2025-07-15 15:56:59 瀏覽:380
ftp快捷鍵搜索文件 發布:2025-07-15 15:51:44 瀏覽:459
蘋果賬號密碼忘了怎麼注銷 發布:2025-07-15 15:30:50 瀏覽:200
自動閱讀掛機腳本 發布:2025-07-15 15:20:18 瀏覽:848
開票人的許可權配置如何選擇 發布:2025-07-15 14:51:22 瀏覽:131