2014-06-24 34 views
0

我試圖構建一個系統,它可以編譯一個給定源代碼(科爾多瓦SDK應用程序項目)和可選的設置設置的項目,類似於PhoneGap的Build。在幕後,我嘗試使用xcodebuild命令創建最終的IPA並將其返回給用戶。用科爾多瓦和準備開發的所有項目進行編譯的XCode用下面的命令:使用xcodebuild命令從Cordova項目創建IPA

cordova platform add ios

cordova prepare ios

的問題是xcodebuild要求項目的計劃,而根據我的搜索只有當您使用XCode GUI打開項目時纔會生成主題。

有沒有什麼方法可以使用命令行工具爲項目生成方案?這些方案對於每個項目都是一樣的,所以我可以將一個靜態項複製到我想要編譯的每個項目中?

我不是一個真正的人的XCode或Mac的人對於這個問題,所以我很樂意爲如何和爲什麼解決方案的工作,如果有一個明確的解釋...

編輯:

只是爲了澄清我的最後intestions:

當我打開使用Xcode GUI項目(雙擊.xcodeproj)它生成的方案,然後我可以成功地使用xcodebuild命令沒有任何問題。但是我需要這個系統是完全自動化的,這樣用戶就可以上傳他使用Cordova框架構建的項目,並且如果他願意,可以讓這個系統爲他生成IPA。 (他也可以選擇Cordova框架支持的其他平臺)。就像PhoneGap最終構建的一樣。

+0

從我的角度來看,沒有真正的方法可以在不使用Xcode的情況下構建應用程序。但是,如果上面提到的命令工作,你可以打開'*。在Xcode中雙擊xcodeproj'文件並從那裏運行構建/歸檔操作。如果構建已經成功,那麼最大的一步已經完成了!請記住,您需要使用正確的配置文件簽署您的應用程序,該配置文件已包含您要測試應用程序的所有設備標識符,否則它將難以將它們共享給您的測試人員(例如,使用hockeyapp/testflight) – Sebastian

+0

@Sebastian當我使用XCode GUI打開項目時(雙擊.xcodeproj)它會生成這些方案,然後我可以成功地使用'xcodebuild'命令而不會有任何問題。但是我需要這個系統是完全自動化的,這樣用戶就可以上傳他使用Cordova框架構建的項目,並且如果他願意,可以讓這個系統爲他生成IPA。 (他也可以選擇Cordova框架支持的其他平臺) – UnTraDe

+0

然後使用一些任務系統(比如'grunt')並用shell命令打開'.xcodeproj',等到生成方案後殺死xcode並運行'xcodebuild'任務,如果它需要完全自動化。 – Sebastian

回答

2

您可以使用構建掛鉤腳本以編程方式生成方案,Cordova CLI將在爲iOS構建之前運行構建掛鉤腳本。我寫了一篇博客文章在這here但這裏有一個總結:

我選擇使用xcodeproj紅寶石的寶石,你可以得到這樣的搭配:

sudo gem install xcodeproj 

然後創建一個鉤子腳本「fix_xcode_schemes.rb」您的科爾多瓦項目的鉤子文件夾,將其設置爲755和文件權限,以便它是可執行的,並把這個腳本:

#!/usr/bin/env ruby 
require 'xcodeproj' 
xcproj = Xcodeproj::Project.open("platforms/ios/schemedemo.xcodeproj") 
xcproj.recreate_user_schemes 
xcproj.save 

調整平臺/ IOS/schemedemo.xcodeproj到適合自己的項目名稱。

然後運行該腳本編輯你的項目的config.xml,並添加:

<platform name="ios"> 
    <hook type="after_platform_add" src="hooks/fix_xcode_schemes.rb" /> 
    ... 
</platform> 

的完整代碼和Github的博客上的文章,我掛。在這裏,我使用after_platform_add,以便在添加iOS平臺後,Cordova CLI將添加這些方案。對於現有項目,如果您不想刪除並重新添加ios平臺以使用我的原始示例,則可能需要將其替換爲before_prepare或before_build以添加方案。 Cordova鉤文件是here