niedziela, 8 listopada 2009

Widgety na Symbiana i ich programowanie

Ponieważ możliwości inteligentnych komórek są często poza możliwościami przeciętnych programistów. Sukces Symbiana może opierać się na tym że daje duże możliwości tym co już umieją. Większość programistów w jakiś sposób zetknęło się z programowaniem w Java Script czy stylami kaskadowymi. Więc umożliwienie wykorzystania do programowania w tych technologiach na komórce daje o wiele większy potencjał popularności niż w przypadku tworzenia w natywnych technologiach typu Symbian C++ czy Java Mobile. Sukces iPhone czy Androida (a po części też WebOS Palma) polegał na tym że pozwalał programistom wykorzystać potencjał technologii internetowych w inteligentnych komórkach.

Na platformie Symbian można było już od dawna tworzyć aplikacje wykorzystujące potencjał wbudowanej przeglądarki internetowej a także z możliwości programowania w FlashLite osadzając je w aplikacji pisanej Symbian S60 w C++. Więcej informacji można znaleźć w dokumencie Flash Viewer Framework API łącznie z przykładem How to write a Flash Stub application to protect your SWF file?, natomiast w przypadku tworzenia aplikacji Symbian C++ wykorzystujących silnik przeglądarki internetowej warto zapoznać się z S60 Platform: Browser Control API Developer's Guide v2.0. Jedyny przykład jest zawarty w SDK i jak można też ściągnąć ze strony TSS001012 - Browser Control API: Cloning the connection for Download Manager. Ciekawostką jest to, że te technologia już istnieje sobie od 2004 roku ale jak wiadomo mało kogo to interesowało, albo jak kto to poznał to obowiązywało go przestrzeganie tajemnicy how-know.

W tej sytuacji powstawała idea widgetów na komórki. Więcej szczegółów można przeczytać w pracy doktorskiej Marcosa Caceresa z 2007 roku Ta praca to interesująca historia tego jak powstawała idea widgetów. Nokia w sierpniu 2007 roku wypuściła betę WRT Web Runtime S60 dla SDK S60 3rd Feature Pack 2. Możliwości tej platformy właściwie ograniczały się do wykorzystania potencjału samej przeglądarki S60 Web Browser. Potem wraz z pojawieniem się S60 5th wypuszczono wersję z WRT1.1 które zawierało programistyczny dostęp do danych z komórki. Jest to S60 Platform Services 1.0. Równocześnie Nokia opracowała pluginy do popularnych edytorów developerskich które pozwalały na tworzenie zawartości dla widgetów (dla Aptany, Dreamweawera, oraz VisualStudio). Aby ułatwić szybkie tworzenie zaawansowanych widgetów Nokia opracowała framework WRTKit. Jest zestaw bibliotek JavaScript dedykowany widgetom na Symbiana. Gdy Nokia wypuściła SDK dla N97 w kwietniu 2009 roku to do widgetów dodano nową funkcjonalność - homescreen, co pozwalało widgetom wyświetlać informacje na "pulpicie" komórki. Widgety WRT 1.1 w odróżnieniu od aplikacji na Symbiana miały dość ograniczone możliwości (nie pozwalały na dostęp do plików lokalnie). Idąc naprzeciw oczekiwaniom programistów Nokia wprowadziła nowe Platform Services 2.0 (tylko dla XM 5800 i dla N97) a także Web Runtime Bridge API które ma być dostępne dla wszystkich komórek obsługujących widgety. Na wiki jest dokumentacja tego co można się spodziewać po tej technologii.

Po bliższym spojrzeniu na to rozwiązanie okazuje się że do każdego widgetu będzie można dołączyć paczkę instalacyjną z serwerem HTTP który będzie komunikował się z widgetem lokalnie. Do tego serwera HTTP będzie można robić pluginy ECOM udostępniające funkcjonalności Symbianowego API. Idea całkiem ciekawa biorąc pod uwagę że już napisano takie rozwiązania wykorzystując Pythona S60.

