ПВД: Почему универсальные приложения для Windows 10 иногда не такие универсальные

22

Всё чаще и чаще пользователи Windows 10 задаются вопросами по поводу универсальных приложений. Иногда приложение называется универсальным, но доступно исключительно для Windows 10 Insider Preview. Иногда оно называется универсальным, но доступно только пользователям ПК, хотя имеет компактный вид интерфейса совсем почти как на смартфоне. Давайте разбираться вместе, как же так получается? Ведь Windows 10 — универсальная операционная система.

Ответ на вопрос, как так получается, можно найти в маленьком конфигурационном файле, который сопровождает каждый дистрибутив приложения или игры в Windows Store. В нём находятся специальные параметры, которые указывают, для какого типа устройств предназначен данный пакет приложения, а также начиная с какой минимальной версии операционной системы заявленного семейства устройств он может работать и на какой последней версии разработчик протестировал работу данного пакета приложения. Но обо всём по порядку.

Семейства устройств с Windows 10

Да, Windows 10 универсальная, но, к сожалению, все устройства, на которых она способна работать, ещё не настолько универсальны. Они имеют различные конфигурации оборудования, различные подключаемые устройства, принципы взаимодействия с периферией и вообще могут очень сильно отличаться друг от друга. Разумеется, за последние десятилетия стремительного развития компьютерного мира множество компаний и даже целые консорциумы пытаются продвинуть использование стандартов. Чаще всего это получается, так как стандарты упрощают проектирование оборудования, его производство, разработку программного обеспечения и использования всего этого пользователем. Может быть, в будущем у нас и будут компьютеры, смартфоны, игровые приставки и умные холодильники, которые максимально идентичны как по аппаратному, так и по программному обеспечению. По крайней мере, развитие индустрии идёт именно в этом направлении.

Но на данный момент ваш домашний ПК, HoloLens и Raspberry Pi 2 — это довольно разные устройства. Они имеют разное оборудование, разные подходы к интерфейсу и могут иметь очень различающиеся наборы API. Чтобы стандартизировать разработку и дистрибуцию приложений для Windows 10, в документации и инструментах разработчиков Microsoft использует понятие Device Family, «семейство устройств». В манифесте приложения возможность работы на каком-либо из указанных семейств определяется атрибутом Name (Windows.<Family>) параметра TargetDeviceFamily.

В настоящее время в документации выделяют следующие семейства устройств.

  • Windows.Desktop: настольные ПК, ноутбуки, планшетные компьютеры (экран от 8 дюймов), гибридные устройства.
  • Windows.Mobile: смартфоны, основанные на чипах Qualcomm (ARM) и Intel Atom (x86), а также гипотетические планшетные компьютеры с экраном диагональю менее 7.99 дюймов.
  • Windows.Xbox: игровая приставка Xbox One и её предполагаемые потомки.
  • Windows.Team: сюда входит пока лишь два устройства Surface Hub.
  • Windows.IoT: одноплатные компьютеры вроде Raspberry Pi 2, носимая электроника, элементы умного дома и другие подобные устройства. Сюда же входят и IoT Headless, которые отличаются от обычных IoT отключённым графическим интерфейсом или его отсутствием.

В официальной документации пока нет HoloLens, Microsoft Band (в нём может оказаться Windows.IoT) и других пока необычных устройств. Они появятся позже, когда разработка приложений для них будет общедоступна.

windows 10 universla app

Все эти устройства объединяет одно надсемейство, которое так и называется — Windows.Universal. Если в манифесте приложения указано Windows.Universal, то это приложение может работать на всём семействе устройств с Windows 10 при наличии пакета совместимого с используемой процессором платформой. Это довольно редкое явление, так как в таком случае разработчик должен озаботиться интерфейсами для всех семейств устройств, или же возможностью удалённого управления через консоль в случае IoT Headless, а также использованием различных свойств и методов API. Сложность реализации универсального приложения напрямую зависит от сложности самого приложения. Поэтому в одном случае у разработчика получится создать приложение, которое легко будет запускаться на всех доступных семействах устройств, а в другом случае придётся немного попотеть.

