IOS工程自動打包併發布指令碼實現
作者:webfrogs
轉載請註明出處。
前言
IOS的開發過程中,當需要給測試人員釋出測試包的時候,直接使用xcode來做的效率是非常低下的。尤其是當有一點小改動需要重新出包時,那簡直是個折磨的人的工作。通過一番研究後,遂決定寫一系列指令碼,以代替人工完成打包和釋出的過程。
目前指令碼已經完成,基本可以滿足我目前的需求。現將其開源,託管在github上,專案地址:點選這裡
思路
藉助xcode所附帶的“Command Line Tools”,可以通過命令列來完成IOS工程的編譯和打包工作。指令碼正是基於此完成的。
本套指令碼分為三個部分:負責編譯工程並打包的指令碼ipa-build,負責生成itms-services協議檔案的指令碼ipa-publish,以及負責將ipa-publish指令碼生成檔案上傳到伺服器的指令碼upload。
其中,由於我自己的情況是伺服器端的同事給我了內部測試伺服器的sftp的上傳許可權,所以這個upload指令碼主要實現了使用sftp來上傳的功能。具體可以實際情況來做修改。
注意:預設安裝完的xcode並沒有自帶“Command Line Tools”,需要在xcode中選擇後下載才能使用
實現
開啟工程後,會發現本套指令碼中包含好幾個shell檔案。下面對其功能做說明:
ipa-build: 編譯xcode工程並生成ipa檔案 ipa-publish: 生成符合itms-services協議的檔案,併發布到伺服器。 sendEmail: stmp傳送email的指令碼。(別人寫的) sftpDownloadFile: 通過sftp協議下載檔案 sftpUploadFile: 通過sftp協議上傳檔案 updateLocalIndexHtml: 對索引檔案進行處理(二進位制檔案,非shell指令碼) uploadItemsServicesFiles: 將itms-services協議檔案上傳到伺服器
實際使用的指令碼,只有"ipa-build"和"ipa-publish"這兩個。其他檔案會被ipa-publish這個指令碼呼叫的依賴檔案。其中出了"updateLocalIndexHtml"是我用objc寫的一個用來進行文字處理的編譯後的二進位制檔案,其餘均為shell指令碼。
shell指令碼實現,大家可以開啟指令碼來看一下,裡面的註釋算是很詳細了。不需要太多說明。
其中值得一提的就是我在寫sftp協議上傳功能的時候,碰到了一個問題就是使用指令碼來自動輸入密碼,也就是互動式指令碼的編寫。最後選擇了expect來完成,因為我發現mac系統裡自帶了這個expect命令。
使用
在編寫指令碼時,我已經考慮到,要儘量使這個指令碼使用起來簡單方便。如果只需要打包,那麼只使用ipa-build指令碼即可。如果需要用itms-services協議來發布,則再執行ipa-publish指令碼即可。在ipa-publish指令碼中呼叫了upload指令碼,所以upload指令碼不需要單獨使用。
ipa-build指令碼使用方法:
ipa-build指令碼絕對路徑 引數1 引數2
其中,引數1是IOS工程的根路徑,是必輸項。引數2可以不輸入,是可選的,含義是編譯時的工程configuration型別,有4種類型可選:Debug, AdHoc,Release, Distribution。預設是Release。
ipa-build指令碼執行後,會在IOS工程根路徑下生成名為“build”的資料夾,在這個資料夾中又有一個名為“ipa-build”的資料夾,打包所生成的最新ipa包就在其中。
ipa-publish指令碼使用方法:
ipa-publish指令碼絕對路徑 引數1 引數2
引數1是IOS工程的根路徑,是必輸項。引數2是可選的,含義是當上傳檔案成功後是否傳送email通知,y為傳送,n為不傳送,預設的值是不傳送。
ipa-publish指令碼執行後,會在“build”資料夾中生成一個以工程的targetname為名字的資料夾。其中,存放了itms-services協議所需的所有檔案。指令碼會將裡面內容全部上傳到伺服器中。
注意事項
1、執行指令碼需要絕對路徑,不能使用相對路徑。
2、指令碼下載後,若要使用,有些指令碼需要一些改動。
其中ipa-build指令碼無須更改。可以直接使用。ipa-publish指令碼需要配置一些資訊後方能正常使用。
用文字開啟ipa-publish指令碼後,在shell開始的地方,有一段需要配置的地方,如下:
#須配置內容 start
#sftp引數設定
sftp_server=192.168.xx.xx
sftp_username=xx
sftp_password=xx
sftp_workpath="/usr/share/xx/xx/xx"
#釋出應用的url地址
pulish_url="http://xx.com/xx"
#以下是郵箱的相關設定
#收件人
[email protected]
#傳送者郵箱
[email protected]
#郵箱使用者名稱
email_username=xx
#郵箱密碼
email_password=xx
#smtp伺服器地址
email_smtphost=smtp.exmail.qq.com
#可配置內容 end
根據實際情況配置即可。
相關推薦
IOS工程自動打包併發布指令碼實現
作者:webfrogs 轉載請註明出處。 前言 IOS的開發過程中,當需要給測試人員釋出測試包的時候,直接使用xcode來做的效率是非常低下的。尤其是當有一點小改動需要重新出包時,那簡直是個折磨的人的工作。通過一番研究後,遂決定寫一系列指令碼,以代替人工完成打
iOS自動打包併發布指令碼
本文最終實現的是使用指令碼打 Ad-hoc 包,併發布測試,當然稍微修改一下指令碼引數就可以打其他型別的 ipa 包了。另外該指令碼還實現了將生成的 ipa 包上傳至蒲公英進行測試分發。文中內容包括: xcodebuild 簡介 使用xcodebuild
iOS工程自動打包 (Shell指令碼打包)
1 #!/bin/bash 2 3 #-------------------------------------------- 4 # 功能:編譯xcode專案並打ipa包 5 # 使用說明: 6 # 編譯project 7 # ipa-b
iOS自動打包併發布到Fir.im
一、前言 最近公司有個新需求,就是後臺要新增一個新功能,在頁面上更換App的標題、Logo等資訊,然後可以自動生成apk和ipa檔案。於是就研究了一下自動打包ipa這個功能 二、牛逼的工具fastlane fastlane這個工具牛逼之處就是幾乎包含了
編寫shell命令實現IOS的自動打包
開發過程中,需要這樣的需求: App的兩個執行環境,一個是測試環境,一個是釋出環境,兩個環境的伺服器Api是不同的。每次,編譯打包測試軟體的時候,很麻煩。因此,需要編寫一個shell指令碼,可以根據傳入的引數,自動打包測試版或者釋出版App,同時可以生成 無線安裝所需的pl
iOS 自動打包發布到Fir和AppStore
自動 命令 arc mage 安裝 文件 product height clas 特別說明:如果項目沒有采用Cocoapods管理,沒有.xcworkspace,只有xcodeproj;只需要將腳本中這句 xcodebuild archive -workspace ${p
iOS中自動消失提示框的實現
在實際的應用中,我們常會看到一些應用中當觸發某個事件時,會彈出一個提示框,然後自動消失的效果,其實這種效果的實現是比較簡單的,下面我介紹兩種簡單的方法: 1. 使用UIAlertView來實現,思路是給UIAlertView設定一個延遲時間,然後讓其消失(相當於點選了“取消
iOS批量自動打包和部署(Ⅱ)
網上有大把的文章講了自動打包,其實無非就是那幾條命令,但是我覺得有必要繼續瞭解一下一個app包(即應用)的組成和app可執行檔案的構建過程。這個裡面非常複雜,也參考了一些文章,僅將自己瞭解的大概梳理出來備忘。 應用的構建過程和組成 想象一下平時的打包過程,在Xcode中選擇對應的appid,bundle
[從0到1搭嵌入式工程]編譯打包和升級的實現
工程編譯:我們以nand分割槽,分為bootloader、kernel、rootfs、homefs為例。rootfs是linux系統必須的檔案目錄系統和工具的集合,掛載在跟目錄/下,homefs可以認為是我們自己的應用程式、自己的依賴庫,放在homefs中,放在/home目錄
如何使用maven打包併發布到中央伺服器
在前一篇的博文中,我們介紹了maven的相關知識,對於maven的認識有了一定的瞭解,如果還不太熟悉,可以去看一下maven知識快速入門,瞭解開發中maven常用知識。 今天我們介紹一下maven打包相關的知識點,平時我們使用的大多數類庫,就是在maven的中
使用Travis自動構建併發布Hugo
每次增加新文章時,還需手動更新到github上,重複勞動可以交由工具完成。 Travis CI就是一個幫助我們完成自動構建的工具 我想做的不僅是將編譯後的public資料夾釋出到Github Pages上,這樣會覆蓋掉很多其他檔案,所以我只是想將它釋出到
Angular 4 打包併發布
專案基於Angular CLI,一個命令列介面工具搭建在專案開發完成之後,在打包釋出地方遇到了問題,之前一直使用angularjs開發,至於新的Angular 4卻是還未接觸,這次的專案,選擇了Angular 4,隨之而來的便是一個跨越式的變化。相比於angularjs直接引
打包併發布自己的Android應用(eclipse)
第一步,在Eclipse中選擇需要打包的專案,然後右鍵--選擇Export,會彈出一個打包的提示框,如下圖所示。 按Next之後,會繼續出現一個提示框,這裡你可以選擇自己需要打包的專案(預設是
iOS批量自動打包和部署(I)
如果你遇到這樣的一項需求:專案的程式碼沒有變動,只是icon和介面改動,然後要打成很多的包,發往AppleStore。就像喜馬拉雅的各種小版本那樣,像牛皮鮮一樣汙染在AppleStore之上。那麼問題來了,成十上百的包,僅僅只是icon的圖示變了,程式碼都一樣,難道要人工在那打成十上百次嗎?答案當然是否定
再探CI,Github調戲Action手記——自動構建併發布到另一倉庫
前言 接上文初探CI,Github調戲Action手記——自動構建併發布 在學習了Action的基本操作之後 接著我們來探索Action其他可能的功能 眾所周知 只有用得到的技術學習的才會最快 我也是如此 在完成了當前倉庫不同分支的構建釋出後,我又有了新的需求 自動構建後釋出到不同的倉庫 正文 我們直接新建一
手把手教你使用Rollup打包併發布自己的工具庫
DevUI是一支兼具設計視角和工程視角的團隊,服務於華為雲DevCloud平臺和華為內部數箇中後臺系統,服務於設計師和前端工程師。 官方網站:devui.design Ng元件庫:ng-devui(歡迎Star) 官方交流:新增DevUI小助手(devui-official) DevUIHelper外掛:D
使用 Fastlane 實現 iOS 跟 android 自動打包指令碼
對於一個iOS APP的釋出上線,一般來說都需要經歷:編譯打包 -> 截圖 -> 填寫一些說明文字 -> 上傳ipa到itunes connect -> 提交供稽核。每次都要進行這麼多“繁瑣”的步驟,
iOS利用(Shell指令碼)自動打包專案工程生成ipa
剛剛進入一家遊戲公司,今天在研究iOS利用指令碼打包專案工程。用xcode打包速度慢而且繁瑣,所以選擇指令碼來做,在這裡分享一下。 打包方法 一.通過Xcode 其實當我們Xcode點選了build或者執行comand+R之後,Xcode自己執行的
Mac Jenkins+fastlane 簡單幾步實現iOS自動化打包發布
管理員 文件夾 選擇 api 裝包 截圖 comm 通知 定義 最近在使用jenkins 實現ios自動化打包發布蒲公英過程實踐遇到了一些坑,特意記錄下來方便有需要的人。 進入正題: 一、安裝Jenkins 1.Mac上安裝Jenkins 遇到到坑 因為 Jenkins 的
iOS開發之使用fastlane工具實現自動化打包發布
TP ruby success 2.0 提交 gui ava 新的 unit test p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #000000; backgroun