Dla widgetów WRT była już próba napisania takiego serwera HTTP który udostępniałby widgetom API z Pythona takich jak dostęp do bazy danych, wykorzystanie Bluetootha, do wykorzystanie syntezatora mowy. Cały koncept polega na tym żeby zainstalować sobie Mobile Web Serwer z Pythonem albo PAMP z PHP i napisać sobie widget WRT, który byłby w stanie komunikować się z lokalnym serwerem co opisano w artykule How to utilize device resources from a WRT widget. Również można wykorzystać własny miniserwer napisany w Pythonie dla Symbiana co jest opisane w artykule How to access S60 resources in WRT or Flash Lite, using PyS60

Można powiedzieć że same aplikacje w Pythonie dla Symbiana też mogą pełnić funkcje widgetów czyli małych aplikacji rozrywkowych. Przykładem takiego rozwiązania jest framework Flyer współpracujący z FlashLite. Półżartem półserio można zrobić coś jak Adobe AIR na Symbiana czytają poniższe artykuły How to package Flash content in a Widget i How-to communicate with Flash Lite from Javascript in widget (WRT)

Jak tworzyć widgety?

Zainstalować edytor Aptana i plugin do tworzenia widgetów WRT.
Warto na początek wziąć udział w szkoleniu eLearningowym Nokii o widgetach Widgets for the S60 Platform E-learning Następnie ściągnąć sobie aktualna dokumentację Web Developer's Library. Trzeba dowiedzieć się jak importuje się widgety WRT i zacząć naukę na przykładach. Szczególnie polecam dla zaawansowanych RouteWidget Example AccuWidget Example Hue Widget Example a także przykłady aplikacji z fundacji Symbian SEE 2009 Widget OSCON 2009 Schedule Example Widget. Warto też postudiować wiki Forum Nokii i jak Fundacji Symbian

ś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.





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.

wtorek, 1 września 2009

Programowanie rozszerzen dla Pythona

Jedną z najbardziej popularnych paczek dla Pythona jest paczka zawierająca rozszerzenia binarne do Pythona 1.4.5 czyli PyModulePack. Do tworzenia rozszerzeń binarnych potrzeba ściągnięcia odpowiedniego SDK do właściwego systemu którego chce się tworzyć rozszerzenia Pythona. Dla E51 warto pobrać PythonForS60_1_4_5_SDK_3rdEdFP1.zip Po wypakowaniu kopiujemy foldery tam gdzie mamy zainstalowane S60 SDK 3rd Ed FP1. Następnie warto przestudiować jak wygląda tworzenie rozszerzeń binarnych na Pythona na podstawie artykułów z Nokia Forum: PyS60 creating extensions a także PyS60 extensions creation using Carbide. Istotne może być rozpoczecie pisanie własnych rozszerzeń na bazie artykułu Creating C Python extensions using Carbide.c++. Dla bardziej zaawansowanych polecam zapoznanie się z materiałem z wykładu Paula Wisnera ze szkolenia o tworzeniu rozszerzeń
Pomimo tego że Python jest dość elastycznym językiem programowania na komórki to trzeba pamiętać o tym że wersje binarne rozszerzeń nie są często kompatybilne ze sobą. W tej sytuacji warto dużą uwagę poświecić kodom źródłowym do tych rozszerzeń i w razie potrzeby kompilować je we własnym zakresie, szczególnie że będą 2 wersje silników Pythona: linia 1.4.x i linia 1.9.x / 2.0 ( w celu uniknięcia problemów nie powinno instalować się tych 2 silników na jednej komórce)
W teorii można by zrobić jeden duży projekt który by zebrał kody źródłowe rozszerzeń binarnych co umożliwiałoby szybką aktualizację pod kątem zmian i kompilacji pod różne wersje SDKów. Już istnieje taki projekt, PyS60 Community Edition ale on powstał w celu dostarczenia programistom możliwości tworzenia własnej dystrybucji silnika Pythona.
Dla Pythona S60 1.4.5 powstało wiele rozszerzeń co pokazują takie 2 wpisy:
PyS60 extensions i C++ Python Extensions

