聽起來有點ridiculous哈~
不談業(yè)務(wù)場景闸度,就說說功能實現(xiàn)~
需要解決兩個問題:
- 手機怎么就能控制電腦(這里指的Mac)
- 怎么打包并上傳
問題一:手機控制Mac電腦
AppleScript
有好多辦法是可以控制電腦執(zhí)行一定的操作具垫,這里先用郵件舉個栗子……
Mac自帶的郵件可以觸發(fā)一定的操作斥季,可以預(yù)定義一個腳本虑省,通過接受到的郵件,觸發(fā)預(yù)定義的腳本渡紫。這里的腳本只支持AppleScript乔外,AppleScript是個什么鬼?
面熟吧纠炮,就是不咋用月趟,在里面敲個命令
tell application "System Events" to sleep
執(zhí)行一下,屏幕黑了吧恢口!
郵件觸發(fā)腳本
在接收到郵件的時候孝宗,可以設(shè)定一個動作,比如就要出發(fā)上面的一個腳本耕肩,我們可以先保存好這個腳本因妇,一會兒用到。先看看郵件偏好設(shè)置猿诸,如何設(shè)置婚被,見下圖:
幾個設(shè)置比較容易看懂,收到郵件滿足條件則運行AppleScript梳虽,后面的package址芯,就是剛才保存的腳本。腳本需要添加的一定的位置才可以被執(zhí)行,點擊package一行的時候會讓你在 Finder 中顯示如下:
放到這個 com.apple.mail 文件夾下谷炸!好了北专,試著按照自己設(shè)定的規(guī)則 發(fā)個郵件試試,看看腳本會不會執(zhí)行旬陡。
問題二:打包與上傳的腳本
如果執(zhí)行了拓颓,那666。往后的動作應(yīng)該不陌生了描孟,搞過持續(xù)集成的應(yīng)該對打包和上傳的腳本不陌生了录粱,一鍵無痛打包,想必你干過画拾;沒做過的也無妨啥繁,腳本拿去不謝。最基本的流程如下:
代碼獲取
這個就不說了青抛,相信git或者svn的命令你比我熟多了旗闽,扔進腳本里就好。
如果是 cocoapods
管理的項目蜜另,一般會加上
#更新組件
pod update --no-repo-update
Archive + Export
都是用的xcodebuild命令适室,具體怎么寫看下面的。
上傳
Linux 命令上傳举瑰,具體寫法看服務(wù)器定義捣辆,我找了個蒲公英的上傳樣式。
打包腳本的編寫此迅,聲明一下捌搿:
真正有用的命令只有兩行,其中需要處理的東西比較多耸序,
大神們寫的都很多忍些,包括一些容錯。
我只寫了最基本可以快速使用的部分
如果需要更多的使用方式坎怪,稍后找到鏈接會給大家貼上去
給大神博客打個廣告罢坝,參考如下:
Jenkins+github+fir持續(xù)集成iOS項目
創(chuàng)建一個文件 touch shell
, 粘貼如下代碼并保存(當項目通過.xcodeproj打開的)
#!/bin/sh -
export LANG=en_US.UTF-8
# 工程名,你項目叫啥名字
APP_NAME="Package"
# TARGET名稱搅窿,需要打包的TARGET
TARGET_NAME="Package"
# 工程根目錄
CODE_PATH=".xcodeproj 所在的目錄"
# 證書
# 證書名字的獲取后面說
CODE_SIGN_DISTRIBUTION="iPhone Distribution: Zuiye Company Limited"
# archive路徑嘁酿、導(dǎo)出的ipa路徑、需要的ExportOptions.plist路徑可以隨便定義男应,路徑里包含有之前定義的變量的時候闹司,寫法如下:
# "${路徑變量名}/${APP名}.ipa"
# 刪除工程文件
echo "+++++++++刪除工程文件+++++++++"
rm -rf "${baseDirForScriptSelf}/${TARGET_NAME}.xcarchive"
rm -rf "${baseDirForScriptSelf}/DistributionSummary.plist"
rm -rf "${baseDirForScriptSelf}/${TARGET_NAME}.ipa"
rm -rf "${baseDirForScriptSelf}/Packaging.log"
# 進入工程源碼根目錄
cd "${CODE_PATH}"
# 清除工程
echo "=================clean================="
xcodebuild -project "${APP_NAME}.xcodeproj" -scheme "${TARGET_NAME}" -configuration 'Release' clean
#將app打包成xcarchive格式文件(PROVISIONING_PROFILE后面是你配置的證書對應(yīng)的描述文件UUID,獲取方式后面談到)
echo "+++++++++++++++++archive+++++++++++++++++"
xcodebuild archive -project "${APP_NAME}.xcodeproj" -scheme "${TARGET_NAME}" -archivePath "${TARGET_NAME}.xcarchive" -configuration 'Release' PROVISIONING_PROFILE='后面講述怎么獲取' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}"
# 將xcarchive格式文件打包成ipa
echo "+++++++++++++++++ipa+++++++++++++++++"
xcodebuild -exportArchive -archivePath "${CODE_PATH}/${TARGET_NAME}.xcarchive" -exportPath "${CODE_PATH}" -exportOptionsPlist "${CODE_PATH}/ExportOptions.plist"
# 上傳蒲公英
echo "=================開始上傳================="
curl -F 'file=@'${CODE_PATH}/${APP_NAME}.ipa'' -F '_api_key= 自己蒲公英帳戶的_api_key' https://www.pgyer.com/apiv2/app/upload
如果項目是.xcworkspace打開的殉了,需要修改 clean
和 xcarchive
處如下
# 清除工程
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -configuration 'Release' clean
#將app打包成xcarchive格式文件(PROVISIONING_PROFILE后面是你配置的證書對應(yīng)的描述文件UUID开仰,獲取方式后面談到)
echo "+++++++++++++++++archive+++++++++++++++++"
xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -archivePath "${TARGET_NAME}.xcarchive" -configuration 'Release' PROVISIONING_PROFILE='后面講述怎么獲取' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}"
保存完成后只是一個普通的文本文件薪铜,轉(zhuǎn)換成可執(zhí)行程序需要通過 chmod
命令給權(quán)限
chmod +x 給權(quán)限
chmod -x 去除執(zhí)行權(quán)限
在腳本目錄下執(zhí)行
chmod +x shell
得到可執(zhí)行文件如下:
有三個參數(shù)需要獲取 PROVISIONING_PROFILE
众弓、CODE_SIGN_DISTRIBUTION
隔箍、exportOptionsPlist
PROVISIONING_PROFILE獲取
比如你項目已經(jīng)配置好了谓娃,也可以打包蜒滩,那么找到 .xcodeproj
--> 顯示包內(nèi)容
-> 打開project.pbxproj(雙擊)
--> 搜索下PROVISIONING_PROFILE
就看到了「┘瑁可能是一串長的字符串捡遍,也可能是你描述文件的文件名。
CODE_SIGN_DISTRIBUTION獲取
打開鑰匙串画株,找到根證書,查看下詳情啦辐,有個類似于 iPhone Distribution: Zuiye Company Limited
這樣的名字谓传,有的后面還會有個小括號芹关,都需要復(fù)制過來续挟。
exportOptionsPlist獲取
可以自己寫侥衬,但是有個最好的方式就是先用xcode打包一次诗祸,然后就看到這個ExportOptions.plist
了轴总,跟 ipa
文件在一起。
現(xiàn)在能控制電腦了肘习,打包腳本也可以自動打包上傳了际乘,然后把兩件事情合并到一起,就是在郵件執(zhí)行的那個腳本里調(diào)用以下這個打包腳本漂佩,如下:
do shell script "打包腳本的路徑"
給你的Mac電腦發(fā)了個郵件脖含,然后電腦執(zhí)行打包腳本并上傳APP,沒完事呢投蝉,缺啥呢养葵?缺了個通知,我不知道有沒有發(fā)布成功啊瘩缆。不要著急关拒,可以讓服務(wù)器給你發(fā)消息。以蒲公英為例,發(fā)布成功一個APP着绊,微信公眾號可以收到消息谐算,如下:
然后呢,接著開小差归露,再爬他個五百個臺階~
還有洲脂,腳本后面加個關(guān)機的命令,不干活就讓電腦休息吧~
還有剧包,給電腦開個用戶恐锦,就干這個事,因為電腦里太亂了疆液,不想別人看到~
還有一铅,今天大腿有點拉傷了,一字馬沒下到底堕油。手還能動馅闽,熬夜寫了這篇小破文章~
困了,明天再校對吧~
感謝您閱讀完畢馍迄,如有疑問福也,歡迎添加QQ:714387953(蝸牛上高速)。
github:https://github.com/yhl714387953/Package
如果有錯誤攀圈,歡迎指正暴凑,一起切磋,共同進步
如果喜歡可以Follow赘来、Star现喳、Fork,都是給我最大的鼓勵