最近一個禮拜折騰xcode 中ipa
自動化打包,對我來說也說是磕磕碰碰。畢竟對mac下的指令行模式完全不熟悉。而且我們的項目是基于cordova的一個項目。
之前我自己對cordova 項目的指令行模式也是不了解。
于是乎就開始了漫長的嘗試自己做打包過程。 可以說按照網上的一些資料來閱讀,然後自己去實作。
一開始的資料便是http://www.infoq.com/cn/articles/build-ios-continuous-integration-platform-part1
自動話內建的概念。 感覺自己完全走偏了。 自動化打包和自動化內建? 是同一個感念???
但不管怎麼樣,也有不少的收獲,從中也我了解到 可以通過xcodebuild
指令來編譯生成app,也了解到其實在xcode工具中點選運作時,最終也會執行xcodebuild
指令行的。但是在我們裝到手機中的格式是ipa 檔案,又怎樣來進行處理生成呢?
同樣的在不斷的搜尋中也找到了有xcrun 這個指令。于是又開始學習xcodebuild
以及xcrun相關的指令,并用他們進行測試。當然這些都是在
terminal(終端)下進行的。發現這些都可以完成,并開始有了點小激動。也一直有了一種思想。自動化搞定沒什麼問題。小菜一碟.............
但一開始我在運作xcodebuild 我們的項目時,出現了一問題。用xcodebuild
-target netcall一直提示:"cdvviewcontrol.h" file not
file,而手動去生成完全可以生成app。總以為這個問題應該是個小問題,網上随便找找就是一大把的吧....結果悲劇了,一晃就是三四天過去了。。。。。還是找不到解決方案。。。。尼瑪
找不到啊 有木有!
很快一周過去了,也沒有相關的同僚可以幫忙。隻有自己去解決了,怎麼辦呢?
後來我換了一個思路想:既然cordova
有建立平台的語句,說不定生成app的指令也有啊。于是乎,帶着這個疑問開始研究cordova本身的指令行
相關資料如下:http://cordova.apache.org/docs/en/3.4.0/guide_cli_index.md.html#the%20command-line%20interface。結果是可喜的,裡面果然有,但是我們這裡從來沒有人使用過。開始嘗試,終于發現還是可以實作的。大喜。最終生成的ipa
語句很簡單,如下:
#!/bin/sh
# autocompilescript.sh
# sqlitedemo
#
# created by tom
on 5/5/14.
#指定 phonegap 存放路徑?
projectpath="/users/tom/desktop/netcallmobile"
# cd
到指定的目錄,熟悉mac 指令行的朋友完全不用解釋
cd ${projectpath}
#use cordova compile and create app file
cordova prepare
ios
cordova compile ios
#use xcrun to create ipa file
#相對于根目錄cordova 項目生成的app 相對路徑
(注意,這裡不含有xxx.app)
appdir="platforms/ios/build/device"
#根據跟目錄和相對路徑合成
絕對路徑
apppath=${projectpath}/${appdir}
#儲存ipa
到指定的目錄中(這裡含有xxx.ipa)
ipapath="/users/tom/documents/ipa/netcall.ipa"
#用xcrun指令行
将app生成ipa檔案
xcrun -sdk iphoneos packageapplication -v ${apppath}
-o ${ipapath}
最後儲存在mac 下的格式為command 字尾,這樣就實作不要每次都要打開xcode然後點選build
或者achive 進行生成了(這裡的shellscript 怎麼運作 上文有講到)