Подтвердить что ты не робот

Разработка Android/iOS против Marmalade SDK

Наша компания находится на грани выбора между собственной разработкой Android/iPhone и некоторым кросс-платформенным решением, в частности, Marmalade SDK (бывший Airplay SDK).

Мы являемся компанией, занимающейся компьютерным видением, что означает, что нам нужен доступ на низкоуровневые устройства к камерам. Кроме того, наши приложения являются дорогостоящими с точки зрения вычислительной мощности, что означает, что мы склонны выдавливать каждый небольшой доступный процессор.

Наша команда имеет достаточный опыт работы как в Objective-C, так и в Java (или C), чтобы предоставить решения для конкретной платформы. Однако наш основной упор всегда был на С++, поэтому мы хотели бы предотвратить фрагментацию команды и, скорее, работу с кросс-платформенным решением.

Наш самый большой страх в том, что выбор Marmalade либо принесет в жертву скорость обработки (основное беспокойство), либо значительно увеличит время разработки, затрудняя доступ к камере с низким уровнем доступа к кадру.

Таким образом, мой вопрос, помимо очевидных, в чем преимущества, но в особенности ограничения Marmalade SDK для приложений с интенсивной обработкой видео.

4b9b3361

Ответ 1

Я использую Marmalade/Airplay почти два года в моей инди-игре. Для меня это победа, потому что я всего лишь один программист, и я могу делать практически всю свою работу в Windows с помощью MS Dev Studio (которая на сегодняшний день является моей любимой средой для разработчиков), и потому, что она защищает меня от необходимости иметь дело с большим количеством специфические для платформы детали, особенно с различными инструментами разработки, которые могли бы съесть много времени, которое я предпочел бы потратить на игровой контент.

Скорость не будет проблемой с Мармеладом. Ваш код на С++ запускается изначально. Кроме того, доступ к камере и другим функциям не должен быть большой проблемой; он либо уже предоставлен, либо может быть добавлен с помощью расширения SDK, что довольно просто использовать.

Marmalade - зрелый продукт, и компания очень помогает в решении проблем быстро, даже для разработчиков indie, которые бесплатно используют этот продукт. В дополнение к кросс-платформенному, у него есть некоторые хорошие инструменты, встроенные, такие как трекер утечки памяти, система ведения журнала, инструменты графического анализа и другие.

Есть некоторые недостатки, которые я испытал с Marmalade.

  • Хотя теоретически любой API или сторонний SDK доступен через систему расширений, на практике то, что вам нужно, возможно, еще не существует. В качестве примера, некоторые разработчики в настоящее время пытаются получить пакет аналитики Flurry, и для некоторых это было проблемой. Ситуация похожа на множество других SDK сторонних разработчиков; они могут быть всего лишь пару строк для интеграции, если вы делаете разработку Objective-C, но с помощью Marmalade может быть сложнее.

  • Некоторые вещи менее естественны из-за кросс-платформенного уровня, через который вы работаете. Некоторые примеры для меня были:

    • У меня возникли проблемы с отображением экранов заставки (экранов запуска приложений) для правильного отображения во всех размерах экрана как на iOS, так и на Android. И было трудно заставить их показывать без каких-либо мерцающих, коротких периодов кратковременного или резкого изменения изображений, когда они переходят между загрузкой устройства самого приложения Marmalade, а затем шаг Marmalade по загрузке вашего кода приложения.

    • Marmalade налагает очень простую модель памяти, где вы получаете фиксированную кучу спереди, а все выделение памяти осуществляется через Marmalade. С системной точки зрения приложение просто имеет и хранит большой блок (или несколько больших блоков) памяти. У этого есть некоторые преимущества, но у меня были проблемы, возводимые в квадрат этой модели с iOS-моделью, например, с получением предупреждений о памяти и ожиданием выброса ненужных ресурсов. Это, по-видимому, случай, когда "один размер подходит всем" заканчивается тем, что фактически лишает некоторые ключевые функции.

    • Вы можете использовать диспетчер расширений и некоторые другие методы для отображения собственных элементов пользовательского интерфейса, но интеграция значительного количества пользовательского интерфейса с собственным интерфейсом может быть проблемой. Поэтому, если ваше приложение похоже на игры, и пользователи могут иметь дело с нестандартными кнопками и т.д., Это прекрасно, но если вы ожидаете, что вам нужен значительный собственный интерфейс, это сложнее. Недавние версии Marmalade добавили собственный интерфейс пользовательского интерфейса, который позволяет вам указывать стандартные элементы пользовательского интерфейса общим способом, а затем реализует, используя соответствующие виджеты для устройства. Я не использовал это, но выглядит довольно всеобъемлющим.]

  • Если у вас возникают проблемы, часто неясно, является ли это проблемой общей ОС или проблемой Marmalade, и может быть одиноко пытаться найти помощь. Например, недавно я добавил покупку в приложение для своей игры, как на iOS, так и на Android. IAP является сложной задачей, и даже без дополнительного SDK-слоя существует множество особых дел. В моем случае у меня была ситуация, когда приложение было отклонено Apple за небольшую проблему, и, хотя это было в отклонённом состоянии, моя покупка в приложении также находилась в "отвергнутом" состоянии (хотя ничего не было сломано сам IAP, это всего лишь причуда процесса Apple). Когда я пытался выполнить регрессионную проверку функциональности покупки в приложении (в то время как я отправлял исправление для этой проблемы, не связанной с покупкой приложения), игра фактически рушилась, а не получала соответствующий результат ошибки. Я смог определить, что авария не была в моем коде игры, так что это была либо OS (маловероятная), либо средний уровень Marmalade для обработки обратных вызовов в приложении (это то, что оказалось [обновление 11/28/2012: Marmalade, как сообщается, исправил эту проблему в недавнем обновлении SDK]).

    Итак, в подобной ситуации вы можете попробовать переходить на Stack Overflow, чтобы получить справку, но на самом деле никто не поможет вам, поэтому вы зависите от команды Marmalade, чтобы вернуться к вам с ответом. Как я уже сказал, они неплохо справляются с этим, но никак не могут конкурировать с почти мгновенными ответами на Qaru от всемирного сообщества обычных программистов iOS. Поэтому я бы сказал, что это последнее - моя самая большая проблема с использованием такой системы, как Marmalade. Это экономит ваше время, не требуя ускорения деталей различных SDK платформы, но когда вы сталкиваетесь с проблемами, вы "на милость" команды Marmalade (или дружественных членов сообщества Marmalade), чтобы вернуться к вы с ответом. (Имейте в виду, что я пишу, как разработчик индивидуала freebie, который получает стандартный приоритет для разрешения проблемы. Вы можете заплатить, чтобы получить гарантированное быстрое разрешение.) Для меня лично было трудно продолжать возвращаться к моему продюсеру и говоря: "Я жду ответа от парней Мармелада на этом".

    (Еще один пример проблемы 3 заключается в том, что до недавнего времени возникла проблема с задержкой звуковых эффектов на некоторых устройствах Android. Это была проблема мармелада, и в конечном итоге она разрешила ее, но потребовалось некоторое время, и там в принципе ничего не было вы можете сделать это.)

