iOS 自動打包
使用腳本實現自動打包彼妻,網上搜了好多嫌佑,但是偶比較笨,一直發(fā)現不知道怎么使用侨歉,看了好久屋摇,
終于改了個可以使用的,但是最后發(fā)現不能用xcrun導出幽邓;寶寶心里苦炮温,但寶寶不說??;接著改牵舵,最后終于被我搗鼓成功了柒啤,分享給大家一下
Note: 只是簡單的基礎版本的,這個支持的是沒有使用Cocoapods的工程畸颅,担巩,腳本見iOS自動打包_shell腳本;如果是使用Cocoapods工程的没炒,可以稍微修改一下涛癌,鼓勵大家自己試試,試好了順便分享給我,??
使用方法:
iOS自動打包-sh的使用:下載壓縮包后拳话,解壓先匪,里面有后綴為.sh的文件和.plist的文件,將這兩個文件放到
.xcodeproj所在的文件夾下假颇,然后ProjectName和SchemeName胚鸯,打開terminal,運行這個.sh文件即可笨鸡。
然后來說一下調試中遇到的問題:
- 文件路徑的問題
- Scheme的問題姜钳,我不知道自己的sheme是什么?或者我的sheme明明就是這個但是提示我找不到
- 腳本運行完形耗,發(fā)現所有的文件都變成Modified狀態(tài)哥桥,整個人頓時就不好了。激涤。拟糕。
問題一:路徑的問題
因為是shell腳本,偶會的本來就不多倦踢,周五那天智商爆表送滞,居然啃懂了其中幾句,然后還知道去找度娘辱挥,所以被我改成功了犁嗅,
這個腳本路徑被設置為.xcodeproj所在的文件夾,
打包的.xcarchive文件放在這個文件夾下的.build文件夾下晤碘,
導出的ipa文件在桌面
問題二:Scheme的問題
不知道自己的Scheme是什么的褂微,可以去Product->Scheme->Edit Scheme下查看
或者直接運行腳本會打印出來
寫了自己的Scheme但是運行腳本后報這個錯的
要注意一下Edit Scheme界面的shared要勾選
腳本運行完,所有文件變?yōu)镸odified狀態(tài)
使用git diff查看了之后园爷,發(fā)現是filemode的變化
文件chmod后其文件某些位發(fā)生了變化宠蚂,如果嚴格比較原文件和chmod后的文件,兩者是不一樣的童社,但是源代碼通常只關心文本內容求厕,因此chmod產生的變化應該忽略
上面的是找度娘之后,找到的博客里介紹的扰楼,請原諒甘改,忘記當時怎么搜的了,所有找不到出處灭抑,文字是當時截圖。抵代。腾节。。。
輸入 git config core.filemode false
案腺,之后就好了
代碼分析
-
變量聲明
project_path 是獲取此腳本文件所在的目錄庆冕,百度搜出來的Linux-獲取當前正在執(zhí)行腳本的絕對路徑
project_name 是.xcodeproj前面的文字
scheme_name 是前面說的那個
build_path 是當前路徑下build文件夾
exportOptionsPlistPath 是plist文件的路徑
exportFilePath 是導出.ipa包的路徑 -
打印scheme、清理工程、編譯工程、打包
打印scheme鞍时,如果不知道怎么獲取scheme_name父叙,可以先填上上面的project_name,注釋掉下面所有的代碼晦毙,運行,就會打印出來當前project的scheme
清理工程,編譯之前先clean一下响巢。。棒妨。踪古。
編譯工程,編譯并生成.xcarchive文件券腔,放在build_path下伏穆,名字是project_name.xcarchive,這一步最為耗時
打包纷纫,將生成的.xcarchive文件導出.ipa包到桌面
這里面每一步都可以單獨執(zhí)行枕扫,例如想獲取shceme就注釋掉其他幾段代碼;想測試編譯通過沒涛酗,就只保留清理铡原、編譯這段;編譯成功商叹,導出失敗燕刻,就只保留導出這一段,修改測試
-
判斷導出是否成功
判斷桌面是否有scheme_name.ipa文件剖笙,有的話卵洗,就視為打包成功,打開這個文件夾弥咪;
后記
a. 如果是workspace工程过蹂,可按照這里這個鏈接,修改清理工程聚至、編譯工程酷勺、打包這幾步
這就是上面鏈接里的內容,xcodebuild的使用都在這里
b. .plist文件里的內容可參照這個鏈接扳躬,需要翻墻
xcodebuild's new exportOptionsPlist flag