vývoj na Windows 10 mobile Jan Koběrský kobersky@avast.com Co nás dneska čeká 1 Historie Windows na mobilech 2 Universal Windows Platform 3 Technologie a možnosti platformy 4 Tvorba Windows mobile aplikace 5 Demo 6 App reverse engineering Historie Windows na mobilech Windows Mobile - ty první ■2000-2010, poslední verze 6.5 ■postaveno na Windows CE ■42% podíl na trhu v roce 2007 -pocket PC 2000, 2002,windows mobile 2003, 5, 6, 6.1, 6.5 -2007 – 42% of market share (start iphonu) -2010 7% -C++, .NET, Python -vyvoj zacal jiz v roce 1990 Then this happened Windows Phone 7.X ■2010-2012, poslední verze 7.8 ■postaveno Windows CE ■bez aktualizace na WP8 :-( ■3.1% v roce 2012 ■aplikace kompatibilní do dnes Windows Phone 8.X ■2012-2017 ■postaveno na Windows NT ■3 možnosti vývoje ■sdílení kódu ■30% - 90% API konvergence ■universal apps? Windows 10 mobile ■2015-??? ■aplikace jsou konečně univerzální ■responzivní UI ■continuum ■pokračuje v trendu 8.1 XAML 15min Podíl na trhu - poznej svého zákazníka ■USA 3%, EU5 10%, Rusko 11,5% ■konzervativní uživatelé ■“běžní uživatelé” ■“mrtví uživatelé” Podíl zařízení - poznej svého zákazníka ■téměř 70% lowendy MSFT (520, 640,...) ■optimalizovat pro lowendy Universal Windows Platform Windows 10 Universal Apps 15min Sjednocení systému 15min Universal Windows Platform ■jednotné a garantované API ■nezáleží na zařízení ■necílí se na verzi systému, ale na verzi platformy ■uwp verze není závislá na verzi Windows ■aplikace specifikuje min a max(testovanou) verzi uwp Platform extensions Platform extensions Technologie a možnosti platformy Co potřebuju pro vývoj ■Windows 10 (lze emulovat) ■Visual Studio (dostupné verze zdarma) ■SDK ■Hyper-V Co mě může brzdit ■špatná analýza ■životní cyklus aplikace ■standartní komponenty ■omezení API ■nepřečetl jsem si dokumentaci Na čem můžu vydělat ■placená aplikace ■in-app nákup ■trial ■reklamy ■nechat se najmout a nestarat se :) Windows 10 (mobile) 15min Hello Windows Mobile Appx manifest ■popisuje aplikaci pro store metadaty ■capabilities - žádejte jenom to, co potřebujete ■ikonky ve správném rozlišení jsou důležité ■jednoduché XML + editor XAML ■Extensible Application Markup Language ■značkovací jazyk pro tvorbu UI ■velmi podobný HTML ■vyvíjen microsoftem ■vše co vytvoříte z XAML, vytvoříte i v C# (*) ■x:name - proměné dostupné z C# Page - obrazovka aplikace ■partial třída - C# a generovaný kód z XAML ■reprezentuje jednu obrazovku aplikace ■stará se o navigaci ■preferovaná rotace - DisplayInformation ■AppBar součástí stránky ■StatusBar není součástí stránky AppBar StatusBar Navigace ■skrze property Frame na stránce ■události –OnNavigatedTo –OnNavigatedFrom –OnNavigatingFrom ■cachování - NavigationCacheMode ■Parameter - OnNavigatingTo args UserControl ■custom control ■podobný stránce ■vhodný pro opakované designové patterny s malými odlišnostmi Události - events ■reagování na změny v UI ■UIElement a jiné komponenty - mnoho předdefinovaných ■možnost vytvořit své vlastní Nejpoužívanější komponenty ■Grid - tabulkový layout –sloupce a řádky –odlišný přístup od HTML - speciální attributy ■StackPanel - obdoba StackView v iOS –řadí potomky jednoho za druhým –horizontální a vertikální Nejpoužívanější komponenty ■ListView - dynamicky generovaný seznam –použití šablon a selectorů –bindování kolekcí ■ItemsControl - podobný ListView –bez scrollu –bez recyklace buňek Šablony a styly ■pro velmi jednoduché znovupoužití ■CSS na speedu - dědičnost, výpočty ■šablony - opakující se bloky UI bez vlastní logiky ■mnoho výchozích stzlů a šablon ■Blend - nástroj pro designéry Selectors ■podmíněné výběry šablon ■vhodné pro seznamy s více variantami buňek Binding ■propagace datového modelu do UI ■základ MVVM ■oddělení logiky a UI Value converters ■transformují data modelu do UI –např. bool na černá/bílá ■znovupoužitelná ■fungují: –jednou –jedním směrem –dvěma směry Best practices & demo Model-View-ViewModel architectural pattern for software development Co je a není MVVM ■MVVM je –variací Fowlerova prezentačního modelu –založeno na MVC –vyvíjenom Microsoftem –postaveno na Bindingu a Commandech ■MVVM není –framework –jenom v .NETu (Java, Javascript, Cocoa) M,V,VM ■MODEL je vrstva (služba), poskytující data –například objekt pskytující data z databáze ■VIEW - UI ■VIEWMODEL –business logika mezi daty a UI –poskytuje data UI a reaguje na volání UI Implementace MVVM ViewModel je třída, která poskytuje properties pro UI, reaguje na UI a implementuje interface IPropertyChanged Frameworky Caliburn Micro, MVVM Light, … Použití frameworku nemusí být vždy vhodné. Hello Windows Mobile 2 MVVM http://kobersky.eu/muni/ Reverse Engineering 44 - Avast Confidential - vývoj na Windows 10 mobile Děkuji za pozornost Jan Koběrský kobersky@avast.com