我们公司即将在本机Android / iPhone开发和一些跨平台解决方案之间进行选择,特别是Marmalade SDK(以前的Airplay SDK)。
我们是一家计算机视觉公司,这意味着我们需要对相机设备进行低级别访问。此外,我们的应用程序计算成本很高,这意味着我们倾向于挤出所有可用的处理能力。
我们的团队在Objective-C和Java(或C)方面拥有足够的经验,可提供特定于平台的解决方案。然而,我们主要关注的是C ++,因此我们希望能够防止团队分散,而是使用跨平台解决方案。
我们最担心的是选择Marmalade会牺牲处理速度(主要关注点)或者通过使低级访问摄像机帧缓冲区变得复杂来严重增加开发时间。
所以我的问题是,除了明显的优势之外,还有Marmalade SDK对处理器密集型视频处理应用程序的限制。
答案 0 :(得分:100)
答案 1 :(得分:10)
我很有偏见,是Marmalade的首席技术官...但如果您的关键要求是(1)相机访问和(2)“挤出所有可用的处理能力”的能力,那么Marmalade是一个很好的选择
Marmalade将您的C / C ++编译为本机ARM(或x86)指令......没有转码,没有虚拟机。它很容易引入现有的C / C ++代码,几乎支持所有C / C ++标准库等。您可以在项目中使用ASM代码。此外,您可以在Windows或Mac上进行所有开发,无论您部署到哪个平台(是的,您甚至可以纯粹在Windws上编译/测试/部署到iOS)。
答案 2 :(得分:2)
据我所知,从ANDROID开发: 来自Android本身的Camera API似乎是一个小小的错误(例如:在2.1之前,没有解决方案可以在纵向模式下显示相机而不会扰乱图像)。 另外一个抽象层可能更好(在可访问性,功能,无论如何),甚至更糟糕。它为shure做了什么:它窃取了资源,这可能是你自己的应用程序所需要的。
答案 3 :(得分:2)
Marmalade提供了一个出色的Native Extension框架
http://www.madewithmarmalade.com/marmalade/features/extensions-development-kit
最终意味着您可以直接跳转到任何特定功能的本机实现。您仍然可以为主应用程序保留跨平台开发的核心优势。
同样在android上,因为marmalade使用android NDK,你的c ++代码处理数据的速度将比相应的android Java代码运行得快。
我使用Marmalade制作游戏,扩展和本机代码速度使我非常有信心能够提供至少以及“原生”应用。
答案 4 :(得分:1)
我会使用MoSync Android / iOS,但我会说,因为我在MoSync工作。
但公平地说,我更喜欢MoSync Camera API。
如果你真的想要挤出所有处理能力,你应该使用ASM。
/ Tony
答案 5 :(得分:0)
Marmalade还不错,我在2013年使用它。有些错误,一些烦恼(固定内存池),但整体上并不是一个糟糕的经历。
唯一真正令人失望的是缺乏对Linux的支持。我看不出Marmalade的人如何支持像Blackberry这样的模糊平台,而不支持Linux;这没有道理。也许这会随着Steam OS(一个基于Linux,以游戏为中心的平台)的成熟而改变,但不可否认的是,目前Steam OS并没有带来其他操作系统带来的大量内容。