原生Android / iOS开发VS果酱SDK [英] Native Android/iOS development vs Marmalade SDK

查看:310
本文介绍了原生Android / iOS开发VS果酱SDK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们的公司是在原生的Andr​​oid / iPhone开发一些跨平台的解决方案,特别是果酱SDK(以前的Airplay SDK)之间采摘的边缘。

Our company is on the verge of picking between native Android/iPhone development and some cross-platform solution, specifically Marmalade SDK (former Airplay SDK).

我们是计算机视觉公司,这意味着我们需要在摄像头设备的低级别的访问。此外,我们的应用是计算量很大,这意味着我们往往会排挤处理能力可用的一点一滴。

We are a computer vision company, meaning we need low level access to the camera devices. Also, our applications are computationally expensive, meaning we tend to squeeze out every little bit of processing power available.

我们的团队在这两个Objective-C和Java(或C)足够经验提供平台,具体的解决方案。但是我们的主要焦点总是在C ++中,因此我们想prevent分裂出去的团队,和一个跨平台的解决方案,而工作。

Our team has sufficient experience in both Objective-C and Java (or C) to provide platform specific solutions. However our main focus was always on C++, as such we would like to prevent fragmenting out team and rather work with a cross-platform solution.

我们最大的担心是,选择果酱要么牺牲处理速度(主要关注)或严重增加了开发时间复杂相机帧缓冲器低级别的访问。

Our biggest fear is that choosing Marmalade will either sacrifice processing speed (main concern) or severely increase development time by complicating low level access to camera frame buffer.

我的问题是,除了明显的,有什么优势,但果酱SDK的处理器密集型视频处理应用的具体限制。

So my question is, besides the obvious, what are the advantages, but specifically limitations of Marmalade SDK for processor intensive video processing applications.

推荐答案

我已经用果酱/ Airplay的近两年在我的独立游戏公司目前年。对我来说,这是一个胜利,因为我只是一个程序员,我可以在Windows中使用MS开发工作室(这是我最喜欢的开发环境目前为止)做几乎所有我的工作,因为它保护了我不必处理大量的特定于平台的细节,特别是与各种开发工具,这可能会耗费很多的时间,我宁愿花的游戏内容。

I have used Marmalade/Airplay for almost two years now in my indie game company. For me it's a win because I'm just one programmer, and I can do virtually all my work in Windows using MS Dev Studio (which is my favorite dev environment by far) and because it shields me from having to deal with a lot of the platform-specific details, especially with the various development tools, that could eat up a lot of the time I'd rather spend on game content.

速度将不再是一个问题果酱。你的C ++ code本地运行。此外,进入拍照等功能,应该不会有太大的问题;它或者已经提供,或者可以使用扩展SDK,它是pretty的直接使用被添加

Speed will not be an issue with Marmalade. Your C++ code runs natively. Also, access to camera and other functionality should not be much of an issue; it's either already provided or can be added using the extensions SDK, which is pretty straightforward to use.

果酱是一个成熟的产品,该公司是pretty的迅速地解决问题有帮助的,即使对于正在使用该产品的免费独立开发。除了跨平台的烦躁,它具有内置的一些很好的工具,如内存泄漏跟踪器,一个记录系统,图形分析工具,以及其他

Marmalade is a mature product and the company is pretty helpful in resolving issues quickly, even for indie developers that are using the product for free. In addition to the cross-platform-ness, it has some nice tools built in, such as a memory leak tracker, a logging system, graphics analysis tools, and others.

有,我已经经历了果酱一些缺点。

There are some downsides that I've experienced with Marmalade.

  1. 尽管在理论上任何API或第三方SDK是通过扩展系统访问,实际上,你需要的东西可能不存在。举个例子,一些开发商正在努力获得的分析软件包乱舞集成,并且它已经对一些挑战。这种情况是有很多其他第三方的SDK相似;他们可能只是两行整合如果你正在做的Objective-C开发,但可以通过果酱更加困难。

  1. Even though in theory any API or third-party SDK is accessible through the extensions system, in practice the thing you need may not exist yet. As an example, a number of developers are currently struggling to get the analytics package Flurry integrated, and it's been a challenge for some. The situation is similar with lots of other third-party SDKs; they may be just a couple lines to integrate if you are doing Objective-C development, but can be more difficult via Marmalade.

