Development z Zapomnianej Strony

..:: Paweł Hofman .NET Portal ::..

Dzisiaj moja gra na PlayBooka przeszła pomyślnie certyfikację i jest oficjalnie do pobrania ze sklepu BlackBerry AppWorld.

Zasady są proste. Układamy 5 kulek w tym samym kolorze w linii, pod dowolnym kątem. Dodatkowe bonusy punktowe przyznawane są za zamiatanie linii seriami pod rząd, przemieszczając przy tym kolejno tylko jedną kulkę.

Wciągająca zabawa gwarantowana!

Zachęcam do pobierania tutaj.



Adobe wprowadziło własną obsługę formatu JSON w wersji AIR 3.0+. Udostępniona została ona poprzez obiekt JSON z głównej przestrzeni nazw (z metodami parse() oraz stringify()). Co ciekawe na PlayBooku używa ona natywnego kodu, przez co jest dużo wydajniejsza od jakiejkolwiek biblioteki napisanej w ActionScript przez kogoś w sieci!

Jeśli jednak zbudujemy projekt w FlashDevelop IDE, tak jak to opisałem wcześniej, to wszystko będzie super działało w środowisku testowym na Windowsie. Jednak przy próbie uruchomienia na urządzeniu (tj. PlayBooku z OS 2.0.1, AIR w wersji 3.1.0.38 i Flash Player w wersji 11.1.121.38), dostaniemy w prezencie piękny błąd wykonania:

ReferenceError: Error #1065: Variable JSON is not defined.

Dlaczego? Przecież wszystko jest na swoim miejscu. Niby tak, ale ciągle nie wymusiliśmy uruchomienia naszej aplikacji w AIR 3+ (czy to Flash Player 11+). Aby to poprawić, należy dodać do opcji kompilatora informacje, że korzystamy z wersji SWF 13. We właściwościach projektu w polu Additional Compiler Options wpisujemy:

-swf-version=13

Compiler_Options

I tak to właśnie działa!



Jak zrobić zrzut aktualnego ekranu na PlayBooku? Można oczywiście aparatem ;), ale jak uzyskać coś w oryginalnej rozdzielczości?

Wciśnij przyciski Volume+ i Volume- jednocześnie. A plik zostanie zapisany pośród innych utworzonych zdjęć na rolce aparatu. Niestety nie zostanie odegrany żaden dźwięk ani animacja w tym momencie, sygnalizująca wykonanie tej operacji.

Następnie używając QNX Momentics IDE i widoku Target File System Navigator, otwieramy folder, w którym obrazki te się znajdują:

    wifi:/accounts/1000/shared/camera/

i możemy je przegrać na swoją maszynę.



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)

FlashDevelop

  • 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_Template

  • 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!

MyTestApp_Install

  • 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…

PlayBook_MyAirTest

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!’



Gdy w końcu przyjdzie pora, że podczas zabawy z QNX i SDK dla BlackBerry Playbook zostaniemy sam sam z plikiem .bar (lub nie daj Boże!) dostaniemy go od zaprzyjaźnionego dewelopera, to istnieje bardzo prosty sposób, aby ten plik umieścić na urządzeniu. Wystarczy wykonać polecenie:

blackberry-deploy -installApp -device <IP urządzenia> -package <ścieżka do pliku BAR> -password <hasło urządzenia>

A co najlepsze, wszystko to możemy zrobić bez fizycznego podłączania urządzenia do komputera, jeśli poprawnie skonfigurowaliśmy swoje konto dewelopera i mamy możliwość wgrywania zdalnie po WiFi.


Autor

Paweł Hofman [CodeTitans]

ASP.NET
C/C++, C#, Objective-C
SQL

License and Disclaimer

Moje Gry i Aplikacje

Zobacz mnie na GoldenLine

Zobacz mnie na LinkedIn
Supported by Polish SQL Server User Group (PLSSUG)

Supported by WrocNet.org

Zine.net.pl

Wpisy

Projekty

Moje projekty open-source:

Sign in