天天看點

XCode 自動化打包總結

   最近一個禮拜折騰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 怎麼運作 上文有講到)

繼續閱讀