Intereting Posts
AndroidRuntimeException: requestFeature () необходимо вызвать перед добавлением содержимого Полнотекстовый поиск Android Android-Как отправить данные из активности в службу? Как разбирать JSON в Android Загрузить фотографию контакта в представлении списка Использование sdk в facebook android Как разрешить «Дублировать файлы, скопированные в APK META-INF / *» Загружать файлы размером более 1M из папки с файлами Есть ли ссылка на View.postDelayed для Android? Класс IntentService не запускает AsyncTask в главной теме. Вызов метода должен быть вызван из основного потока, в настоящее время выбранный поток является рабочим Не удалось удалить каталог в Android Studio Ошибка «Не удалось получить BatchedBridge, убедитесь, что ваш пакет правильно упакован» при запуске приложения OnCheckedChanged уволен несколько раз, Listview с флажком Как установить кнопку «серый» и «незаметный»? Android Studio не может запускать приложение на устройстве: застрял на «Ожидание процесса: <проект>»

Любое преимущество программирования для мобильной разработки?

Мне нужно разработать приложения для компании на некоторых крупных мобильных ОС, в частности, на iOS, Android и WP7.

Сначала я планировал создать три отдельных приложения для трех разных ОС – каждый из которых использует собственный SDK.

Однако есть ли какие-либо преимущества для этого? Существует множество кросс-платформенных инструментов – Sencha, Phonegap, Rhodes и т. Д. Как «родные» создают приложения, созданные ими, через устройства? Какая у них аппаратная интеграция (камера, GPS, местное хранилище и т. Д.)?

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

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

Solutions Collecting From Web of "Любое преимущество программирования для мобильной разработки?"

Отказ от ответственности: я следил за кросс-платформенными инструментами, которые вы упомянули, но никогда с ними ничего не строили. Если вы прочитаете этот пост, вы, вероятно, сможете догадаться, что на данный момент я в основном разработчик Android.

Ответ: это зависит. Конечно, преимущества для родных приложений, но вопрос в том, заботитесь ли вы (или заботитесь) об этих преимуществах, чтобы нести накладные расходы на разработку для нескольких платформ. Поскольку вы не указали подробно о том, какие приложения вы планируете строить, я дам вам краткое изложение того, что знаю.

Я предполагаю, что вы говорите о кросс-платформенных решениях на базе HTML (например, PhoneGap , Sencha и Rhodes ), а не о кросс-платформенных игровых платформах, таких как Corona SDK или Moai, а также не всегда интересном Mono через MonoTouch И Mono для Android . Я также исключаю Titanium, который не поддерживает Windows Phone.

Некоторые из недостатков, которые я вижу между родными и этими кросс-платформенными решениями, выглядят следующим образом:

  • Пользовательский интерфейс
  • Производительность (особенно пользовательский интерфейс)
  • Совместимость
  • отладка
  • Платформенные API

Пользовательский интерфейс

Пользователи каждой платформы создают определенные ожидания относительно того, как все работает. Приложения в iOS часто имеют определенные парадигмы пользовательского интерфейса (которые показывают вверх сверху с помощью кнопки «Назад» слева, те, которые имеют округленный интерфейс таблицы / списка и т. Д.), Приложения на Android могут иметь другой (например, ActionBar, который похож, но не совсем То же, что и панель iOS, или длинные нажатия для контекстных меню), пользователи Windows Phone – еще один (виды плит и панорамы). Если вы создаете тот же HTML-интерфейс, вы, вероятно, не сможете воспользоваться этим. Те знакомые шаблоны пользовательского интерфейса делают приложение более интуитивным и удобным для пользователя, который обычно не тратит время на изучение нескольких платформ.

Представление

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

Совместимость

Еще одним недостатком использования кросс-платформенного инструмента для HTML является то, что разные телефоны имеют дело с HTML / CSS / JavaScript по-разному. Это смешно, потому что это немного обоюдоострый меч. С одной стороны, здорово, что HTML по своей сути кросс-платформенный, с другой, у вас все еще есть проблемы с устройством, зависящие от устройства. Это особенно актуально снова в Android, где у вас так много разных устройств, и по какой-то причине производители любят возиться с внедрением WebView . У вас заканчиваются небольшие ошибки, когда некоторые устройства делают странные вещи. Если вы идете полностью на родной язык, вы, как правило, лучше совместимы (по цене, конечно, за дополнительную работу). Поддержка старых версий Android также, как правило, отсутствует.

отладка

Отладка JavaScript не самый замечательный опыт на мобильной платформе. В конечном итоге вы делаете много записей на консоли. Он работоспособен, но, конечно, не так хорош, как входить в ваш код по очереди. По-видимому, на этом фронте есть определенный прогресс (см. Этот инструмент, например, weinre ), но я не могу прокомментировать, насколько он хорош, но пока я не стал его копать.

Не только такая отладка сложнее, но и замечать ошибки сложнее. Ошибки в вашем JavaScript-коде не окажутся в ваших журналах, если вы не вручную их поймаете и не запишите. Вы можете закончить тем, что просто терпит неудачу.

Платформенные API

В общем, крупные игроки, о которых вы упомянули, имеют довольно приличную аппаратную поддержку. Возможности, которые вы упомянули как камера, GPS и локальное хранилище, довольно высоки в списке функций, важных для разработчиков приложений, поэтому они включают их. Полный список функций, которые вы, вероятно, захотите перейти на веб-сайт каждого из них (например, на платформе PhoneGap для высокоуровневой поддержки функций, например, на платформе ), но, как правило, большая «функция телефона», о которой вы думаете. Тем не менее, есть множество более сложных вещей, которые, насколько я знаю, эти рамки не делают или не делают, особенно те вещи, которые в меньшей степени связаны с функциями телефона и более связанными с платформой. Одним из примеров является Threading.

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

  • Производительность (накладные расходы переводчика, отставание JIT или потеря оптимизации кросс-компилятора),

  • Время загрузки памяти и время загрузки приложения,

  • Совместим ли API промежуточного уровня с новейшими и лучшими API-интерфейсами устройств и аппаратными функциями (если они вам понадобятся)

  • Существуют ли конкретные (не межплатформенные) API-интерфейсы, которые API-интерфейс посредника выполняет или не раскрывает, и можете ли вы их добавить,

  • Предоставляет ли уровень посредничества или позволяет переопределить его возможности представления UX / UI, чтобы приложение выглядело и выглядело «правильным» в каждом целевом сообществе устройств или магазине приложений,

  • Писать один раз, отлаживать всюду (плюс многоплатформенное регрессионное тестирование исправления для любой платформы) и т. Д.

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

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

Я лично использую PhoneGap. Я сохраняю свою библиотеку ui как минимум, возможно, использую только JQuery Mobile. И пока код javascript хорошо написан, возможно, используйте инфраструктуру mvc, я действительно не замечаю потери производительности.

Я иногда использую удаленный php-сервер для базы данных, а вызовы ajax работают плавно, а в других случаях я использую html5-хранилище, которое также работает нормально.

Поэтому, если вы не хотите изучать java или object-c … 🙂

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

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