适用于iOS的Windows上的Cordova开发

Pho*_*led 3 ios cordova

我是一位长期的Windows桌面开发人员(25年以上),他已经开展了18个月的本地Blackberry 10移动开发.对于我的下一个应用程序,我必须尽可能多的移动平台,并决定使用Cordova(不是PhoneGap)来完成这项工作.

我已经使用Cordova CLI在Blackberry 10和Android上成功构建并部署了测试应用程序.现在我需要在开始实际编写真实应用程序之前弄清楚iOS的工作流程,以便我可以在所有平台上进行测试.我让OSX Mavericks从Windows 8.1运行在VMware VM中,并在OSX上安装了Xcode.我对OSX只有一点知识,但我知道我必须用它来构建iOS.我想弄清楚的是,我需要在OSX中为iOS构建多少重复工作.我怀疑如果我使用物理Mac来打包和测试iOS,那么挑战将是相同的,所以希望有其他人能够找到最干净的方法来做到这一点.

我可以在Windows上使用Cordova来创建iOS项目和源代码,还是我必须在Mac上使用Cordova创建重复的项目平台并在那里保留重复的源代码?如果我可以从Windows完成所有这些操作,我是否只需在每次Cordova构建后将其复制到Mavericks并使用Xcode打包并在模拟器中运行它?如果有人像我一样在VM中运行OSX,是否可以将主机路径映射到OSX中,因此在从Windows构建之后我根本不必重新创建平台源代码?我假设没有办法从Windows Cordova自动化整个东西,就像Android和Blackberry平台一样,我错了吗?

我的愿望是在Windows中进行所有编码,并且仅使用Maverick进行iOS的最终捆绑.经过25年的专业发展,我不习惯成为一个完整的新手,我并不为此疯狂.大声笑

Ker*_*tts 5

  1. 了解Mac OS X的,我知道你觉得不舒服在这种环境中,但说实话-这不是那困难.事实上,我从Windows 7过渡到而不是升级到Windows 8,我很快就感到很舒服.(比我家用的其他Windows 8笔记本电脑更舒服.)

  2. 请记住,Mac OS X是一个Unix下(BSD).这意味着如果您对Linux或Unix有任何熟悉但是通过使用Mac GUI而被推迟,您几乎总是可以回到终端.(在我不那么谦虚的意见中,Mac OS X是一款非常漂亮的*nix机器!)

  3. 您的虚拟机应该能够通过网络共享驱动器,就像它是真正的机器一样(Apple合理地支持SMB).这样两种环境都可以指向相同的Cordova项目而无需担心副本.(您可以复制项目,但在我看来,只是在网络上共享会更容易.减少意外做一些愚蠢事情的风险.)

  4. 唯一需要 Mac的东西是:

    • 创建证书/配置文件(在Windows上有解决方法,但不支持)
    • 提交到应用商店
    • 使用Safari进行远程调试(你可以使用Weinre来接近,但它不支持断点等)
    • 您的代码的本地编译(还有其他工具链可用于其他操作系统,但同样,Cordova 不支持).
    • 在模拟器中运行应用程序
  5. 以上意味着您可以在Windows上开发应用程序,只运行到VM进行编译/提交.随着Phonegap Developer应用程序(http://app.phonegap.com)的出现,您可以在开发和测试期间跳过(重新)构建步骤(只要您只使用核心插件).

    注意:我知道您表明您使用的是Cordova而非PhoneGap.有趣的是,ATM,Phonegap开发者应用程序与Cordova项目一起工作得很好(而PG Build通常需要config.xml移动并且插件的处理方式不同).它确实需要安装PhoneGap CLI.只要您使用核心插件,就可以通过消除重建步骤来节省时间.

  6. Cordova项目可以在任何平台上创建 - 但我知道有一段时间将iOS平台添加到您的项目(cordova platform add ios)会检查是否满足所有预先要求,但我不确定是否仍然如此.试试也不会有害.但如果需要,请使用网络共享并在VM上添加平台.请记住,平台应该被视为构建工件 - 您的应用程序代码应该存在于根目录中www,而不依赖于添加的平台.

  7. 难道不是依靠iPhone模拟器给大家介绍一下该应用程序是如何工作或执行真正的设备上的任何内容.模拟器具有桌面的所有功能(处理器速度,内存等),并且缺少许多设备上的功能.我怀疑iOS模拟器的视觉性能会很糟糕,因为它将依赖GPU通过VM进行路由.(坦率地说,它在真正的Mac上并不总是很棒.)你真的,真的,真的必须有一个真正的设备来测试.(同样,PhoneGap开发人员应用程序可以减轻重复部署测试的痛苦.)