1. 程式人生 > >手機遠端控制Mac實現iOS APP一鍵打包上傳

手機遠端控制Mac實現iOS APP一鍵打包上傳

聽起來有點ridiculous哈~

不談業務場景,就說說功能實現~

需要解決兩個問題:

  • 手機怎麼就能控制電腦(這裡指的Mac)
  • 怎麼打包並上傳

問題一:手機控制Mac電腦

AppleScript

有好多辦法是可以控制電腦執行一定的操作,這裡先用郵件舉個栗子……

Mac自帶的郵件可以觸發一定的操作,可以預定義一個指令碼,通過接受到的郵件,觸發預定義的指令碼。這裡的指令碼只支援AppleScriptAppleScript是個什麼鬼?

AppleScript.png

面熟吧,就是不咋用,在裡面敲個命令

tell application "System Events" to sleep

執行一下,螢幕黑了吧!

郵件觸發指令碼

在接收到郵件的時候,可以設定一個動作,比如就要出發上面的一個指令碼,我們可以先儲存好這個指令碼,一會兒用到。先看看郵件偏好設定,如何設定,見下圖:

郵件設定.png

幾個設定比較容易看懂,收到郵件滿足條件則執行AppleScript,後面的package,就是剛才儲存的指令碼。指令碼需要新增的一定的位置才可以被執行,點選package一行的時候會讓你在 Finder 中顯示如下:

指令碼存放位置.png

放到這個 com.apple.mail 資料夾下!好了,試著按照自己設定的規則 發個郵件試試,看看指令碼會不會執行。

問題二:打包與上傳的指令碼

如果執行了,那666。往後的動作應該不陌生了,搞過持續整合的應該對打包上傳的指令碼不陌生了,一鍵無痛打包,想必你幹過;沒做過的也無妨,指令碼拿去不謝。最基本的流程如下:

打包流程.png

程式碼獲取

這個就不說了,相信git或者svn的命令你比我熟多了,扔進腳本里就好。

Archive + Export

都是用的xcodebuild命令,具體怎麼寫看下面的。

上傳

Linux 命令上傳,具體寫法看伺服器定義,我找了個蒲公英的上傳樣式。

打包指令碼的編寫,宣告一下啊:

真正有用的命令只有兩行,其中需要處理的東西比較多,
大神們寫的都很多,包括一些容錯。
我只寫了最基本可以快速使用的部分
如果需要更多的使用方式,稍後找到連結會給大家貼上去

給大神部落格打個廣告,參考如下:
Jenkins+github+fir持續整合iOS專案

建立一個檔案 touch shell, 貼上如下程式碼並儲存

#!/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路徑、匯出的ipa路徑、需要的ExportOptions.plist路徑可以隨便定義,路徑裡包含有之前定義的變數的時候,寫法如下:
# "${路徑變數名}/${APP名}.ipa"


# 刪除工程檔案
echo "+++++++++刪除工程檔案+++++++++"
rm -rf "${TARGET_NAME}.xcarchive"

# 進入工程原始碼根目錄
cd "${CODE_PATH}"

# 清除工程
echo "=================clean================="
xcodebuild -project "${APP_NAME}.xcodeproj" -scheme "${TARGET_NAME}" -configuration 'Release' clean

#將app打包成xcarchive格式檔案(PROVISIONING_PROFILE後面是你配置的證書對應的描述檔案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 '[email protected]'${CODE_PATH}/${APP_NAME}.ipa'' -F '_api_key= 自己蒲公英帳戶的_api_key' https://www.pgyer.com/apiv2/app/upload

儲存完成後只是一個普通的文字檔案,轉換成可執行程式需要通過 chmod 命令給許可權

chmod +x  給許可權
chmod -x 去除執行許可權

在指令碼目錄下執行

chmod +x shell

得到可執行檔案如下:

shell.png

有三個引數需要獲取 PROVISIONING_PROFILECODE_SIGN_DISTRIBUTIONexportOptionsPlist

PROVISIONING_PROFILE獲取

比如你專案已經配置好了,也可以打包,那麼找到 .xcodeproj --> 顯示包內容-> 開啟project.pbxproj(雙擊)--> 搜尋下PROVISIONING_PROFILE 就看到了。

CODE_SIGN_DISTRIBUTION獲取

開啟鑰匙串,找到根證書,檢視下詳情,有個類似於 iPhone Distribution: Zuiye Company Limited 這樣的名字,有的後面還會有個小括號,都需要複製過來。

exportOptionsPlist獲取

可以自己寫,但是有個最好的方式就是先用xcode打包一次,然後就看到這個ExportOptions.plist 了,跟 ipa 檔案在一起。


現在能控制電腦了,打包指令碼也可以自動打包上傳了,然後把兩件事情合併到一起,就是在郵件執行的那個腳本里呼叫以下這個打包指令碼,如下:

do shell script "打包指令碼的路徑"

給你的蘋果電腦發了個郵件,然後電腦執行打包指令碼並上傳APP,沒完事呢,缺啥呢?缺了個通知,我不知道有沒有釋出成功啊。不要著急,可以讓伺服器給你發。訊息以蒲公英為例,釋出成功一個APP,微信公眾號可以收到訊息,如下:

訊息通知巴紐

然後呢,接著開小差,再爬他個五百個臺階〜

還有,指令碼後面加個關機的命令,不幹活就讓電腦休息吧〜

還有,給電腦開個使用者,就幹這個事,因為電腦裡太亂了,不想別人看到〜

還有,今天大腿有點拉傷了,一字馬沒下到底。手還能動,熬夜寫了這篇小破文章〜

困了,明天再校對吧〜

感謝您閱讀完畢,如有疑問,歡迎新增QQ:714387953(蝸牛上高速)。
github上https://github.com/yhl714387953/Package
如果有錯誤,歡迎指正,一起切磋,進步共同
如果喜歡可以關注, Star,Fork,都是給我最大的鼓勵



作者:爺嘴
連結:HTTPS://www.jianshu.com/p/173c2e52a836
來源:書繁簡
繁簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處