我正在尝试构建一个系统,该系统可以根据源代码(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/