Kterak statečný fil na divokém .NET Compact Framework řádil

Pivkem křtěná sobotní diskuse s hp-ux geekem Lukášem V. ohledně výhod Symbianu oproti Windows Mobile u mě umocnila chuť, napsat si vlastní Today Screen (úvodní obrazovka na Pocket PC/Smartphone) plugin pro MDA Compact. Měl by umět přečíst aktuální počasí (nekřičte, vím že jich existuje tuna), TV, zprávy z theserverside, zobrazit stav mojích serverů a v neposlední řadě bude obsahovat click’n’call Skype link na největšího geeka pod sluncem – dagiho (to máš za tu pračku, hade ;)). Hlavní motivací ale bylo, vyzkoušet si vývoj pro Pocket PC na něčem složitějším.

První zádrhel nastal při hledaní dokumentace – jelikož jsem se rozhodl plugin programovat v C#, nebylo tak jednoduché přijít NATO jak na to. Řada stránek mne zrazovala, že prý to nejde. Today Plugin totiž z historických důvodů vyžaduje přítomnost nativního C++ dll. Nakonec jsem na msdn našel tento zajímavý a pro mě velice hodnotný dokument. Ten popisuje hack, při kterém povinné dll poskytuje 2 hooky – první pro inicializaci pluginu a druhý pro obsluhu uživatelských požadavků. Tyto pak mohou být naprogramovány v .NET CF. Stránka obsahuje i vlastní zdrojáky, takže mi nic nebránilo začít.

Dalším oříškem bylo najít správné nástroje – ve stojánku v koutě místnosti jsem našel zaprášené CD s Embedded Visual C++ 3.0 a ihned jsem ho nainstaloval. Tedy ne ihned – instalace zabere časově asi tolik, co instalace weblogicu a oraclu dohromady. Při dialogu “Registrace komponent” dostavám pravidelně, při představě prováděných prasárniček, osypky. Následný build proběhl úspěšně, jen activesyncu se nějak nedařilo provést release na MDA. Proto jsem neváhal a následně si stáhl eVC 4.0 a Pocket PC 2003 (ten už je krytý genuine windows checkem – toto bylo mé první setkání s ním). Poučen z délky trvání předchozí instalace, obrnil jsem se náležitě trpělivostí a uhrančivě sledoval líně se posunující progress bar.

Po nainstalování jsem zbuildil pro ARMV4 a úspěšně releasnul na MDA. Huráá, čas na chvilku Enemy Territory a po jedné velice krvavé Oasis (jsem stale owner :)) zpátky ke strojům. Tentokráte ke kompilaci managed části Today Pluginu. Ta sestává navíc z pluginu do Visual Studia .NET pro budoucí snadné vytváření Today Screen pluginu. Doufám, že se vám taky, stejně jako mne, už ze slova plugin dělá špatně. 🙂

No abych to dlouho neprodlužoval, Today Screen plugin (ale teď už asi opravdu vrhnu) jsem zbuildil včetně veškerého supportu pro VS .NET a instalačního cabu unmanaged části. Release na MDA se také povedl, na úvodní stránce se skví překrásně odporný html pásek s linkama na skeletony budoucích pluginů.

Nyní mě čeká další fáze boje – místo html stránky by tam měla být bitmapa z pozadí + ikonky. No snad to dám, uvidime. Mám z toho trochu respect, neb jsem se vydal na divoke unmanaged vody C++, ze kterých má každý jezerní java veslař zákonitě strach. Určitě zde dám vědět, zda se preze mne nepřehnala konečná, devátá – pointerová – vlna.

Tento příspěvěk nechť slouží zároveň jako varovaní pro ty, kdo si myslí, že .NET CF už je dál než J2ME. Není a bez C++ se při implementaci zajímavých veciček neobejdete.