Warto zwrócić uwagę na strony gdzie są kody źródłowe dla rozszerzeń
Arkadius Wahlig: appuifw2
Mikko Ohtamaa, Simo Salminen, Jussi Toivola: uikludges
Tero Hasu: miso
Christophe Berger: elocation
Lee Chee Meng: applist
Cyke64: activeprofile, xprofile
Bea Lam: lightblue
Temu: pyExpat
Lefevre Damien: Pys60crypto, UItricks, Iapconnect, Appswitch, Akntextutils, Pys60usb, Tsocket, Dialog.

poniedziałek, 31 sierpnia 2009

Polskie znaki w Pythonie S60

Zazwyczaj przerabiając kody Pythona z różnych źródeł, zauważyłem że sporo z nich wymaga przetłumaczenia na język polski. W tej sytuacji warto mieć taką ściągawkę jak zapisuje się polskie znaki w unikodzie.


from appuifw import *
import e32

class SampleApp:
```zapis polskich znaków
Ą - \u0104 ą - \u0105
Ć - \u0106 ć - \u0107
Ę - \u0118 ę - \u0119
Ł - \u0141 ł - \u0142
Ń - \u0143 ń - \u0144
Ó - \u00d3 ó - \u00f3
Ś - \u015a ś - \u015b
Ź - \u0179 ź - \u017a
Ż - \u017b ż - \u017c
```


def __init__(self):
self.new_line = u"\u2029"
app.title = u"Przyk\u0142adowa aplikacja"
app.screen = "normal"
app.menu = [( u"O programie", self.about ),
( u"Wyj\u015bcie", self.quit_app )]
self.body = Text()
app.body = self.body
self.body.add(self.new_line + u"Za\u017c\u00f3\u0142\u0107 \u017c\u00f3\u0142t\u0105 g\u0119\u015b." + self.new_line)
app.exit_key_handler = self.quit_app

def quit_app(self):
self.lock.signal()

def about(self):
note( u"Przyk\u0142adowa aplikacja", "info" )

def run(self):
self.lock = e32.Ao_lock()
self.lock.wait()
app.set_tabs( [], None )
app.menu = []
app.body = None
app.set_exit()

if __name__ == "__main__":
app = SampleApp()
app.run()

niedziela, 30 sierpnia 2009

Tworzenie paczki z aplikacją w Pythonie na komórki

Tworząc aplikacje na komórki z Symbianem trzeba robić paczkę instalacyjną. Jest trochę powodów dla których warto robić takie paczki instalacyjne. Większość ludzi nie będzie celowo instalować interpretera Pythona, żeby uruchamiać skrypt Pythona. Trochę jest z tym problemów jak się ma folderze Python kilkadziesiąt skryptów. Zrobienie paczki instalacyjnej może ułatwić szybsze uruchamianie skryptu jako aplikacji Symbian zainstalowanej w folderze Instalacje.

Obecnie są 2 silniki Pythona: Jeden silnik o nazwie "Python for s60" instaluje się głównie na komórkach z S60 3rd i ostatnia wersja nosi numer 1.4.5. Od roku czasu programiści pracują nad wersjami silnika o nazwie "Python Runtime" obecnie najnowsza wersja w chwili pisania tego artykułu nosi numer 1.9.7 i ma być docelowo dla modeli S60 5th oraz dla S60 3rd FP2 i S60 3rd FP2.

W praktyce to oznacza że nie zaleca się posiadania dwóch wersji silników na jednej komórce. Jest to podyktowane tym że silniki inaczej działają jako interpretery i jako biblioteki do uruchomienia aplikacji. Biorąc to pod uwagę to ze główna różnica pomiędzy S60 5th a S60 3rd polega na obsłudze ekranu dotykowego - wiec trzeba w przypadku aplikacji opierających się na klasie Canvas napisać tak żeby obsługiwały zdarzenia z dotykiem. Załóżmy że korzystamy z klas UI to w tej sytuacji kod aplikacji nie zmienia się. Teraz pozostało zrobić wersje instalacyjne dla tych którzy mają "Python for S60" i jak "Python Runtime".

