2014-06-24 33 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