Помимо разделения на семейства, применяется также более классическое разделение по платформам. Это хорошо знакомые большинству из нас x86, x64 и ARM. Именно такое техническое ограничение препятствует выполнению классических приложений для Windows, например, на смартфонах с ARM или Raspberry Pi 2. Можно также вспомнить Project Centennial, «мост» для разработчиков, который позволит упаковывать Win32-приложения в дистрибутивы, пригодные для распространения через Windows Store. Да, вы сможете установить из Windows Store Skype для рабочего стола у себя на компьютере, но не сможете установить его-же на своём смартфоне. Стоит отметить, что для Windows 8.x была доступна возможность создания единых пакетов приложений которые работали и на ARM, и на x86-64, которые помечались как нейтральные (neutral), но в свете использования нативной компиляции .NET Native, конфигурация AnyCPU более не является корректной, поэтому в случае использования нативной компиляции собираются отдельные пакеты для каждой из трёх платформ.

Пример

Не так давно на Windows 10 вышло продолжение «конфетной саги» — игра Candy Crush Soda Saga. Сначала она появилась только на компьютерах, и только через некоторое время стала доступна пользователям Windows 10 Mobile. Такая задержка мобильной версии игры встречается уже не первый раз. Дело в том, что хотя перед нами пример универсального приложения, пакет игры разный для компьютеров и телефонов. На данный момент на компьютерах доступен установочный пакет Candy Crush Soda Saga версии 1.51.8.0, а на смартфонах — пакет версии 1.51.7.0. Разработчики приложения могли не загружать ARM-пакет, либо ограничить публикацию в первое время только для настольного семейства устройств.

Различие в версиях Windows 10 в рамках одного семейства устройств

Для того, чтобы объяснить различия в версиях Windows 10 в рамках одного семейства устройств, мы возьмём пример семейства Windows.Desktop. Ведь это единственное семейство устройств, для которых Windows 10 вышла официально в виде законченного продукта. Но после её выхода 29 июля работа программы Windows Insider не была остановлена. В настоящее время её участники получают новые сборки Windows 10 Insider Preview, которые постепенно подводят нас к скорому релизу осеннего обновления Windows 10, известного также как Windows Threshold 2. Именно поэтому у пользователей семейства устройств Windows.Desktop есть три основных версии операционной системы: стабильная версия Windows 10240, Windows 10 Insider Preview из Slow Ring и Windows 10 Insider Preview из Fast Ring. Таким образом, у пользователей Windows 10 для компьютеров есть как минимум три разные версии операционной системы. На самом деле, их гораздо больше, так как в обоих циклах постоянно появляются новые сборки, а внутри Microsoft сборки появляются ежедневно.

Пример обновления приложений для Windows 10 Insider Preview

Пример обновления приложений для Windows 10 Insider Preview на ПК

Итак, в манифесте приложения для Windows 10 в параметре TargetDeviceFamily можно найти параметры MinVersion и MaxVersionTested. Первый декларирует, на какую минимальную версию Windows 10 заявленного семейства устройств можно установить данный пакет приложения. Второй указывает, на какой последней версии операционной системы разработчик протестировал работу приложения. Например, Microsoft чаще всего выпускает новые версии системных приложений для Windows 10 сначала для участников Windows Insider. Так как все актуальные публичные сборки Windows 10 Insider имеют нумерацию 10.0.105xx.0 (например, актуальная — 10.0.10547.0), то разработчикам приложения «Почта и календарь» достаточно в манифесте указать MinVersion=«10.0.10500.0». Тогда обновление в Windows Store увидят исключительно пользователи сборки Windows 10 Insider Preview не ниже 10500. Когда новые возможности в «Почте» будут протестированы, то Microsoft выпустит новую версию, где в манифесте укажет MinVersion=«10.10240.0». Тогда эта версия станет доступна пользователям стабильной версии Windows 10 для ПК. За прошедшую неделю таких обновлений для «Почты» вышло как минимум пять, но всего два из них декларировались для 10.0.10240.0 и выше.

Пример 1

Можно вспомнить поэтапное обновление приложения «Фотографии» для Windows 10. Для устройств с установленной актуальной версией Windows 10 Insider Preview 19 сентября стало доступно обновление приложения до версии 15.918.14122, в которой появилась возможность создания альбомов. При этом пользователи стабильной версии Windows 10 10240 этого обновления для «Фотографий» не увидели и версия приложения в таком случае была вышедшая ранее 15.915.17170.0. Через некоторое время, когда разработчики приложения получили обратную связь и данные телеметрии от участников Windows Insider, в Windows Store была отправлена версия «Фотографий» под номером 15.922.11070.0. Её манифест декларировал доступность приложения для стабильной Windows 10 10240 и выше. И именно тогда пользователи стабильной версии Windows 10 получили возможность работать с альбомами. Актуальная версия приложения «Фотографии» на данный момент — 15.1001.16470.0, и она доступна пользователям Windows 10 10240 и выше.

Пример 2

В попавшей неофициальным путём в конце прошлой недели сборке Windows 10 Insider Preview под номером 10558 были обнаружены новые приложения, среди которых внезапно оказалось приложение «Телефон». В его манифесте можно обнаружить свойства атрибутов, которые указывают, что данное приложение доступно для компьютеров и смартфонов с установленной сборкой не ниже 10.0.10558.0 и поэтому на странице приложения в Windows Store оно помечено недоступным для всех версий ОС ниже 10558.

Заключение

Из всего описанного выше можно сделать вывод, что параметр TargetDeviceFamily в манифесте приложения имеет крайне важное значение для всех: для Microsoft, для разработчиков, для простых пользователей. Благодаря ему создатель приложения для Windows 10 может выбрать на каких устройствах с какой версией Windows 10 будет работать его приложение. И хотя платформа универсальная, у каждого типа устройств есть свои особенности, что немного вредит этой самой универсальности.

Итак, давайте обобщим всё то, что рассматривали выше. Вся иерархия параметра TargetDeviceFamily абстрактного приложения выглядит следующим образом.

<Dependencies>
<TargetDeviceFamily Name=«Windows.Mobile» MinVersion=«10.0.10500.0»  MaxVersionTested=«10.0.10550.0»/>
<TargetDeviceFamily Name=«Windows.Desktop» MinVersion=«10.0.10240.0»  MaxVersionTested=«10.0.10550.0»/>
</Dependencies>

Мы видим, что приложение доступно на компьютерах с Windows 10 10240 и новее, а на смартфонах с Windows 10 Mobile данное приложение доступно только для сборок с версией выше 10500. То есть, для Windows 10 Mobile из ветки Windows Threshold 2. В этом случае нелишним будет вспомнить то, что новые смартфоны Lumia 950 и Lumia 950 XL будут продаваться с предустановленной специально доработанной версией Windows 10 Mobile 10240. Это значит, что рассмотренное выше абстрактное приложение на них работать не будет. Да и на других устройствах, которые не являются смартфонами или компьютерами, оно тоже работать не будет.

Различия в разных семействах устройств вынуждают разработчиков готовить отдельные пакеты приложений для каждого семейства. Например, для навигации в версии приложения для компьютера может быть использована кнопка «Назад» на панели задач в режиме планшета или же аналогичная кнопка в заголовке окна. Также можно задействовать кнопку Backspace на клавиатуре. Для навигации на смартфоне необходимо использовать или аппаратную кнопку, или кнопку «Назад» в панели навигации. Любой зависящий от конкретного семейства устройств код рекомендуется завернуть в условие перед исполнением. Также различные пакеты одного и того же приложения приходится собирать для разных архитектур. В этом случае от разработчика почти ничего не требуется. Ему просто нужно указать нужную платформу при компиляции, указать нужную декларацию семейства устройств в манифесте и отправить в Windows Store на модерацию полученные на выходе пакеты.


Система Orphus

Обсуждение

Отправить ответ

22 Комментарий на "ПВД: Почему универсальные приложения для Windows 10 иногда не такие универсальные"


Гость
Юрий Миртов
11.10.2015 03:46

О чем статья-то? Нам разъясняют разницу между планшетом, десктопом и хололенс? Так пользователи и так ее понимают. Разъясняют с т.з. разработчика? Зачем? У них есть мсдн, форумы и стековерфлоу. На мой взгляд, написано длинно и неясно, для кого. И что такое «ПВД» в заголовке?

Гость
Ilya Zhigin
11.10.2015 05:25

Вот критик то нашолся.♊

Картинка профиля Дмитрий Игонькин
Гость
Дмитрий Игонькин
11.10.2015 09:28
Вы, как я посмотрю, прочли максимум 3-4 абзаца, и уже побежали писать комментарий. Объясняется не разница между планшетом и десктопом, которой в случае Windows 10 сейчас вообще-то нет (точно читали-то?), а причины, по которым вроде бы универсальное приложение появляется в разное время на разных типах устройств с разной версией ОС. Вопросы о причинах этого пользователи часто задают в комментариях. Вот и всё. Но спасибо за критику, она всегда важна. Особенно конструктивная, но её тут довольно мало. ПВД — это «Пост Выходного Дня». Специальная субрубрика, где редакция сайта и другие пользователи пишут статьи на свободную тему. Главное, чтобы статья была связана… Читать далее »
Гость
Юрий Миртов
11.10.2015 12:03

Я больше скажу, я и 3-4 абзацев не прочитал. (( Я прочитал заголовок, не понял, что такое ПВД, Дальше текст идет сплошной «простыней», с как бы техническими подробностями. И вся эта простыня нужна для того, чтобы объяснить пользователям, что жизнь у разработчиков по-прежнему не сахар и не смотря на заявленную «универсальность» по-прежнему нужны костыли и велосипеды. Пользователь такой текст «ниасилит», а разработчик уже все про это знает.

Гость
John Doe
11.10.2015 10:13

Не такие они и «универсальные». Тоже самое, что и на Андроиде, различные пакеты для различных устройств. От фрагментации все равно не ушли. Это просто маркетинговая фикция.

Картинка профиля
Гость
rinch89
11.10.2015 10:48

Абсолютно с вами согласен! В нынешнем виде вся эта «Универсальность» windows это всего лишь грамотно преподнесенный маркетинговый ход microsoft.

Гость
Александр Старостин
11.10.2015 12:55

Мне так новый подход больше нравится. Не два проекта с разными дизайнами + общий код, а один проект с одним адоптивным дизайном. Удобнее

Гость
John Doe
11.10.2015 14:25

Это замечательно, если разрабам стало проще писать. Но это универсальная среда разработки, но не универсальное приложение на выходе. Фрагментация, ьезусловно, на порядок меньше, чем на Андроиде, но скть от этого не меняется — для каждой платформы приложение билдиться отдельно.

Картинка профиля
Гость
arseny92
11.10.2015 16:41

Для каждой архитектуры да, но если приложение не использует специфичных API и не использует при этом нативную компиляцию, то всё ещё можно делать нейтральные пакеты. Пакету Кортаны ниже, например всё равно на чём работать.

Гость
F.P. / Фёдор / ♐
11.10.2015 11:40

А мне понравилась статья. Такой механизм версий используется почти везде. Я так в своё время ломал один старый плагин для Firefox который уже не хотел работать.
Интересно, можно ли аналогично временно изменить в магазине номер версии и тип ОС?

Картинка профиля
Ред.
11.10.2015 15:20
Для пакета каждой платформы декларация семейства устройств указывается отдельно: пример указан в случае с фотографиями и почтой — когда чуть более новую версию можно заявить скажем на 10500+, следующую за ней — на 10240+, тогда пользователи 10240-10499 не получают первой версии, а сразу вторую, тогда как пользователи 10500+ получают обе версии приложения одно за другим. Ещё пример: в сборках Windows 10 Mobile приложение Телефон предустановлено всегда со дня её появления (естественно), в ARM-варианте (на WP7/8/8.1 это часть ОС, на 10 — таки указанное приложение). На 10558+ приложение появилось и в виде х86-64 пакетов и на ПК с декларацией на сразу… Читать далее »
Картинка профиля
Гость
arseny92
11.10.2015 16:34
Для пакета каждой платформы декларация семейства устройств указывается отдельно: пример указан в случае с фотографиями и почтой — когда чуть более новую версию можно заявить скажем на 10500+, следующую за ней — на 10240+, тогда пользователи 10240-10499 не получают первой версии, а сразу вторую, тогда как пользователи 10500+ получают обе версии приложения одно за другим. Ещё пример: в сборках Windows 10 Mobile приложение Телефон предустановлено всегда со дня её появления (естественно), в ARM-варианте (на WP7/8/8.1 это часть ОС, на 10 — таки указанное приложение). На 10558+ приложение появилось и в виде х86-64 пакетов и на ПК с декларацией на сразу… Читать далее »
Картинка профиля
Гость
arseny92
11.10.2015 16:34
Можно скажем указать (и поскольку пакеты могут быть разной версии, то для каждой платформы они могут быть разные и даже отличаться функционалом, если совместить указанные в статье примеры с конфетной сагой и фотографиями — на мобильном семействе пользователи инсайдера получили альбомы за несколько дней (вместе со сборкой 10536) до их появления в версии Фотографий на настольном семействе устройств) так например: — для x64 пакета — только настольное семейство 10240+ и семейство Xbox 10553+ (пакет будет доступен на ПК 10240+ и на консоли 10553+ и только) — для x86 пакета — универсальное семейство версии 10500+ и мобильное семейство 10240+ (тогда приложение… Читать далее »
Гость
Дмитрий Власенко
11.10.2015 12:31

Но работать почта так и не научилась))

Гость
Александр Старостин
11.10.2015 12:56

У меня на всех устройствах научилась

Гость
Никита Краснов
11.10.2015 12:43

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

Гость
Александр Старостин
11.10.2015 12:58

Да не правда. Что обещали то дали. Но в любом случае надо учитывать тип устройства при разработке. Теперь это делается в одном проекте

Гость
Дима
11.10.2015 12:51

Познавательно, но факт того, что разработчик может указывать на каких версиях и устройствах может работать приложение был и так очевиден.
Ну и заголовок немного странный, сейчас побегут комментарии «вся универсальность приложений — это бред и ложь», хотя здесь немного не о том говорится.
Ну и хотелось бы от самих разработчиков услышать мнение — помогает ли реально платформа универсальных приложений и будет ли проще теперь пилить приложения на винду?

Гость
Alexander Bochcow
11.10.2015 15:24

Фиг его знает. На андроиде например я могу запустить halloworld.apk как на планшета, так и на часах, при этом гул о «универсальных приложениях» даже не заикался. В конкретном случае выходит, что «универсальное приложение» halloworld на каждый тип устройства имеет свою версию.

Картинка профиля
Гость
arseny92
11.10.2015 16:37

На Windows не на тип, а свой пакет на платформу процессора. Выше даны примеры=)

Гость
Dmitry Adodin
12.10.2015 08:17

ну а у apple универсальные приложения — это когда для iPad и iPhone один код (вариант с растягиванием телефонного интерфейса на весь экран не в счёт)

Гость
Александр Данилов
13.10.2015 10:46

с точки зрения программиста неплохо, а с точки зрения пользователей — очередное враньё и фикция от мс: как не было ничего в Windows Store, так и не будет.

wpDiscuz