草庐IT

ios - 适用于 iOS 的 Windows 上的 Cordova 开发

coder 2024-01-11 原文

我是一名资深 Windows 桌面开发人员(25 年以上),从事原生 Blackberry 10 移动开发已有 18 个月了。对于我的下一个应用程序,我必须使用尽可能多的移动平台并决定使用 Cordova(不是 PhoneGap)来完成这项工作。

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

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

我的愿望是在 Windows 中完成所有编码,并且只使用 Maverick 进行 iOS 的最终捆绑。经过 25 年的专业开发,我不习惯成为一个完全的新手,我并不为此疯狂。哈哈

最佳答案

  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. 您的 VM 应该能够通过网络共享驱动器,就像它是一台真实机器一样(Apple 相当好地支持 SMB)。这样两个环境都可以指向同一个 Cordova 项目,而不必担心副本。 (你可以到处复制项目,但在我看来,只在网络上共享会更容易。不小心做傻事的风险更小。)

  4. 唯一需要 Mac 的是:

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

    Note: I know you indicate you are using Cordova and NOT PhoneGap. What's nice is that, ATM, the Phonegap Developer App works just fine with Cordova projects (whereas PG Build often requires config.xml to be moved and plugins to be handled differently). It does require the PhoneGap CLI to be installed. As long as you are using core plugins, it definitely saves time by eliminating the rebuild steps.

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

  7. 不要依赖 iOS 模拟器来告诉您有关该应用程序在真实设备上的工作方式或性能的任何信息。该模拟器拥有台式机的所有功能(处理器速度、内存等),但也缺少许多设备上的功能。我怀疑 iOS 模拟器的视觉性能会很糟糕,因为它将依赖于通过 VM 路由的 GPU。 (坦率地说,它在真正的 Mac 上并不总是那么好。)您真的、真的、真的必须有一个真正的设备来测试。 (同样,PhoneGap Developer App 可以减轻重复部署测试的痛苦。)

关于ios - 适用于 iOS 的 Windows 上的 Cordova 开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23791266/

有关ios - 适用于 iOS 的 Windows 上的 Cordova 开发的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  4. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  5. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  6. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  7. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  8. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  9. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  10. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

随机推荐