我正在尝试构建一个系统,该系统可以根据源代码(Cordova SDK应用程序项目)和可选的设置设置(类似于PhoneGap的Build)来编译项目。在后台,我尝试使用xcodebuild命令创建最终IPA并将其返回给用户。所有使用Cordova开发并准备使用以下命令通过XCode进行编译的项目:

cordova platform add ios

cordova prepare ios

问题是xcodebuild需要项目的方案,根据我对主题的搜索,只有当您使用XCode GUI打开项目时,才会生成该方案。

有什么方法可以仅使用命令行工具为项目生成方案吗?每个项目的方案都一样吗,所以我可以将静态副本复制到要编译的每个项目中?

我并不是那个真正的XCode或Mac专家,所以我很乐意对解决方案的工作方式和原因(如果有解决方案)进行清晰的解释。

编辑:

只是为了澄清我的最终见解:

当我使用XCode GUI打开项目时(双击.xcodeproj),它会生成方案,然后我可以成功使用xcodebuild命令而不会出现任何问题。但是我需要这个系统是完全自动化的,以便用户可以上传用Cordova框架构建的项目,并让该系统为他生成IPA(如果愿意)。 (他还可以选择Cordova框架支持的其他平台)。最终类似于PhoneGap的版本。

最佳答案

您可以使用构建挂钩脚本以编程方式生成方案,Cordova CLI将在构建iOS之前运行该脚本。我在here上写了一篇博客文章,但这是一个摘要:

我选择使用xcodeproj Ruby gem,可以通过以下方式获得它:

sudo gem install xcodeproj


然后在您的Cordova项目的hooks文件夹中创建一个钩子脚本“ 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


调整platform / ios / schemedemo.xcodeproj以匹配您的项目名称。

然后,要运行脚本,请编辑项目的config.xml并添加:

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


我链接到的博客文章上的完整代码和Github。在这里,我使用after_platform_add,因此Cordova CLI将在添加iOS平台后添加方案。对于现有项目,如果您不想删除并重新添加ios平台以使用我的原始示例,则可能希望将其交换为before_prepare或before_build以添加方案。 Cordova Hook文档为here

关于ios - 使用xcodebuild命令从Cordova项目创建IPA,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24380565/

10-09 01:03
查看更多