W tym pierwszym przypadku trzeba pobrać bibliotekę Ensymble.py odpowiednią dla wersji Pythona w komputerze ze strony Google Code. Wystarczy pobrać też plik Openssl.exe z tej strony A następnie zrobić folder SampleApp i wrzucić pliki to tego folderu a następnie dodać plik skryptu Pythona, który będzie aplikacja Symbiana.

Oto kod przykładowego szablonu skryptu Pythona, który ma być aplikacją Symbiana.


from appuifw import *
import e32
import time
import sysinfo
import graphics

class SampleApp:

BLACK = (0,0,0)
BLUE = (51,204,255)

def __init__(self):
self.screen = None
app.title = u"Przykladowa aplikacja"
app.screen = "normal"
app.menu = [( u"About", self.about ),
( u"Exit", self.quit_app )]

self.canvas = Canvas( redraw_callback = self.redraw, event_callback = self.event )

app.body = self.canvas
self.timer = e32.Ao_timer()
self.width, self.height = self.canvas.size
self.screen = graphics.Image.new( (self.width, self.height) )
self.screen.clear( self.BLACK )
self.screen.text((5,15),u"Start", fill = self.BLUE)
self.canvas.blit( self.screen )
app.exit_key_handler = self.quit_app

def quit_app(self):
self.lock.signal()

def about(self):
note( u"Sample App", "info" )


def redraw(self,rect):
if self.screen:
self.screen.clear( self.BLACK )
self.canvas.blit( self.screen )

def event(self,event):
pass


def run(self):
self.lock = e32.Ao_lock()
self.lock.wait()
app.set_tabs( [], None )
app.menu = []
app.body = None
app.set_exit()

if __name__ == "__main__":
sw = SampleApp()
sw.run()

Następnie dodajemy plik wsadowy który ma zrobić paczkę dla tej aplikacji:

@echo off
SET VERSION=1.0.4
SET PYTHON=C:\Python25\python
SET APPNAME=SampleApp
SET CAPBLS=LocalServices+NetworkServices+ReadUserData+WriteUserData+UserEnvironment

%PYTHON% .\ensymble.py py2sis --version="%VERSION%" --heapsize=4k,5M --appname="%APPNAME%" --caps="%CAPBLS%" SampleApp.py "%APPNAME%%VERSION%.sis"

i wystarczy uruchomić.
Natomiast Ci którzy chcą zrobić aplikację pod "Python Runtime" wystarczy że pobiorą
PythonForS60_1.9.7_Setup.exe i zainstalują to. W menu Start -> Aplikacje będzie PythonforS60 1.9.7 -> PyS60 Application Package i uruchomią to. Pojawi się okno dzięki któremu będą mogli zrobić paczkę instalacyjną z aplikacją Symbiana ze skryptu Pythona. Nie należy tym programem robić paczek instalacyjnych w wersji dla silnika "Python for S60" 1.4.5 pomimo że jest taka opcja.

poniedziałek, 10 sierpnia 2009

Symbian OpenC/C++

Tempo rozwoju trochę stało się zawrotne w porównaniu do tego co było kiedyś, kiedy rozwój programowania pod Symbianem wydawał się bardzo powolny, bardzo ewolucyjny. Ostatnio właściwie nie ma dnia żeby coś nowego zaprezentowało się. Ponieważ już oficjalnie potwierdzono że Qt for S60 będzie podstawowym frameworkiem dla Symbian^4, co powoduje też zmianę funkcjonowania GUI. W praktyce oznacza że aplikacje pisane pod S60 przy użyciu frameworka AVKON nie będą uruchamiane w Symbian^4. Według mnie to nie jest żaden problem bo w praktyce komórki z S60 będą jeszcze bardzo długo produkowane przez Nokię tak jak teraz jest z S40. Na poziomie programistycznym kod Qt for S60, OpenC/OpenC++ przy niewielkich zmianach będzie chodził w Symbian^4, co powoduje szybkie przenoszenie aplikacji. Jeszcze nie do końca wiadomo jaka będzie referencyjna warstwa sprzętowa dla Symbiana^4. Obecnie preferowane są procesory ARM architektura RISC), być może przeniesienie kodu Symbiana na procesory Atom (architektura CISC) będzie sprzyjało powstaniu wydajnych notebooków / netbooków.

Warto zwrócić uwagę że tak naprawdę za rozwój Symbiana obecnie odpowiada OpenC/OpenC++. Nokia wypuściła OpenC/OpenC++ w lutym 2007 roku jako rozszerzenie do SDK S60 3rd FP1 (najpierw pod nazwą PIPS). Obecnie 2 zespoły pracują nad rozwojem tej biblioteki zespół tworzący biblioteki Qt for S60 i zespół tworzący bibliotekę Pythona (PyS60 2.0). Najciekawsza jest sytuacja programistów którzy programują pod Pythona S60. Otóz mają 2 wersje bibliotek 1.4.5 (kod zródłowy i binaria) a tymi programistami którzy rozwijają wersję Python 1.9.x (kod żródłowy i SDK) Ci ostatni mają już dostęp do kodu OpenC 3.0.

Duże zainteresowanie Pythonem sprawiło że Nokia postanowiła wypuścić usługę na komórki Nokia Web Server oparty na serwerze Apache w silniku Raccon wdrażając potem możliwość tworzenia dynamicznych skryptów opartych na Pythonie. W tym celu stworzono programistom SDK do tworzenia rozszerzeń pod ten serwer. Ponieważ na programowanie pod Python Server Pages nie było zainteresowania, z drugiej strony narzucono odpowiedni framework aplikacyjny co przy braku dobrej dokumentacji nie do końca było jasne jak programować aplikacje na Nokia Web Server. W tej sytuacji eksperymentalnie postanowiono rozwijać PAMP, umożliwiając programistom PHP łatwe przemienienie aplikacji PHP na komórki (kod zródłowy i binaria) Jest to pierwszy z większych projektów w którym użyto OpenC. Dalszy rozwój tego projektu jest zależny od fundacji Symbian czy zechce wbudować serwer jako możliwość dostępu do API aplikacji Symbiana opartych na widgetach mobilnych. Jedną z ciekawszych rzeczy w PAMP jest przeniesienie silnika bazy danych MySQL na aplikacje Symbian o czym pisze wywiad z twórca tego przedsięwzięcia Johanem Wikmanem.

Wraz z udostępnieniem bibliotek OpenC Nokia zorganizowała konkurs na przeniesienie bibliotek OpenSource wygrała aplikacja MobiTubia za przeniesienie bibliotek libavcodec, z ciekawszych aplikacji to okazało sie MobiClass 2.0

Od tej pory coraz więcej powstawało bibliotek z kodami źródłowymi pod Symbianem w konsekwencji spore zainteresowanie pod kątem kodów do aplikacji multimedialnych ( do tworzenia narzędzi i gier).

Podstawową biblioteką do obsługi multimediów okazała się biblioteka SDL (dokumentacja) a także przykład gier opartych na bazie tej biblioteki: c2Doom, Starmaze, Wolf 3D, Sinvaders, Battletamagothi. Ponieważ kod silnika Pythona jest publiczny to przeniesiono kod silnika do gier pyGame. Też sprzyjało rozwojowi różnych silników od fizyki: Chipmunk S60 (kod źródłowy) a także Symbian Open Dynamics Engine, silników do grafiki 3D dla gier mIrrlicht i Irrlicht for S60, a także popularnego silnika dla grafiki 2D Cairo, przeniesiono też popularne frameworki UI: wxWidgets, fltk-s60, GTK for Symbian. Dostępność biblioteki OpenC sprzyja przenoszeniu na platformę Symbian nowych języków skryptowych Lua i jak Ruby, czy silników baz danych takich jak SQLite. Jako ciekawostkę można potraktować bibliotekę dla Argumented Reality i jak jej implementację. W najbliższym czasie można spodziewać się wydania książki Marka Wilcoxa - Porting to the Symbian Platform : Open Mobile Development in C/C++