Closed. This question needs to be more focused。它当前不接受答案。












想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。

5年前关闭。



Improve this question




我们公司即将在 native Android/iPhone开发和某些跨平台解决方案之间做出选择,特别是Marmalade SDK(以前的Airplay SDK)。

我们是一家计算机视觉公司,这意味着我们需要对摄像头设备的低级别访问。而且,我们的应用程序在计算上很昂贵,这意味着我们倾向于挤出每一点可用的处理能力。

我们的团队在Objective-C和Java(或C)方面都有丰富的经验,可以提供特定于平台的解决方案。但是,我们的主要重点始终是C++,因此,我们希望避免团队分散,而希望使用跨平台解决方案。

我们最大的担心是,选择Marmalade会牺牲处理速度(主要问题),或者通过使对相机帧缓冲区的低级访问复杂化而严重延长开发时间。

因此,除了明显的问题之外,我的问题是Marmalade SDK在处理器密集型视频处理应用程序中有哪些优势,但特别是局限性。

最佳答案

我在独立游戏公司使用Marmalade/Airplay已有近两年了。对我来说,这是一个胜利,因为我只是一个程序员,而且我几乎可以使用MS Dev Studio(到目前为止是我最喜欢的开发环境)在Windows中完成所有工作,并且因为它使我不必处理很多工作。特定于平台的详细信息(尤其是使用各种开发工具)可能会占用我很多时间,而我宁愿花在游戏内容上。

速度不会成为果酱的问题。您的C++代码 native 运行。同样,访问摄像头和其他功能也不是什么大问题。它已经提供或可以使用扩展SDK添加,使用起来非常简单。

Marmalade是一种成熟的产品,即使对于免费使用该产品的独立开发人员,该公司也对迅速解决问题非常有帮助。除了跨平台性之外,它还内置了一些不错的工具,例如内存泄漏跟踪器,日志记录系统,图形分析工具等。

我在果酱上经历过一些缺点。

  • 即使从理论上讲任何API或第三方SDK都可以通过扩展系统访问,但实际上,您所需的东西可能还不存在。例如,目前许多开发人员都在努力整合Flurry分析软件包,这对某些人来说是一个挑战。许多其他第三方SDK的情况与此类似。如果您要进行Objective-C开发,它们可能只是整合的几行,但通过Marmalade可能会更加困难。
  • 某些事情不太自然,因为您可以通过它跨平台进行操作。对我来说,一些例子是:
  • 我无法使启动屏幕(应用程序启动屏幕)在iOS和Android上的所有屏幕尺寸上都能正确显示。而且,在Marmalade应用程序本身的设备负载与Marmalade加载应用程序代码的步骤之间进行转换时,很难在没有闪烁,短暂的中断时间或调整图像大小的情况下显示它们。
  • Marmalade施加了一个非常简单的内存模型,您可以在其中预先获得一个固定的堆,并且所有内存分配都是通过Marmalade完成的。从系统的角度来看,该应用程序仅具有并保留一个大块(或几个大块)的内存。这具有一些优势,但是我在将这种模型与iOS模型进行平方运算时遇到了问题,例如,收到内存警告并被迫放弃任何不必要的资源。在“一种尺寸适合所有情况”的情况下,实际上似乎失去了一些关键功能。
  • 您可以使用扩展管理器和其他一些方法来显示 native UI元素,但是集成大量 native 外观UI可能是一个挑战。因此,如果您的应用程序类似于游戏,并且用户可以处理非标准按钮等等,那很好,但是如果您预计需要大量的 native UI,则难度会更大。 [编辑:Marmalade的最新版本已添加了 native UI框架,该框架可让您以通用方式指定标准UI元素,然后实现该设备,然后使用该设备的适当小部件。我没有使用过,但是看起来很全面。]
  • 如果遇到问题,通常不清楚是通用操作系统问题还是果酱问题,并且寻求帮助可能很孤独。例如,我最近在iOS和Android上将应用内购买添加到我的游戏中。 IAP具有挑战性,即使没有附加的SDK层,也要处理许多特殊情况。就我而言,我遇到的情况是我的应用程序因某个小问题而被苹果公司拒绝,而在处于拒绝状态时,我的应用程序内购买也处于“拒绝”状态(即使没有任何问题IAP本身;这只是Apple流程的一个怪癖)。当我尝试对应用内购买功能进行回归测试时(当我提交此与应用内购买无关的问题的修复程序时)​​,游戏实际上崩溃了,而没有得到适当的错误结果。我能够确定崩溃不是在我的游戏代码中,因此是操作系统(不太可能)或Marmalade中间层,用于处理应用程序内购买回调(事实证明,这是[update 11/28/2012:据报道Marmalade已在最近的SDK更新中解决了此问题])。

    因此,在这种情况下,您可以尝试通过Stack Overflow寻求帮助,但实际上没有人可以帮助您,因此您依赖Marmalade团队来寻求答案。就像我说的那样,他们在这方面做得很好,但是它不可能与来自世界各地的常规iOS程序员社区在Stack Overflow上几乎即时的响应相抗衡。因此,我想说的最后一个是使用Marmalade之类的系统时我最大的担忧。它为您节省了时间,不必花时间去了解各种平台SDK的细节,但是当您遇到问题时,您将由Marmalade团队(或友好的Marmalade社区成员)“摆布”,以回头你一个答案。 (请记住,我是作为免费的独立开发人员编写的,只是获得解决问题的标准优先权。您可以付费以获得有保证的快速解决方案。)就我个人而言,很难一直回到我的制作人和说:“我正在等待果酱的家伙对此做出答复。”

    (问题3的另一个示例是,直到最近,某些Android设备上的声音效果都出现了延迟。这是一个果酱问题,他们最终解决了,但是花了一段时间,基本上您无能为力。在此期间。)

  • 请记住(如其他响应者所指出的那样),即使没有Marmalade,您仍然可以在iOS或Android上使用C++拥有大量代码库。

    尽管上面列出了很多潜在的问题,但我还是Marmalade的粉丝,并且感谢公司免费提供给我的所有信息。当涉及到其他平台,您再也不会打扰它了,例如(对于我)bada或PlayBook,该工具真的很闪耀。实际上,您可以舒适地在PC和Developer Studio上部署到各种设备上(或者,如果您想让生活变得更艰难,则可以从带有xcode的Mac上进行部署;)。他们拥有的模拟器工具很棒,而且只有少数实例需要在设备上进行调试。通常,如果它可以在模拟器上运行,那么它就可以运行。 IdeaWorks面临着巨大的挑战,他们在所有这些平台(即现有的所有重要设备,Windows Phone除外)上的所有这些功能(即,基本上是移动设备上提供的所有功能)都做得很好。 7,因为它当前不允许使用 native 代码)。它只是带有一些警告。

    09-13 01:22