Имейте в виду, что (как указывали другие респонденты) даже без мармелада вы все еще можете получить основную часть своей базы кода на С++ на iOS или Android.

Несмотря на длинный список потенциальных проблем выше, я являюсь поклонником Marmalade, и я ценю, что вся компания предоставила мне бесплатно. Инструмент действительно сияет, когда дело доходит до других платформ, с которыми вы бы никогда не беспокоились, например (для меня) bada или PlayBook. Вы действительно можете использовать широкий набор устройств с комфортом вашего ПК и Developer Studio (или с Mac с xcode, если вы хотите сделать вашу жизнь немного сложнее;). Инструмент симулятора, который у них есть, замечательный, и было только небольшое количество случаев, когда мне приходилось отлаживать само устройство; в общем, если он работает на симуляторе, он просто работает. IdeaWorks взяла на себя огромную задачу, и они отлично справляются со всеми этими функциями (т.е. В основном, всеми функциями, когда-либо предлагаемыми на мобильном устройстве) на всех этих платформах (т.е. Все значимые устройства, за исключением Windows Phone 7, потому что в настоящее время он не разрешает собственный код). Он просто приходит с некоторыми оговорками.

Ответ 2

Я предвзятый, будучи техническим специалистом в Marmalade... но если ваши ключевые требования: (1) доступ к камерам и (2) способность "выдавливать каждый бит процессорной мощности", то Marmalade - отличный выбор.

Marmalade компилирует ваши C/С++ в собственные инструкции ARM (или x86)... без транскодирования, без виртуальных машин. Очень легко использовать существующий код C/С++, поддерживаются почти все стандартные библиотеки C/С++ и т.д. И вы можете использовать код ASM в своем проекте. Кроме того, вы можете делать все свое развитие либо на Windows, либо на Mac, независимо от того, на каких платформах вы развертываете (да, вы даже можете скомпилировать/протестировать/развернуть iOS исключительно на Windws).

Ответ 3

Насколько я могу вам рассказать от разработки ANDROID: API-интерфейс Camera от Android сам по себе выглядит немного ошибкой (например: до версии 2.1 нет решения для получения камеры, показанной в портретном режиме без скремблирования изображений). Другой слой абстракции поверх этого может быть лучше (с точки зрения доступности, возможностей, чего угодно) или еще хуже. Что он делает для shure: он крадет ресурсы, которые могут потребоваться для вашего собственного приложения.

Ответ 4

Marmalade предлагает отличную платформу Native Extension

http://www.madewithmarmalade.com/marmalade/features/extensions-development-kit

В конечном итоге это означает, что вы можете перейти непосредственно к собственной реализации какой-либо конкретной функции. Вы по-прежнему сохраняете основные преимущества кросс-платформенной разработки для своего основного приложения.

Также на андроиде, потому что мармелад использует андроид NDK, ваш код С++ для обработки данных будет работать быстрее, чем соответствующий код Java для Android.

Im создание игр с Marmalade и расширениями и скоростью собственного кода делает меня чрезвычайно уверенным в том, что вы можете предоставить как минимум, так и "родное" приложение.

Ответ 5

Я бы использовал MoSync Android/iOS, но я бы сказал, что, поскольку я работаю в MoSync.

Но, честно говоря, я предпочитаю API MoSync Camera.

Если вы действительно хотите выжать всю вычислительную мощность, вы должны использовать ASM.

/Тони

Ответ 6

Мармелад не плох, я использовал его в 2013 году. Некоторые ошибки, некоторые неприятности (пулы фиксированной памяти), но в целом неплохой опыт.

Единственное реальное разочарование - отсутствие поддержки для Linux. Я не вижу, как парни Marmalade могут поддерживать неясные платформы, такие как Blackberry, но не Linux; это не имеет никакого смысла. Возможно, это изменится, так как Steam OS (платформа на базе Linux, ориентированная на игры) созревает, хотя, по общему признанию, Steam OS не приносит много результатов в таблицу за пределами того, что приносят другие ОС.