- Native приложения. Первые шаги
- Загрузочные экраны native режима разных версий Windows:
- Что нужно знать:
- Заготовка проекта Native приложения
- Как создать нативное приложение в Windows
- Как создать нативное приложение в Windows
- Поддержка Flash
- Меню приложения
- Портативность
- Нативные, гибридные и web-приложения в сравнении
- Статистика и факты по загрузкам и использованию
- 1.Знакомство с типами приложений
- Обзор
- Нативные приложения: отличная производительность в обмен на высокую стоимость
- Гибридные приложения: пишутся один раз и запускаются на всех устройствах
- web-приложения: одно приложение для всех типов экранов и платформ
- 2. Производительность
- Обзор
- Нативные приложения
- Гибридные приложения
- Web-приложения
- 3. Канал дистрибуции
- Обзор
- Нативные приложения
- Гибридные приложения
- Web-приложения
- 4. Целевая аудитория и пользовательский опыт
- Обзор
- Нативные приложения
- Гибридные приложения
- Web-приложения
- 5. Стоимость разработки
- Обзор
- Нативные приложения
- Гибридные приложения
- Web-приложения
- Заключение
Native приложения. Первые шаги
Native приложения — это программы, предназначенные для выполнения на операционных системах Windows семейства NT (NT/2000/XP/2003/Vista/7), способные запускаться на раннем этапе загрузки Windows, до окна входа в систему и даже до запуска каких-либо подсистем Windows. Синий экран при загрузке Windows XP, в котором, например, происходит проверка диска и есть тот самый режим. Native приложения используют только Native API, они могут использовать только функции, экспортируемые из библиотеки ntdll.dll. Для них недоступны функции WinAPI.
Native приложения запускаются на экране, который возникает до появления окна входа в систему. Примером native приложения является приложение chkdsk, которое запускается перед входом в Windows, если предварительно была запущена проверка системного раздела на ошибки и отложена до перезагрузки. Приложение работает, выводя сообщения экран, а затем происходит обычный запуск Windows.
Преимущества использования этого режима: большая часть компонентов Windows ещё не запущена, отсутствуют многие ограничения. Этот режим, например, используется в приложениях, которые хотят что-то сделать с системным разделом Windows, но не могут, пока запущена операционная система: дефрагментаторы, конверторы файловой системы, и тому подобные утилиты.
Моя программа Native shell запускается до экрана входа в систему и предоставляет интерфейс командной строки с возможностью перемещаться по файловой системе Windows, копировать и удалять файлы, просматривать некоторую информацию об операционной системе и запускать другие процессы, способные выполняться в native-режиме, такие как autochk.exe и autoconv.exe. Доступны исходные коды программы на языке Си.
Загрузочные экраны native режима разных версий Windows:
| |
| |
Что нужно знать:
Native приложения компилируются с помощью WDK — Windows Driver Kit (также известный, как DDK). Есть возможность делать их и в какой-то другой среде разработки, но в WDK проще всего.
Native приложения используют Native API. Оно частично документировано в MSDN для использования при написании драйверов. Но документированы не все функции. Информацию по остальным нужно брать из неофициальных источников. Например, на сайте http://undocumented.ntinternals.net/
Функции в ntdll.dll имеют префиксы Zw и Nt, а также некоторые другие. Видно, что у Zw и Nt функции дублируются названия. На самом деле это одни и те же функции. Если искать в сети пример использования какой-либо функции, стоит поискать сначала с одним префиксом, потом с другим, иначе можно что-то упустить. Почему у них разные префиксы — отдельная история, для программирования native приложений существенной роли не играет.
Для программирования нужны прототипы функций Native API, но в заголовочных файлах WDK присутствуют не все определения. Нужно использовать альтернативные заголовочные файлы, содержащие в том числе и определения недокументированных функций и типов данных. Например, можно воспользоваться заголовочными файлами Native Development Kit (NDK), которые доступны здесь.
Программировать на чистом Native API неудобно. Не обойтись без библиотеки, в которой уже реализованы некоторые рутинные действия. Существует библиотека с открытым кодом — ZenWINX, можно пользоваться ей. Ещё на страничке NDK анонсирована некая библиотека NDL, но на сайте её нет.
Чтобы native приложение запустилось при запуске Windows, надо положить его в каталог system32, а в ключ реестра HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute прописать его имя файла, и аргументы, если они есть. Ключ имеет тип MULTI_SZ, может содержать несколько строк. Первой строкой там идёт Autocheck Autochk * . После неё можно прописывать свою программу. Программа, прописанная в этом ключе, имеет свойство запускаться даже в безопасном режиме Windows (safe mode), так что нужно быть осторожным. Ошибка в программе — и система не запустится. Но можно внутри приложения отслеживать факт запуска в safe mode и обрабатывать этот режим отдельно, например сделать завершение программы, если она обнаружила себя запущенной в safe mode. Кроме того, несмотря на то, что программа запускается и может выполнять какие-то действия, в этом режиме не работает вывод на консоль. Невозможно взаимодействие с пользователем. Это следует учитывать.
При необходимости, native-приложение можно запустить и не перезагружая компьютер. Для этого следует воспользоваться утилитой nrun.exe. Но загрузочный экран от этого не появится, и вам следует придумать, как ещё взаимодействовать с вашим приложением, если нужна интерактивность. В исходном коде nrun можно посмотреть, как реализован запуск native-процессов с использованием недокументированных функций Native API.
У native приложений точка входа не main и не wmain, а NtProcessStartup. В PE-заголовке EXE-файла есть специальное поле, означающее подсистему, в которой выполняется приложение. У native приложений в это поле установлено специальное значение, означающее, что EXE не требует подсистемы. У обычных приложений ставится значение, соответствующее подсистемам «Windows GUI» или «Windows console». Native приложения не запускаются в обычном режиме работы Windows. При попытке запустить программу Windows выдаёт сообщение «Приложение нельзя запустить в режиме Win32».
Вывод кириллицы на экран по-умолчанию в этом режиме не поддерживается. Есть способ обойти это ограничение, впрочем, способ сложный и пока работает только на Windows XP.
Заготовка проекта Native приложения
Я создал заготовку проекта Native приложения — набор файлов, который можно использовать в качестве базы для разработки собственного Native приложения. Заготовка содержит файл native.c , содержащий точку входа в приложение. Остальные файлы — это файлы библиотеки ZenWINX, которые модифицированы так, что используют определения функций из NDK, а не из своего файла с определениями. Это позволяет использовать как функции самой библиотеки, так и функции Native API, которые разработчики ZenWINX забыли включить в собственный заголовочный файл. Фактически, NDK — более полный каталог Native API функций, чем файл, поставляемый с ZenWINX. Компилировать заготовку нужно утилитой build из состава WinDDK (я использую версию WinDDK 1.1.6001.000). Следует подключать заголовочные файлы NDK, прописав пути к каталогу с ними.
Возможно также разрабатывать и собирать Native-приложения прямо в Visual Studio, без использования компилятора WDK. О том, как это сделать, написано в статье Сборка Native API-приложения в Visual Studio 2010.
Как создать нативное приложение в Windows
Вы часто используете некоторые веб-сайты? Наличие собственного приложения для них на вашем компьютере может сделать их более доступными. Представьте, что вам не нужно идти в ваш браузер, а затем искать вкладку, на которой открыт ваш сайт. В этой статье мы рассмотрим инструмент командной строки под названием Nativefier, который позволяет создавать собственные приложения для любого веб-приложения или веб-страницы. Мы также рассмотрим шаги, которые вы можете выполнить, чтобы создать собственное приложение для любой из ваших любимых веб-страниц.
Обзор Nativefier
Nativefier является открытым исходным кодом и написан на JavaScript и использует Electron для создания собственных приложений для Windows, Mac и Linux. Приложения, созданные Nativefier, могут сохранять некоторую конфигурацию и настройки, чтобы дать вам больше приложений. Для использования Nativefier вам необходимо установить Node.js на вашем компьютере.
Как создать нативное приложение в Windows
- Откройте окно CMD в нужной директории.
- Выполните следующую команду для установки npm install -g nativefier
- По завершении установки вы можете выполнить следующую команду, чтобы создать собственное приложение для любой веб-страницы или веб-приложения nativefier —name “Application Name” “http://applicationurl.com”
Это должно создать приложение с именем Application Name, URL которого http://applicationurl.com. Теперь вы можете открыть папку, созданную Nativefier, и найти исполняемый файл для вашего приложения. Вы можете создавать ярлыки для этого файла exe, чтобы вы могли запускать его непосредственно из меню «Пуск», панели задач или любого другого места по вашему выбору.
Поддержка Flash
Если ваш выбранный веб-сайт требует поддержки флэш-памяти, вы можете легко добавить его, добавив в команду установки -flash-тег. Команда станет:
nativefier —name —flash «Имя приложения» «http://applicationurl.com»
Для работы требуется Google Chrome, или вам необходимо установить плагин PepperFlash Chrome вручную.
Меню приложения
Поскольку эти приложения — это не что иное, как WebView, обернутый вокруг вашего желаемого URL. Вы можете выполнить некоторые основные операции, которые вы могли бы сделать в обычном веб-браузере. Для этого вы можете получить доступ к меню приложения, нажав клавишу «Alt» с клавиатуры. Теперь, используя эти меню, вы можете перемещаться вперед или назад или перезагружать все приложение.
Как и большинство веб-браузеров, вы можете легко увеличивать масштаб с помощью Ctrl + = и уменьшать масштаб с помощью Ctrl + -. Существует даже опция переключения полноэкранного режима. Наилучшая часть приложений, созданных Nativefier, заключается в том, что они поставляются с полнофункциональными инструментами для работы с Chrome. Вы получаете доступ к консоли, сети и всем остальным функциям, предлагаемым Chrome Developer Tools. Вы можете включить / отключить инструменты разработчика, нажав Ctrl + Shift + I.
Как уже упоминалось, приложения могут сохранять некоторую минимальную конфигурацию, и это можно очистить, перейдя в меню приложения, а затем выберите «Изменить», а затем «Очистить данные приложения». Это должно полностью перезагрузить приложение со всеми сеансами или входами, которые вы могли бы сохранить.
Портативность
Все приложения, созданные с помощью Nativefier, переносимы. Вы можете легко носить их со всей их конфигурацией. Это гарантирует, что у вас есть данные повсюду и не позволяет вам регистрироваться снова и снова.
Nativefier — отличный инструмент для вашей коллекции. Если вы используете какой-либо веб-сайт так часто, что хотите, чтобы у вас было родное приложение, вы должны попробовать Nativefier. Созданные приложения простые, быстрые и надежные. Кроме того, использование ваших любимых веб-приложений в отдельном родном окне — отличный опыт в целом. Я использовал Nativefier для создания собственных приложений для большинства социальных сетей, GitHub и других других веб-приложений. Нажмите здесь, чтобы узнать больше о Nativefier.
Нативные, гибридные и web-приложения в сравнении
Итак, вы решили разработать для своего бизнеса приложение. Каков в этом случае следующий шаг?
С одной стороны, исследователи прогнозируют, что совокупная доходность мобильных приложений во всем мире в 2023 году превысит сумму в $935,2 миллиарда. С другой стороны, эти показатели ставят перед организациями большую дилемму: какой тип приложения следует создавать для долгосрочного успеха?
Что ж, выбор типа создаваемого приложения во многом зависит от того, на каких пользователей вы нацеливаетесь. Здесь вам нужно определить, какой из этих видов ваша целевая аудитория предпочтет использовать, как долго они будут задерживаться в нем, сколько раз в месяц они будут к нему обращаться и т.д.
Но повода для волнения здесь нет, так как мы собрали статистику и ряд фактов, которые помогут вам лучше понять и сознательно выбрать наиболее подходящий вашему бизнесу тип приложения.
Статистика и факты по загрузкам и использованию
- Согласно опросу Buildfire, в мире насчитывается приблизительно 2,7 миллиарда пользователей смартфонов, половина из которых используют планшеты.
- Прогноз из доклада eMarketer показывает, что в среднем взрослые американцы в 2018 году проводили в мобильных приложениях немногим более 3-х часов, что превысило предыдущий показатель на 11 минут.
- В отчете этого исследования говорится, что в среднем американцы проверяют свои телефоны по 80 раз в день или каждые 12 минут.
- В том же докладе eMarketer сказано, что 90% времени использования интернета приходится на долю смартфонов, а также то, что взрослые граждане США прослушивают через мобильные приложения более 50 минут аудио в день. Для сравнения можно отметить, что на социальные сети затрачивается в среднем 40 минут в день.
- По данным Statista социальные сети в 2019 году являлись наиболее посещаемыми интернет ресурсами среди индийцев.
- Еще одно смежное исследование показало, что Google Play Store является ведущей платформой, содержащей приблизительно 2,56 миллиона приложений, в то время как Apple занимает второе место, предлагая около 1,85 миллионов приложений. Более того, с учетом увеличения числа приложений, предлагаемых разными магазинами, прогнозируется, что к 2022 году количество их скачиваний достигнет показателя в 258,2 миллиарда.
В качестве обобщения этих статистических данных можно уверенно сказать, что индустрия мобильных приложений процветает и с каждым годом достигает все новых вершин своего развития. Поэтому давайте предположим, что вы уверено настроены на создание приложения, но, прежде чем приступить к этому процессу и принять окончательное решение, вам нужно взвесить ряд факторов. С технической точки зрения важнейшими факторам являются нужды самого бизнеса, требования пользователей, варианты дизайна UX/UI приложения, выбор подходящего брэнда, а также вывод продукта на рынок. Все эти факторы так или иначе определяют успешность всего процесса.
Тем не менее многих из вас интересует вопрос, почему для успеха бизнеса необходимо выбирать именно конкретный тип приложения, когда вся эта индустрия имеет очень высокие темпы развития в целом. Причины тому следующие:
- Различные приложения проектируются и создаются под различные цели, поэтому важно нанять такую компанию-разработчика, которая поможет создать приложение с отчетливой целью. Соответствие типа приложения его четкой цели облегчит реализацию в соответствии с нуждами целевой аудитории.
- Когда дело доходит до самой разработки, стоимость этого процесса вызывает наибольшие беспокойства, поскольку сильно зависит от того, какое именно вы хотите создать приложение.
- Реализованные проекты требуют долгосрочного обслуживания и технической поддержки, поэтому очень важно выбрать такой тип продукта, который будет удобно обслуживать и обновлять последующими релизами.
Выбор приложения, которое сможет обеспечить вашему бизнесу длительный устойчивый успех, оказывается достаточно сложной задачей. В связи с этим мы подготовили список пунктов, имеющих важнейшее значение при выборе типа приложения.
Для начала давайте сформируем базовое понимание каждого из их видов.
1.Знакомство с типами приложений
Обзор
Нативные приложения — это те, которые разрабатываются для конкретной платформы при помощи соответствующего этой платформе языка. Гибридные же приложения создаются с единой базой кода, допускающей их запуск на нескольких операционных платформах. Web-приложения , в свою очередь, являются простыми сайтами, которые, благодаря своей функциональности и креативности, создают впечатление нативных приложений.
Нативные приложения: отличная производительность в обмен на высокую стоимость
Нативные приложения создаются для конкретной платформы, нацеливаясь на пользователей либо Android, либо iOS. Если вы хотите сфокусировать внимание на пользователях обеих платформ, тогда будьте готовы к разработке двух отдельных приложений, одно для Google Play Store, а второе для Apple App Store. Поскольку каждая из этих платформ имеет совершенно различные стандарты, для их соблюдения использовались разные языки программирования.
- Превосходная производительность: нативные приложения выполняются плавно и без зависаний даже в случаях повышенной нагрузки на графический процессор и интеграции сложных вычислений.
- Наличие доступа к индивидуальным возможностям платформы: самое лучшее в этом типе приложений — это то, что они обеспечивают доступ к встроенным возможностям устройств или конкретной платформы.
- Нативный пользовательский интерфейс: плавный опыт использования обеспечивается благодаря тому, что приложения создаются в соответствии со стандартами платформы.
- Необходимы две команды разработчиков: нативные приложения для Android обычно создаются на Java или Kotlin, в то время как приложения для iOS разрабатываются на Objective-C или Swift, в связи с чем вам потребуется нанять команду, имеющую опыт работы именно с этими языками.
- Высокая стоимость разработки: нативные приложения идеально подходят для крупных корпораций с большими бюджетами. Поскольку вам нужно разрабатывать каждое приложение с нуля, то для его итоговой экономической успешности потребуется много ресурсов, в том числе времени.
Гибридные приложения: пишутся один раз и запускаются на всех устройствах
Многие относят гибридные приложения к кроссплатформенным, но общее между ними лишь то, что они имеют одну базу кода. Тем не менее кроссплатформенный подход отлично работает для малобюджетных приложений с безопасными, стабильными и легко обслуживаемыми функциями.
С другой стороны, гибридные приложения — это профессиональное решение для развивающихся стартапов и бутстрэпперов, так как они обеспечивают высокую скорость разработки и позволяют создавать идеальные решения для бизнеса. Если UX и производительность не стоят в качестве приоритетов, тогда гибридное приложение окажется превосходным решением. Среди основных инструментов для их разработки можно назвать Flutter, Ionic, React Native, Visual Studio и др.
- Быстрый вывод на рынок: гибридные приложения разрабатываются быстрее, так как в ходе процесса используются стандартные веб-технологии, которые легко обслуживать в долгосрочной перспективе.
- Доступ к возможностям устройств: используя гибридные приложения, вы также можете использовать нативные возможности целевых устройств.
- Дистрибуция для нескольких платформ: этот вид приложений распространяется через оба магазина, что позволяет охватить большее число пользователей.
- Производительность: их производительность ниже, чем у нативных вариантов, так как зависит от качества процессов, отображающих UI и выполняющих код. Поэтому чем быстрее использующее приложение устройство, тем выше его производительность.
- Интеграция сторонних сервисов: Вы не можете разрабатывать гибридное приложение на одном только JavaScript. Вам потребуется интегрировать такие фреймворки для гибридной разработки, как Cordove, Ionic или React Native, каждый из которых требует определенных усилий для освоения.
web-приложения: одно приложение для всех типов экранов и платформ
Такие приложения предоставляет вам околонативный опыт и возможность выполнения во всех браузерах и устройствах, включая ноутбуки, планшеты, смартфоны, умные часы и даже ТВ. Единственным требованием является наличие на устройстве браузера. В этом случае вместо разработки отдельных приложений для каждой платформы можно нацелиться на все сразу, создав всего одно.
- Совместимость с несколькими платформами: создав web-приложение вы можете тут же запускать его на любой платформе, не вкладывая дополнительных средств и времени в дополнительную разработку.
- Мгновенные обновления: при использовании гибридных приложений пользователи всегда имеют доступ к их последним версиям и скачивать обновления им не приходится.
- Использование распространенных технологий: поскольку web-приложения можно разрабатывать при помощи различных технологий, выбор наиболее подходящей компании-разработчика не представляет для стартапов сложности.
- Ограниченный доступ к нативным функциям платформы: web-приложения не имеют доступа к встроенным возможностям устройств, таким как камера, хранилище, контакты и прочее.
- Базовая производительность: эти приложения работают плавно в простых случаях применения, таких как новые издательства и онлайн магазины.
2. Производительность
Обзор
Производительность приложения — это одна из важнейших его составляющих, определяющая продолжительность использования этого приложения пользователями. В ходе опроса выяснилось, что наиболее распространенными причинами удаления приложений являются следующие: 59% пользователей назвали низкую скорость, 76% назвали фризы экрана, а 71% сбои в работе. Когда доходит до оценки типов приложений в отношении их производительности, нативные варианты могут обеспечить несопоставимые с другими показатели.
Нативные приложения
Этот вид может гарантировать высокую производительность, поскольку они имеют прямой доступ к функциональности и элементам устройства, обеспечивая повышенную скорость отклика. Более того, эти приложения разрабатываются при помощи продвинутого набора возможностей (включая USB вход, сложное сетевое взаимодействие, управление памятью и др.), благодаря чему могут предоставить уникальный пользовательский интерфейс.
Гибридные приложения
С другой стороны, гибридные приложения работают на платформе, загружая данные с сервера, и имеют ограниченный доступ к возможностям устройства. Именно поэтому несколько снижается их производительность по сравнению с нативными приложениями.
Web-приложения
Производительность этих приложений зависит от интернет-соединения и производительности браузера, в связи с чем этот показатель по отношению к нативным версиям снижается.
3. Канал дистрибуции
Обзор
Поскольку, согласно прогнозам, количество скачиваний приложений к 2023 году достигнет 258,2 миллиарда становится очевидно, что более обширный охват аудитории приведет к мгновенному приросту его скачиваний. Нативные и гибридные приложения размещаются в онлайн-магазинах, в то время как web-приложения доступны непосредственно в интернете.
Нативные приложения
Поскольку создаются они под конкретную платформу, приложения Android и iOS размещаются в соответствующих этим платформам магазинах. Это позволяет им задействовать возможности устройств и пользоваться системой рейтинга магазинов.
Гибридные приложения
Они спроектированы для работы на нескольких платформах и обычно размещаются в нескольких магазинах приложений и имеют возможность как задействовать возможности устройств, так и участвовать в системе рейтинга.
Web-приложения
Эти приложения выполняются в браузерах. Они не размещаются в магазинах, но пользователи могут найти их непосредственно в интернете.
4. Целевая аудитория и пользовательский опыт
Обзор
Удержание пользователей в мобильных приложениях на семьдесят процентов зависит от предоставляемого этими приложениями пользовательского опыта (UX) и интерфейса (UI). Тем не менее ведущая компания-разработчик может обеспечить вам 100% удержание с минимумом багов и сбоев UX, в то же время применив последние веяния в дизайне UI. Качество же пользовательского опыта напрямую зависит от выбранной вами аудитории. Взяв за основу ее предпочтения и интересы, вы сможете создать максимально соответствующее им приложение.
Нативные приложения
Нативные приложения для Android скачиваются бесплатно, в то время как приложения iOS являются платными, поэтому вам следует определиться для какой категории пользователей вы создаете продукт. При этом важно помнить, что нативные приложения для поддержания высококачественного пользовательского опыта требуют частых обновлений.
Гибридные приложения
Выбор в пользу этого типа приложений стоит делать, когда вас интересует максимальный охват аудитории по нескольким платформам с минимальной потребностью в обновлениях. Кроме того, если ваши пользователи будут скачивать приложение и пользоваться им офлайн, тогда нативные и гибридные варианты будут идеальным решением.
Web-приложения
Эти приложения предоставляют бесплатный доступ для любых устройств и браузеров, позволяя вам охватить более широкую аудиторию. К тому же web-приложения легче обслуживать, так как они в отличие от нативных не требуют частого обновления.
5. Стоимость разработки
Обзор
Так как стоимость разработки является одним из наиболее острых вопросов для бизнеса, важно отчетливо понять доступный вам бюджет до того, как начать разработку определенного вида приложения. В случае создания нативных приложений вам потребуется нанять разносторонние команды разработчиков, владеющих разными навыками, в связи с чем итоговая стоимость такого проекта значительно превысит стоимость создания гибридных или web-приложений.
Нативные приложения
Стоимость разработки такого приложения вычисляется исходя из количества часов, затрачиваемых командой на его реализацию, поэтому ее средняя величина может варьироваться от $10,000 до $50,000+. При этом на нее также влияет сложность реализуемого функционала, размер приложения и применяемый в нем UX/UI дизайн.
Гибридные приложения
Компании-разработчики, используя единую базу кода, могут настроить гибридное приложение для запуска на нескольких платформах. В связи с этим итоговая стоимость существенно снижается и, как правило, вписывается в диапазон от $2,000 до $25,000+.
Web-приложения
Web-приложения разрабатываются со сложным интерфейсом и функциональностью, поэтому итоговая стоимость может оказаться несколько выше, чем в случае с гибридными. Средний бюджет такого проекта может составлять от $7,000 до $50,000, а иногда и существенно превышать этот порог.
Заключение
Надеюсь, что вы ясно представили себе различия между этими тремя типами приложений. Для завершения этой статьи будет не лишним отметить, что каждый тип приложения имеет как достоинства, так и недостатки. Еще раз повторю, что выбор направления разработки приложения будет существенно изменяться в зависимости от целевой аудитории, ее предпочтений и доступного вам бюджета.
Тем не менее не столь важно, какой тип приложения вы в итоге выберите, так как его успех во многом будет зависеть от навыков работающей над ним команды и выбранного способа подстройки приложения под нужды конечных пользователей.