有些事情是,通过它你操作的跨平台层,因为不太自然。对我来说一些例子已经:

Some things are less natural because of the cross-platform layer through which you operate. Some examples for me have been:

  • 我有麻烦我的闪屏(应用程序启动屏幕)在iOS和Android的所有屏幕尺寸正常显示。而且它已经很难让他们没有一些闪烁显示,黑色短的超时周期,或图像的大小调整,因为它转换果酱应用程序本身的设备负载,然后果酱的加载你的应用程序code步骤之间。

  • I've had trouble getting my splash screens (application start-up screens) to display properly in all screen sizes on both iOS and Android. And it's been hard to get them to show without some flickering, short black-out periods, or resizing of images as it transitions between the device load of the Marmalade app itself, and then Marmalade's step of loading your app code.

果酱施加了非常简单的内存模型,在那里你会得到一个固定的堆前面,所有的内存分配是通过果酱完成。但从系统的角度应用程序只是有,并保持大内存块(或几大块)。这有一定的优势,但我已经现蕾这种模式与iOS的模式,例如,接收内存警告,并因此预期要抛弃所有不必要的资源问题。这似乎是其中的一刀切最终竟失去一些关键功能的情况。

Marmalade imposes a very simple memory model, where you get a fixed heap up front, and all memory allocation is done through Marmalade. From the system's point of view the app just has and keeps a big block (or a few big blocks) of memory. This has some advantages, but I've had problems squaring this model with the iOS model of, for instance, receiving memory warnings and being expected to jettison any unnecessary resources. It appears to be a case where "one size fits all" ends up actually losing some key functionality.

您可以使用扩展管理器和其他一些方法来显示原生的UI元素,而是整合了显著量本机的外观和感觉的用户界面可能是一个挑战。所以,如果您的应用程序是游戏式的,用户可以处理非标准的按钮等,这很好,但如果你预计需要显著原生UI,这是很难。

You can use the extension manager and some other methods to show native UI elements, but integrating a significant amount of native-look-and-feel UI can be a challenge. So if your app is game-like and users can deal with non-standard buttons and so on, that's fine, but if you anticipate needing significant native UI, it is harder. [edit: Recent versions of Marmalade have added a native UI framework that lets you specify standard UI elements in a generic way and then implements then using the appropriate widgets for the device. I have not used this, but it looks fairly comprehensive.]

如果您遇到问题,它往往并不清楚它是否是一个通用的操作系统问题或果酱的问题,它可以是寂寞试图找到帮助。比如,我最近增加了在应用程序内购买我的比赛,双方的iOS和Android。 IAP是具有挑战性的,甚至无需额外的SDK层有很多的特殊情况来处理。就我而言,我有一种情况,我的应用程序已经拒绝苹果的一个小问题,而这是在拒绝状态我的应用程序内购买还处于拒绝状态(即使有什么破约在IAP本身,这是苹果的过程中只是一个怪癖)。当我试图回归测试的应用程序内购买功能(当我提交定为这非在应用程序内购买相关的问题),本场比赛实际上是崩溃,而不是得到一个相应的错误结果。我能够确定坠毁是不是在我的游戏code,那么这是不是操作系统(不太可能)或果酱中间层用于处理应用程序内购买的回调(这就是它竟然是[更新2012年11月28日:酱据报道,修正了这个问题,在最近的SDK更新])。

