środa, 21 października 2009

Kompilator ARM RVCT 4.0 for Symbian Foundation

W SDK przeważnie mamy pliki dla 2 kompilatorów GCCE i dla ARM RVCT 4.0 Ponieważ są pewne ograniczenia kompilatora GCCE do większych projektów warto używać kompilatora ARM RVCT. Od pewnego czasu jest coraz więcej dużych projektów OpenSource które są przenoszone na platformę Symbiana. Klasycznym przykładem jest projekt Qt 4.6 for Symbian, ale co z tego że zawiera kod źródłowy w repozytorium Git to jednak do kompilacji binarnej na komórkę jest potrzebny kompilator ARM RVCT który kompiluje wydajniej pod architekturę EKA2.

Ze względu na to że fundacja Symbian staje się być bardziej przyjazną programistom to postanowiono udostępnić kompilator ARM RVCT sporej rzeczy programistów OpenSource.

Instrukcja instalacji kompilatora
1. Wchodzimy na tą stronę https://silver.arm.com/login/
2. Rejestrujemy się
3. Gdy otrzymamy maila z potwierdzeniem rejestracji - logujemy się
4. Klikamy w link - "RVCT 4.0 for Symbian" download
5. Akceptujemy warunki licencji - wersja ta jest ograniczona tylko dla pojedynczych programistów pracujących w małych firmach zatrudniających do 20 osób
6. Pozostaje podanie numeru telefonu i podanie numeru karty Ethernet ( dla nie wtajemniczonych w wystarczy z linii poleceń wpisać "ipconfig /all" i szukamy adresu fizycznego "Karty Ethernet połączenia lokalne" i wpisujemy 12 znaków bez '-')
7. Pojawi się tekst pliku licencji i zapisujemy go na Pulpicie (albo tam gdzie go możecie potem znaleźć)
8. Rozpoczyna się ściąganie pliku zip 76MB
9. Wypakowujemy to w tymczasowym miejscu i uruchamiamy plik Setup.exe
10. Ustawiamy instalację na !:\Symbian\ARM (gdzie ! oznacza literę dysku w moim przypadku to było E:\Symbian\ARM
11. Pod koniec instalacji pojawi się ARM License Wizard i klikamy w Install Licence
12. Uruchomi się okno w którym klikamy Add i dodajemy plik licence.dat
13. Zamykamy instalatora

Okazało się że kompilator zainstalował się w E:\Program Files\ARM, ale okazało się że to nie działa tak jak bym oczekiwał. I raczej nie zanosi się z powodu zmian w architekturze.

Larry Knibb napisał

Apologies for the confusion. SBSv1 (abld) is __not__ being updated for RVCT4.
The reason is that this functionality is already available in SBSv2 (Raptor).
Abld is due for deprecation soon so we are not adding major functionality to
it. Raptor replaces abld as the build system for Symbian OS, so new
functionality will appear in Raptor only.

Coś mi się zastanawia że kolejne SDK i wersje Symbiana już nie będą zgodne z poprzednikami na poziomie binarnym (pomimo architektury EKA2), ale prawdopodobnie kod pozostanie ten sam pod kątem wykorzystania API Symbiana.

W razie czego też można by postarać się o nowszą wersję kompilatora GCCE zamiast czekać na SDK dla modeli z Symbian^2 i Symbian^3 Natomiast Symbian^4 to już zupełnie inna architektura sprzętowa i jak API tutaj trzeba już programować w Qt

niedziela, 18 października 2009

Pierwsze kroki w Carbide C++

Od pewnego czasu obserwuję bardzo dużą popularność wśród programistów potrzebę programowania na Windows Mobile czy Androida i co najciekawsze na iPhone. Główny sukces tkwi w tym że programiści otrzymują potężne środowisko IDE, dzięki któremu projektant przed klientem szybko zrobi najpierw prototyp interfejsu użytkownika, designer zadba o kolorystykę i grafikę oraz zwróci uwagę na problemy z interakcją i wtedy do wszystko trafia w tym samym IDE do programisty który ma sprawić żeby to działało. Oznacza to że tak naprawdę programujemy na końcu. Programowanie na Symbiana jest bliższe programowaniu systemów operacyjnych czy gier. W tych przypadkach trzeba najpierw poznać abstrakcję czyli frameworki czy silnik gry oraz zapoznać się z API. Powoduje to pewne problemy z realizacją projektów. Zazwyczaj projektant musi znać frameworka UI czy silnik gry, żeby nie obiecywać czegoś co nie da się szybko zrobić. Specjalista od użyteczności też musi znać niuanse doświadczenia użytkowników z urządzeniami mobilnymi, bo często jest tak że wersja dotykowa na S60 5th powinna być inna niż ta z S60 3rd. Zaplanowanie i zaprojektowanie na Symbiana nie jest takie trywialne jak w przypadku jak się programuje pod IDE w trybie designera (w VisualStudio czy XCode) dla innych platform mobilnych. Jedno jest teraz pewne większość ludzi chce naukę programowania rozpoczynać nie od nauki programowania frameworka czy silnika gry tylko od zaprojektowania interfejsu użytkownika swojej aplikacji w designerze IDE. Nic nie poradzę na to, że ludzie szukają takiego sposobu nauki. Większość autorów książek dla początkujących poleca naukę od używania designera IDE dopiero potem przechodzą do tłumaczenia dlaczego tak zrobili, a teorię i API zostawiają na końcu. Skutkiem tego jest że ci którzy teraz się uczyli z książek programowania tak naprawdę zostają projektantami interfejsu aplikacji. Mała popularność programowania na Symbiana wynika z tego że najpierw trzeba poznać teorię (budowę frameworka AVKON, idomy Symbiana C++) a dopiero potem zmagać się z projektowaniem w IDE Carbide C++. Po części to wynika z tego że trzeba sporo czasu włożyć w przygotowanie środowiska pracy i instalowanie SDKów. Inny powód jest też taki że trzeba lubić C++, że zechcieć programować pod Symbianem profesjonalnie. Istotnym powodem dla którego ludzie zniechęcają się jest brak szerokiego wsparcia dla początkujących. Prawie wszystkie książki jakie napisano dla programistów Symbiana C++ są napisane jakby w stylu akademickim. I zakładają że wcześniej już cokolwiek programowałeś na Symbiana. Sporo piszą o API a za mało przykładów (jak przykłady są, to już jakby dla profesjonalistów). Przykładem dobrych książek dla początkujących tylko że dla programujących w Java Mobile są książki: J2ME Tworzenie gier Janusza Grzyba czy J2ME Praktyczne projekty Krzysztofa Rychlickiego-Kiciora. Tego czego brakuje dla początkujących to przepisu jak zrobić na szybko projekt aplikacji w Carbide C++. Zakładam że czytelnik ma skonfigurowane SDK i wie jak z linii poleceń korzystać przy kompilacji. Klienci czasami są wybredni i projekt aplikacji trzeba zrobić już tak szybko jak to się da.

Uruchamiamy Carbide C++ 2.0



Wybieramy z menu File -> New -> Symbian OS C++ Project



Pojawi się okienko kreatora Select type of project Wybieramy z węzła S60 GUI Application with UI Designer.





Pojawi się kolejne okno kreatora New Symbian OS C++ Project w którym trzeba podać nazwę projektu (nie może zawierać spacji, ani zaczynać się od liczby, ani zawierać polskich znaków). Należy też podać ścieżkę do folderu gdzie ma być projekt. I znowu w ścieżce projektu nie powinno być spacji. Nazwiemy projekt NaszProjekt Klikamy Next.



Pojawi się okno kreatora Symbian OS SDKs - Trzeba wybrać jaką wersję będziemy robić. Z węzła S60_5th_Edition_SDK_v10 zaznaczamy Emulator Debug (WINSCW). Klikamy Next




Pojawia się okno kreatora Application Properties gdzie zmieniamy Initial Languages z listy rozwijanej na Polish (27) Klikamy Next.



Pojawi się okno kreatora S60 UI Design Selection. Wybieramy Empty co oznacza że mamy większy wpływ na to co tam się pojawi. Klikamy Next.




Pojawi się okno kreatora Container Name and Type. Tutaj chodzi o to, że trzeba nazwać naszą klasę która będzie zawierała UI naszej aplikacji, czyli jest kontrolką widoku View a pochodną od klasy bazowej CCoeControl. Warto zaznaczyć, że trzeba wygenerować kod który będzie obsługiwał przełączanie się pomiędzy widokami aplikacji zaznaczając Support view switching. Klikamy Next.



Pojawi się okno kreatora Basic Setting które pokazuje wygenerowany identyfikator aplikacji. Klikamy Next



Pojawia się okno kreatora Project Directories który informuje nas jakie foldery w projekcie utworzy Klikamy Finish




Zostanie nam otworzone okno Projektu. Niektórym może okazać się że nic nie zobaczą. W tej sytuacji trzeba użyć z menu Window -> Show View -> Project Explorer a potem jeszcze raz Window -> Open Perspective -> Other. Pojawi się okno wyboru perspektywy i wybieramy Carbide C/C++ (default).





Trzeba się upewnić czy aplikacja będzie zapisywać naszą pracę w UTF-8. Z menu wybieramy Project -> Properties Pojawi się okno i ustawiamy Text file encoding na UTF-8 Klikamy Apply a potem OK




Zmienimy tytuł aplikacji z NaszProjektContainter na Nasz Projekt. Otóż klikamy na napis NaszProjektContainter z menu podręcznego wybieramy Show Properties View.


Pojawi się na dole zakładka Properties i weżle Data mamy właściwość title i wpisujemy tam jako Value:Nasz Projekt



Kolejnym krokiem będzie pokazanie jak dodać pozycję menu Klikamy w ikonkę optionMenu Pojawi się na projekcie Type here klikamy w to i wpisujemy ShowMe.



Robię to tak dlatego że nazwa ShowMe pojawi się w kodzie jako nazwa pewnych funkcji.
Nie polecam w momencie gdy coś wpisujemy w projekcie Designu używania polskich znaków zawsze je potem można zmienić z poziomu Show Properties View.




Zmienimy teraz to na Pokaż mnie. W zakładce Properties w węźle Appearance mamy Property text to ustawiamy to na Pokaż mnie.


Teraz zostało nam obsłużenie zdarzenia w momencie jak użytkownik kliknie na w menu na Pokaż mnie. Nad tekstem Pokaż mnie wywołujemy z menu podręcznego Handle Selected Event



Pojawi się okienko z monitem o zapisanie projektu



Potem pojawi się okno z kodem źródłowym



Tam gdzie mamy kursor to wpisujemy taki kod w następnej linijce iEikonEnv->AlertWin(_L("Witaj świecie !"));


Zapisujemy projekt wystarczy wcisnąć CTRL+S

Następnie wystarczy uruchomić w emulatorze. Z menu wybieramy Run ->Run (albo wciskamy CTRL+F11)


Klikamy Finish

Po paru minutach mnie wyszło po 5 minutach otwiera się emulator z programem który prze chwilą stworzyliśmy.



Wybieramy z menu Pokaż Mnie to emulator wyświetli komunikat bez polskich znaków tylko z jakimiś kwadracikami - Witaj świecie! Jest taka cecha przy programowaniu Symbiana że w kodzie raczej nie umieszczamy wyrażeń tylko w plikach zasobów (tym razem zrobiłem wyjątek).



Pokazuje tez że sporo plików zostało wygenerowanych przez Carbide.C++ na zrobienie szkieletu aplikacji.