Coding with Titans

so breaking things happens constantly, but never on purpose

AIR development dla BlackBerry PlayBook 2.0

Niestety do tej pory nie ukazała się, żadna publiczna wersja frameworka graficznego Cascades na PlayBooka. Czy to oznacza, że nie można łatwo tworzyć aplikacji graficznych na ten tablet?

Otóż nie! Jest to najbardziej otwarta platforma, z jaką miałem do czynienia pracować i gorąco zachęcam do zabawy z nią! Posiada (oprócz oczywiście Androida) pełne wsparcie dla technologii Flash! I co ciekawe, co pokażę dalej, programy można tworzyć, łatwo, szybko i przyjemnie, a wyglądają one przy tym jak te natywne. Co najważniejsze, wszystko to ZA DARMO!

Czego potrzebujemy? (zalecam instalację w podanej kolejności):

  • Przede wszystkim PlayBooka (lub symulatora, do pobrania tutaj), na którym będziemy się bawić.
  • Adobe Flex 4.6 SDK
  • PlayBook NDK 2.0 SDK
  • PlayBook AIR 2.0 SDK (wskazujemy lokalizację Flex 4.6)
  • FlashDevelop 4.0.1 (w ustawieniach projektu dodajemy lokalizację AIR 2.0 oraz Flex 4.6 SDK, tak aby AIR, było domyślnym; Tools —> Program Settings –> AS3Context –> Installed Flex SDKs)

    Flash Develop

  • BlackBerry Tablet OS Template dla FlashDevelop (instalacja polega na wypakowaniu wszystkiego do folderu: C:\Program Files\FlashDevelop\Projects). Szablon ten wymagał niestety kilku poprawek, które zaraz opiszę, ale lepsze to, niż pisać wszystko od zera. Teraz przynajmniej, tworząc nowy projekt dostaniemy wszystko, aby szybko utworzyć pierwszą aplikację.

  • I na dokładkę coś, co po prostu umili życie oraz deployment. Instalujemy FriutBat 1.4. Na jego stronie znajduje się też mały przewodnik o tym, co jak i gdzie. Jedyne, co jest istotne to znowu, lokalizacje SDK oraz adres IP urządzenia i hasło do niego.

    FruitBat Settings

Trochę tytułem wstępu – na co dzień używam NDK 2.0 do pracy z kodem w C/C++ i dystrybuowanego razem z nim QNX Momentics IDE. W nim też mam skonfigurowane wszystkie potrzebne klucze (P12, CSJ, CSK…), debug-token itp. Dlatego ten etap pominę ;) Na tej stronie zainteresowani znajdą wszystko.

Tak naprawdę to wystarczy to zrobić RAZ, z automatu przy pomocy czarodzieja (wizzarda) z Momentics’a (nie to co w poprzedniej wersji SDK, która wymagała rejestracji w Internecie, i wymiany emaili z RIMem, która trwała kilka godzin!) i włączyć tryb developerski na urządzeniu i oczywiście zapomnieć (na jakiś czas, aż klucze nie wygasną :D). W dodatku dla wygody, FriutBat również odnajduje te klucze w ich domyślnych lokalizacjach i nie musimy tego tam ustawiać.

Jeszcze końcowa uwaga, zanim przejdziemy do mięska – wszystkie te narzędzia, które wymieniłem po liście SDK, nie są oficjalnie wspierane przez RIM, a przez grono programistów, którym się nudzi po godzinach. Mimo to wszystko działa w jak najlepszym porządku i nie spotkałem się z jakimikolwiek problemami.

Jeśli nie chcesz stosować tych sztuczek, to po prostu kup Adobe Flash Buildera, a wszystko skonfiguruje się samo.


Moja pierwsza aplikacja!

  • Uruchamiamy FlashBuildera i tworzymy nowy projekt (Project –> New Project) w oparciu o szablon Air BlackBerry Playbook. Nazwijmy go “MyAirTest”.

    MyAirTest

  • Próba kompilacji zakończy się błędem:

    Error: a target file must be specified
    Use 'mxmlc -help' for information about using the command line.

    Rozwiązanie: w oknie “Project”, naciskamy PPM na pliku MyAirTest.as i wybieramy opcję “Set Document Class”.

  • Kolejny błąd, choć tym razem inny:

    MyAirTest\src\MyAirTest.as: Error: A file found in a source-path 'MyAirTest' must have the same name as the class definition inside the file 'Main'.

    Rozwiązanie: Szablon źle nazywa główną klasę (tzn. Main), a powinna ona nazywa się tak samo jak plik, w którym się znajduje.

  • Otwórzmy może oryginalną dokumentację i spróbujmy skopiować przykładowy program autorów PlayBooka (pamiętajmy o nazwie głównej klasy, aby zmienić ją na MyAirTest).

  • Kompilacja powinna się udać.

  • Przeciągamy plik application.xml z katalogu ‘bin’ naszej aplikacji na okno aplikacji FruitBat. Automatycznie wczyta on wszystko o naszym programie i powinniśmy być gotowi do instalacji na urządzeniu! Brawo!

    Instalacja

  • Ale nie tak szybko, bo oto kolejne problemy:

    Error 305: Initial window content SWF version 11 exceeds namespace version http://ns.adobe.com/air/application/2.5
  • A zatem w application.xml zmieniamy spodziewaną wersję SDK z 2.5 na 2.6 (lub wyższą), poprzez zmianę na “http://ns.adobe.com/air/application/2.6".

  • Poprawmy od razu informacje o naszym podpisie. W pliku blackberry-tablet.xml wpisujemy odpowiednie informacje w tagach “authorId” oraz “author”. Muszą być one zgodne z debug-toknem, który wgraliśmy na urządzenie!

  • I wgrywamy wszystko FruitBatem (utworzy on podpisany plik *.bar) i używając połączenia WiFi lub USB (zależnie od podanego adresu IP urządzania) i automatycznie je uruchomi.

    I oto cała tajemnica… Aplikacja


Moja druga aplikacja!

Cóż, w tym momencie nie pozostaje nic innego jak tylko uczyć się Action Script 3. Ciekawsze przykłady – a mianowicie jak utworzyć menu, zakładki, wyszukiwanie itp. znajdują się na portalu blackberry.github.com. Pociąga to za sobą jedną niedogodność – trzeba samemu ręcznie utworzyć pliki projektów zgodne z FlashDevelop (bazując na tych z Flash Buildera). Nie jest to bynajmniej nic trudnego, a bardziej nudne zajęcie.

Jedna podpowiedź – brakujące pliki swc z referencjami głównie do klas QNX znajdują sie tutaj:

C:\Program Files\Research In Motion\blackberry-tablet-sdk-2.0.0\frameworks\libs

W FlashDevelop, zakładka “Project”, PPM na dowolnym katalogu i Add –> Existing File … –> wybieramy np. qnx-screen.swc. A już po samym dodaniu go, naciskamy na nim PPM i wybieramy opcję “Add To Library”, co spowoduje, że nazwa zmieni się na niebieską.


Co dalej?

Wszystko ;) Własne aplikacje, publikacja, natywne rozszerzenia, aby mieć dostęp do natywnego kodu… jednym słowem – “why do I climb a mount? because I am in love!”