If you run into problems, it's often not clear whether it's a generic OS problem or a Marmalade problem, and it can be lonely trying to find help. For instance, I recently added in-app purchase to my game, on both iOS and Android. IAP is challenging, and even without an additional SDK layer there are lots of special cases to deal with. In my case, I had a situation where my app had been rejected by Apple for a small issue, and while it was in the rejected state my in-app purchase was also in a "rejected" state (even though there was nothing broken about the IAP itself; this is just a quirk of Apple's process). When I was trying to regression test the in-app purchase functionality (while I was submitting the fix for this non-in-app-purchase-related issue), the game was actually crashing, instead of getting an appropriate error result. I was able to determine that the crash wasn't in my game code, so it was either the OS (unlikely) or the Marmalade middle layer for handling the in-app purchase callbacks (which is what it turned out to be [update 11/28/2012: Marmalade has reportedly fixed this problem in a recent SDK update]).

因此​​,在这样的情况,你可以尝试去对堆栈溢出得到帮助,但真的没有人来帮助你,所以你是依赖果酱队回来给你一个答案。正如我说的,他们做了这样的pretty的好工作,但没有办法,它可以与常规的iOS程序员在全球范围内的社区对堆栈溢出几乎是瞬时的响应竞争。所以我会说这最后一个是我使用的系统类似果酱最大的担忧。它可以节省您的时间,前面不必达到速度上的各种平台软件开发工具包的细节,但是当你遇到问题你是摆布果酱队(或友好果酱社区成员)要回你一个答案。 (请记住,在这里,我在写的谁只是得到标准的优先解决问题和赠品的独立开发者。你可以花钱获得保证快速解决)。对于我个人而言,它已经很难有继续回来给我的制作和说:我在等待来自果酱家伙在这一个答案。

So in a situation like that you can try going on Stack Overflow to get help, but really nobody is there to help you, so you are dependent on the Marmalade team to get back to you with an answer. As I say, they do a pretty good job of this, but there's no way it can compete with nearly instantaneous responses on Stack Overflow from the world-wide community of regular iOS programmers. So I'd say this last one is my biggest concern with using a system like Marmalade. It saves you time up front not having to come up to speed on the details of the various platform SDKs, but when you run into problems you are "at the mercy" of the Marmalade team (or friendly Marmalade community members) to get back to you with an answer. (Keep in mind here that I'm writing as a freebie indie developer who just gets standard priority for issue resolution. You can pay to get guaranteed quick resolution.) For me personally, it's been hard having to keep coming back to my producer and saying "I'm waiting for an answer from the Marmalade guys on this one."

(第3期的另一个例子是,直到最近出现了与被推迟了一定的Andr​​oid设备的声音效果。这是一个果酱问题的问题,而他们也最终解决了,但过了好一会儿,而且也基本上没有什么您可以在此期间做的。)

(Another example of issue 3 is that until recently there was a problem with sound effects being delayed on certain Android devices. It was a Marmalade issue, and they did eventually resolve it, but it took a while, and there's basically nothing you can do in the meantime.)

请即(其它反应所指出的那样),即使没有果酱,你仍然可以拥有你的大部分code C语言在任的iOS或Android基地++。

Keep in mind that (as other responders have pointed out) even without Marmalade you can still have the bulk of your code base in C++ on either iOS or Android.

尽管一长串的潜在问题上面,我是一个球迷果酱,我AP preciate所有的公司为我提供免费的。该工具真正的亮点,当涉及到其他平台,你会以其他方式从来没有理会,如(对我来说)的bada或剧本。你真的可以部署到设备,从您的PC和开发工作室的舒适宽阵列(或Mac计算机配X code,如果你想使你的生活有点困难)。该模拟器工具他们是伟大的,而且只出现过少数在那里我已经在设备上进行调试实例;一般来说,如果它的工作原理上它只是工作的模拟器。 IdeaWorks承担了巨大的挑战,他们正在做一项伟大的工作杂耍所有这些功能(即,基本上以往任何时候都提供了移动设备上的每个功能)在所有这些平台上(即存在的所有显著的设备,除的Win​​dows Phone 7,因为它目前不允许本地code)。它只是附带了一些注意事项。

In spite of the long list of potential issues above, I am a fan of Marmalade, and I appreciate all the company has provided for me for free. The tool really shines when it comes to other platforms that you'd otherwise never bother with, such as (for me) bada or PlayBook. You really can deploy to a wide array of devices from the comfort of your PC and Developer Studio (or from a Mac with xcode, if you want to make your life a little harder ;). The simulator tool they have is great, and there have been only a small number of instances where I've had to debug on the device itself; in general if it works on the simulator it just works. IdeaWorks has taken on a huge challenge and they are doing a great job juggling all these features (i.e., basically every features ever offered on a mobile device) on all these platforms (i.e., all significant devices in existence, with the exception of Windows Phone 7 because it does not currently allow native code). It just comes with some caveats.

这篇关于原生Android / iOS开发VS果酱SDK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