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.

Brak komentarzy: