Занурюємося у Windows 10 Mobile

Зміст статті
Огляд архітектури
Завдяки спільному ядру та системі виконання додатків UWP одного разу написаний додаток працюватиме на всіх девайсах під керуванням Windows 10. До цього діапазону входять:
Список значний. Крім того, UWP не обмежується виконанням прикладних програм, також вона на ядерному рівні підтримує роботу драйверів. Це дозволяє створювати драйвери, які функціонують на різних пристроях, за умови, що конкретний компонент, для якого призначений даний драйвер, той самий.
UWP підтримує драйвери як рівня ядра, так і рівня користувача. Підсистема включає інтерфейси драйверів пристроїв (Device Driver Interface - DDI), серед яких драйвер для UWP може використовувати.
Але це все не позбавляє розробника від припасування інтерфейсу під певні платформи та дозволу екрану. У якихось особливих випадках, можливо, це не знадобиться.
Інструменти розробника
Для написання, налагодження, розгортання та тестування програм під Windows 10 Mobile тобі знадобиться Visual Studio 2015 (хто би сумнівався). Цього літа вийшов третій апдейт. Категорично рекомендую! Основний його багфікс - це зменшене споживання пам'яті в порівнянні з другим апдейтом.
Також тобі знадобиться Windows 10 Anniversary Update SDK: він включає всі необхідні інструменти для розробки додатків під весь парк пристроїв, що працюють на Windows 10. Якщо ж використовується VS 2015 з третім оновленням, тоді в неї вже входить новітній SDK.
Одне з головних новацій - це чорнило Windows (Windows Ink). За допомогою цього API можна двома рядками кодудодати підтримку пера. Для цього існують два об'єкти управління: InkCanvas та InkToolbar.
Новий Cortana API полегшує реалізацію управління голосом. Компонент Cortana Actions у новому API дозволяє створювати нові фрази/вирази.
Біометрична автентифікація Windows Hello тепер стала доступною для веб-розробників у браузері Edge.
Засіб для моделювання інтерфейсів користувача Blend for Visual Studio 2015 надає розширені можливості побудови інтерфейсу в порівнянні з VS. З його допомогою на мові XAML можна створювати макети всіх програм, що підтримуються: прикладних, веб, універсальних, мобільних і так далі. Також він містить конструктори для додаткових завдань, серед них створення анімації та управління поведінкою елементів.
Способи створення програм для Windows 10 Mobile
Однак він не єдиний. Як ти знаєш, у Visual Studio 2015 вбудований Xamarin, за його допомогою також можна створювати програми для Windows 10 Mobile, одночасно для Android та iOS, змінюючи інтерфейс та залишаючи програмну логіку на C# (Visual C# → Cross-Platform).
Інструменти для роботи з успадкованими проектами
За довгу історію операційної системи Windows для неї було створено колосальну кількість різних додатків. З виходом Windows 8 і WinRT (а пізніше Windows 10 і UWP) старі класичні програми залишилися в минулому, оскільки тільки в настільних Win 8 та Win 10 підтримуються класичні Win32-, COM-, .NET-програми. Від цього Microsoft стало сумно. Але хлопці збагнули, що можуть розробити конвертер, який перетворюватиме старі програми для нової просунутої UWP-підсистеми. Із цього народивсяDesktop App Converter.
Завантажити його можна звідси. Поточний стан продуктуПопередня версія. Вже зараз він дозволяє перетворювати класичні програми, написані для Win32 і .NET 4.6.1, в програми для платформи UWP.
Перетворена програма зберігає функціональність предка плюс набуває можливості UWP-додатків: зручну установку, оновлення, видалення. Також воно отримує інші засоби сучасних Windows-програм: push-сповіщення, живі плитки, здатність виконуватися як фонове завдання, широкий діапазон контрактів. Одна з найпривабливіших можливостей – це продаж успадкованих програм у Windows Store.
Desktop App Converter є програмою з інтерфейсом командного рядка. На вході воно отримує: шлях до дистрибутива програми, який планується перетворити, шлях до файлу-результату і шлях до файлу - образу системи. Останній буде використаний для чистої установки конвертованої програми.
На виході Desktop App Converter видає каталог з усім встановленим при інсталяції стаффом і два файли: маніфест та файл реєстрації програми. Після цього за допомогою іншого тулзи командного рядка з утвореного контенту створюється файл UWP-додатка AppX. Потім цю програму можна встановити в операційну систему і користуватися нею, як будь-яким іншим універсальним додатком, у тому числі на Windows 10 Mobile.
Після цього хлопці з Microsoft подумали: для iOS є безліч крутих мобільних додатків, було б непогано дати розробникам запиляти їх під нашу мобільну вісь. Так з'явився проект з відкритим кодом Windows Bridge for iOS.
Перетворення Xcode-проекту виконується за два кроки. Спочатку треба додати підсвічування синтаксису мови Objective-C у Visual Studio: встановити розширення objc-syntax-highlighting.vsix із папки winobjc\bin.Потім за допомогою утиліти командного рядка vsimporter.exe треба перетворити проект на Xcode на проект на VS. Після цього отриманий sln файл можна відкрити в студії, де синтаксис Objective-C буде підсвічений. Можеш побудувати та запустити програму, вона буде виконуватися так само, як усі інші Windows-програми.

Побий мене грім, як це дивно - бачити в Visual Studio коректно підсвічений код Objective-C!
Для компіляції коду Obj-C використовується вільний компіляторClang. Оскільки на виході виходить стандартна програма UWP, її можна запустити на мобільному пристрої в середовищі Windows 10 Mobile. В одній програмі може бути код C++ і на Obj-C.
Якщо у тебе є проект для попередньої версії Windows Phone, тобто 8.1 (або 8.0), то коли ти його відкриєш у VS 2015, студія автоматично оновить проект, щоб він відповідав вимогам універсальної програми Windows (UWP). Буде перетворена не тільки розмітка інтерфейсу користувача на XAML, але і разом з нею програмна логіка на JS/C++/C#/VB. Якщо в коді були виклики підсистеми WinRT, вони будуть перетворені на виклики UWP.
Є ще поширений тип додатків – ігри. iOS та Android візуалізують за допомогою низькорівневого інтерфейсу OpenGL. З іншого боку, на Windows 10 Mobile для виведення зображення в іграх використовується DirectX 11. Виходить несумісність. Але є рішення – відкритий проект ANGLE. ANGLE (Almost Native Graphics Layer Engine) – движок майже нативного графічного шару – дозволяє користувачам Windows безшовно запускати OpenGL ES програми на апаратурі, що працює з DirectX 11. Це досягається шляхом перетворення викликів з OpenGL ES API на DirectX 11 API. ANGLE повністюпідтримує такі три типи додатків:
- універсальні програми для Windows 10 (Universal Windows apps);
- програми для Windows 8.1 та Windows Phone 8.1;
- класичні програми для робочого столу Windows (Windows desktop applications).
Докладніше питання розглядається в моїй книзі «Чарівність моменту обертання» (знову ти книгу свою піариш! Ну лаадно, заслужив. — Прим. ред.).