Microsoft — мировой лидер в области ПО и ИТ-услуг
531,52
рейтинг
14 июля 2014 в 10:13

Разработка → Новая Windows Phone 8.1. Что делать разработчику приложений?



Если вы разработчик мобильных приложений и у вас уже есть приложения под Windows Phone 8 или более ранние версии OS, вероятно, вы уже начинаете задумываться, стоит ли вам обновлять свои приложения до новой версии, каким образом это проще всего сделать и сколько это может занять времени. Это простые вопросы, для ответа на которые мы опубликуем несколько статей, описывающих основные сценарии обновления в пошаговом режиме.

В этой статье:
  • Что нового и зачем обновляться до 8.1
  • Основные сценарии обновления до 8.1
  • Что необходимо для разработки
  • Где достать Windows Phone 8.1
  • Обучающие материалы

Что нового и зачем обновляться до 8.1


Новые возможности платформы и новые пользователи – это основные причины для обновления приложений на платформу 8.1.

Немного подробнее о возможностях.

Универсальные приложение – простой способ выйти на оба рынка



Хотите выпустить приложения сразу под Phone и Windows или сократить трудозатраты на поддержку двух существующих приложений? Надо создавать Universal apps.

WinRT и WinJS теперь в телефонах



Если у вас уже есть приложение на Windows Phone, вам рано или поздно придется перейти на новый XAML и C# или HTML и JavaScript.

WinRT – это не то же самое API, что было в предыдущей версии мобильной платформы, а разработка мобильных приложений WinJs была вообще не доступна.

Если вы раньше разрабатывали Windows Store приложения, то свой опыт вы можете перенести на разработку для Phone. Теперь у них общая объектная модель, жизненный цикл и большая часть элементов управления.

Глобальные изменения для WP разработчиков:


Возможности платформы

Новые возможности описаны в статье на MSDN: Новые возможности Windows Phone 8.1

Улучшенный Silverlight 8.1



Основной аргумент оставаться на Silverlight и обновляться до Silverlight 8.1 — это новые возможности объектной модели и поддержка WinRT API.

Silverlight WinRT и XAML WinRT сейчас имеют отличия, которые в основном касаются работы с аудио, видео и контактами и, иногда, играют решающую роль в выборе платформы.

Возможности платформы

Основные и эксклюзивные возможности описаны в статье на MSDN: Silverlight 8.1.

Основные сценарии обновления до 8.1


Их всего три: обновление Silverlight приложения до новой версии, обновление Silverlight приложения до WinRT и расширение Windows Store приложений на Windows Phone 8.1.



Давайте разберемся, какие действия подразумевает каждый сценарий и какие есть ограничения.

Обновление Silverlight 7.x/8.0 приложения до Silverlight 8.1

Если у вас есть приложение на Silverlight предыдущих версий, то у вас есть два пути. Обновлять приложение до новой версии или ждать, когда вам понадобится новое API.

Совет: обновлять, как только появится время, и пока, в Visual Studio 2013 в проекте вашего приложения, доступна кнопка автоматического обновления. Затем публиковать приложение в магазин, для новых пользователей платформы. Старое приложение из магазина не удалять. Пользователи старых устройств или не обновившиеся до новой версии OS пользователи — не могу воспользоваться 8.1 приложениями.

Возможность создавать проекты универсальных приложений для телефонов и планшетов на Silverlight не доступна.



Обновление Silverlight 7.x/8.0 приложения до WinRT

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

Старые приложения работают и на предыдущих версиях мобильной OS и на новой, а новые приложения – только на 8.1.

После того, как вы сделаете Windows Phone 8.1 приложение, вы сможете расширить его до Windows Store приложения и опубликовать еще и в магазин Windows.



Расширение Windows Store приложения на Windows Phone 8.1

Если у вас есть Windows Store приложение на XAML и C# или HTML и JavaScript, то вы можете расширить его до Windows Phone 8.1 приложения. В Visual Studio 2013 есть специальное действие в контекстном меню проекта.

Как и в предыдущих случаях, старые приложения работают и на предыдущих версиях мобильной OS и на новой, а новые приложения – только на 8.1.



Резюме

Основные причины обновиться до новой версии:
  • Нужны новые функциональные возможности, которых раньше не было.
  • Хочу больше пользователей, меньше трудозатрат на поддержку приложений Phone и Windows и единый проект в Visual Studio. Возможно, собираюсь объединить свои приложения в единый кроссплатформенный проект в Visual Studio для Phone, Windows, iOS и Android.
  • Не хочу отставать и пропускать целую версию. Попытка отсидеться до следующей версии кончается еще большим количеством проблем и труда, чем обновление вовремя.

Что необходимо для разработки


  • Windows 8.1.
  • Visual Studio 2013 Update 2 или выше.
  • Windows Phone 8.1, если хотите тестироваться на устройстве. Для остального есть эмулятор.

Где достать Windows Phone 8.1



Обучающие материалы


Обновляем Windows Phone Silverlight 8.0 приложение до Windows Phone Silverlight 8.1
Обновляем Windows Phone 8.0 приложение до Windows Phone 8.1(XAML)
Превращаем Windows Store приложение в универсальное
Курс для начинающих по Windows Phone 8.1
Курс по Windows Phone 8.1
Примеры кода с основными возможностями Windows Phone 8.1 (c#, c++, javascript)
Автор: @MissUFO
Microsoft
рейтинг 531,52
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии (18)

  • +2
    В пункте «Обновление Silverlight 7.x/8.0 приложения до WinRT» не совсем корректная диаграмма. Если не обновляться на Silverlight 8.1 то приложение все ещё будет работать на Windows Phone 8.1, просто не будет возможности использовать новое API. По диаграмме кажется, что приложение не запустится вообще.
    • 0
      Пожалуй соглашусь. Покрасила зеленым.
  • 0
    Беда в том, что перенеся приложение на новую версию, мы просто удвоим количество параллельно разрабатываемых проектов. Доля WP8 еще очень долго будет намного больше WP81.
    • 0
      Да есть такое. Я на этой неделе постараюсь написать про сценарий WP8 — WP8.1 Xaml, там загнать все проекты в один Solution и заняться выделением общего кода. Тогда будет чуть легче поддерживать. Но вообще, лучше преурочить это событие (переход на WP8.1) к обновлению какой-то еще функциональности приложения, а не просто так делать много работы )
      • 0
        Набрасывал тестовые проектик. Можно сделать текущий WP8 проект библиотекой со всем XAML. А коннектиться к нему можно уже из проекта для конкретной платформы(будут aapx и xap соответственно).
        Но все это, само собой, только Windows Phone Silverlight 8.1. Как переходить к WinRT реализации пока совершенно не понятно.
    • 0
      Почему? В течение месяца-двух 8.1 будет распространена по всему миру, и бОльшая часть пользователей 8.0 довольно быстро обновятся. А тем, кто не обновится, скорее всего либо и приложения-то особо не нужны, либо за глаза хватает текущих версий (всё-таки винфон пока всё равно либо в семьях разработчиков, либо у тех, кто особо не заморачивается).
    • 0
      очень долго — понятие растяжимое. Дольше чем у iOS, но намного быстрее, чем у Android. насколько я помню, на ветке 7.x уже через 2-3 месяца после официального старта обновлений большинство обновлялось.
  • +1
    Что-то я в Silverlight 8.1 не заметил новых API — ни SwapChainBackgroundPanel, ни System.IO.Compression, ни System.IO.MemoryMapping, ни поддержки ресурсов в новом формате, ни иконок новых. Буквально, тот же 8.0, с парой мелких изменений. Покажите хоть ченжлог что ли?
    А вот новый режим WinRT 8.1 это просто сказка! И дело даже не в реюзабельности кода, он сам по себе достаточно мощный, с хорошей С++ частью. Жалко лишь, что он не может подхватывать Silverlight 7-8 либы, например Google AdMob, недавно заработавший.

    P.S. Давеча не смог залить WP8.1 приложение с чистой W8.1 — там нет Silverlight для браузера, а даже если поставить, он не работает без отключения EPM в IE11 и Compat. mode, но даже так загрузка файла обрывается. Залил с 8ки.
    • 0
      Коллеги, все странно и сложно:
      msdn.microsoft.com/en-us/library/dn642084(v=vs.105).aspx

      С другой стороны есть интересная цитата:
      Silverlight 8.1 apps run in something called a “Modern Context”. In real terms this means that Silverlight 8.1 needs both a WMAppManifest and an appxManifest. Without the later you won’t be able to access newer XAML based features.

      Silverlight 8.1 is not 100% compatible with Silverlight 8.0. For example, Array.Sort no longer uses a stable sort, which could cause problems for some applications.

      Another concern is Fast App Resume. In Silverlight 8.0 this was an optional feature that you could turn on. Inside the Modern Context it is the only option.

      XAML apps do not terminate when you press the Back button. Silverlight 8.1 apps will terminate by default, just like Silverlight 8.0, but you can disable it.

      Background audio doesn’t currently work in Silverlight 8.1. It is hoped that it will be fixed in a future update.

      Note that Silverlight 8.0 apps do not run in the modern context. This means that Silverlight 8.0 apps are 100% compatible with Windows Phone 8.1.


      Возможно, выделенный участок означает, что есть возможность скрестить две технологии сразу. А может имел в виду что-то иное. Проверю.
      • 0
        Нет, чудес не бывает, SwapChainBackgroundPanel не доступен в Silverlight приложениях в принципе. А значит, Silverlight 8.1 нужен только, чтобы не выкидывать сразу старый код, а все новое надо делать в режиме WP/WinRT 8.1.
        • 0
          Стало интересно чем так хорош SwapChainBackgroundPanel?
          • 0
            Это XAML компонент для вывода Direct3D графики. Он с одной стороны обычный Grid, с обычными ивентами, свойствами, может содержать дочерние контролы и пр., а с другой на него отрисовывается любая 3D/2D графика. Мощное решение, если надо совмещать две технологии.
            Еще мощнее его следующая версия SwapChainPanel — эту панель можно размещать в любом месте иерархии, например, внутри ScrollView, применять к ней трансформации, повороты и пр.
            • 0
              А чем не устраивают DrawingSurface и DrawingSurfaceBackgroundGrid? Интересуюсь не из пустого интереса, действительно интересно, так как я не специалист в 3D но сейчас использую их для описанных целей.
              • 0
                Не устраивают сложностью переделки готового C++ кода для WinRT, который использует DXGI Swap Chain, а заодно и CoreWindow, недоступные в Silverlight. А раз Silverlight API де-факто становится deprecated, то и смысла особого нет.
    • 0
      channel9.msdn.com/Events/Build/2014/2-517 тут рассказывается что нового в SL 8.1 API
  • 0
    Скажите, есть ли возможность как-то сохранить версию приложения для WP7/8 пользователей и одновременно иметь версию для WP8.1?
    • 0
      Во время публикации WP8.1 приложения выбирайте не заменить пакет, а добавить новый.
      • 0
        Спасибо!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка