Modulo su Parte II: Lezione 8: Sviluppo di applicazioni su piattaforma Symbian Strumenti di sviluppo di applicazioni C++ per Symbian Docente: Ing. Marcello CINQUE Dipartimento di Informatica e Sistemistica Via Claudio 21, 80125 Napoli ::. Contenuti della lezione Organizzazione delle applicazioni grafiche: pattern MVC; Ciclo di sviluppo delle applicazioni; Tool di sviluppo e file di build (.inf,.mmp) IDE e risorse on-line; Esempi di applicazioni console e con GUI; Riferimenti: Jo Stichbury, Symbian OS Explained, Wiley Edwards, Barker, Developing Series 60 Applications, Addison Wesley 1
::. Pattern MVC Model: rappresenta i dati su cui l applicazione opera; View: una rappresentazione grafica del modello attraverso uno o più elementi di interfaccia grafica; Controller: risponde agli eventi e li processa, e aggiorna modello e view. ::. Pattern MVC Richiesta stato Model Incapsula lo stato Risponde alle richieste sullo stato Mostra le funzionalità Notifica alla view i cambiamenti Modifica stato Notifica stato View Interpreta il model Richiede aggiornamenti al model Mostra le funzionalità Notifica alla view i cambiamenti Seleziona View Input utente Controller Implementa la logica di controllo Mappa gli input con gli aggiornamenti della View Seleziona la View dopo un input. 2
::. MVC in Symbian Un applicazione grafica in Symbian è tipicamente strutturata in almeno 4 classi: Application: definisce le proprietà globali, come l UID, e rappresenta l entry point della applicazione. Non contiene logica applicativa. Document: gestisce l accesso ai dati persistenti (file e stores), ed è collegato a una o più classi di business logic dell applicazione. L insieme del Document e delle classi di business rappresenta il model dell applicazione. Application View: corrisponde alla view concreta dell applicazione. Visualizza i dati e gli elementi di controllo. Application UI: completamente invisibile, gestisce le interazioni tra view e model; rappresenta il controller. ::. MVC in Symbian Note: Quanto detto si riferisce all architettura control-based standard, che vede l utilizzo di una sola view (tipicamente detta container), e di un controller (appui). Esistono architetture grafiche più complesse, come la viewswitching di Avkon (S60). In questo caso la view è suddivisa su più classi, ognuna rappresentante una diversa vista o schermata (o dialog), e ognuna con il proprio nome (container, dialog, list, ) Allo stesso modo, il controller è suddiviso in più classi, una per ogni vista (containerview, dialogview, listview, ) La classe appui resta, e riveste il ruolo di coordinatrice. 3
::. UIDs Ogni applicazione Symbian ha un identificativo univoco (UID) di 32 bit, assegnato da Symbian. L UID è associato ad ogni file dell applicazione, semplificando il legame file-applicazione. Vi è anche un UID di secondo livello, che specifica il tipo di applicazione (App, DLL, exe, ) ::. Startup di un applicazione 1. L utente esegue l applicazione 2. Il sistema crea un nuovo processo lanciando APPRUN.EXE 3. All interno del processo viene creato l UIKON Environment, come thread di default 4. L UIKON Environment: Chiama il metodo E32Dll (ogni aplicazione è vista come una DLL dinamica) Chiama il metodo NewApplication() della classe application, che crea l applicazione e il document; Chiama il metodo CreateAppUiL() del document, che crea l application UI che a sua volta creerà la application view 4
::. Ciclo di sviluppo di un applicazione Symbian (1) Il resource compiler converte i file di risorsa (.rss) in file.rsc e produce un resource header file (.rsg) Il compilatore C++ ed il linker producono gli output file (.dll,.exe,.app) dai file.cpp. Tutte le definizioni C++ sono incapsulate in header files (.h) Alcuni valori utili sia al compilatore C++ che al resource compiler vengono incapsulate in un file.hrh ::. Ciclo di sviluppo di un applicazione Symbian (2) Il bitmap converter trasforma i file.bmp in multi-bitmap file (.mbm) Aif Builder usa.rss e.mbm per costruire l Application Information File (.AIF) che specifica icon, caption, menu, ecc. I file.loc e.l0x contengono le informazioni dipendenti dalla località (un.l0x per ogni località diversa), per il supporto alla internazionalizzazione. 5
::. File di build Per rendere il processo di sviluppo indipendente da un particolare IDE o ambiente di sviluppo, ogni applicazione Symbian è descritta da un insieme di file un file bld.inf e un insieme di file component.mmp (tipicamente uno se l applicazione è fatta da un solo componente). bld.inf contiene la lista di componenti di cui è fatta l applicazione. Ogni componente è descritto da un diverso file.mmp ::. bld.inf per TimerToFile PRJ_PLATFORMS WINSCW THUMB ARMI PRJ_MMPFILES TimerToFile.mmp 6
::. TimerToFile.mmp TARGET TimerToFile.app TARGETTYPE app UID 0x100039CE 0x0A2A460A TARGETPATH \system\apps\timertofile SOURCEPATH..\src SOURCE TimerToFileApp.cpp SOURCE TimerToFileAppui.cpp SOURCE TimerToFileDocument.cpp SOURCE TimerToFileContainer.cpp SOURCE TimerToFile.cpp SOURCEPATH..\data RESOURCE TimerToFile.rss RESOURCE TimerToFile_caption.rss ::. TimerToFile.mmp (cont ) LANG SC USERINCLUDE..\inc USERINCLUDE..\help SYSTEMINCLUDE \epoc32\include LIBRARY euser.lib apparc.lib cone.lib eikcore.lib LIBRARY eikcoctl.lib avkon.lib aknnotify.lib hlplch.lib flogger.lib AIF TimerToFile.aif..\aif TimerToFileaif.rss c8 context_pane_icon.bmp context_pane_icon_mask.bmp list_icon.bmp list_icon_mask.bmp 7
::. Tool per lo sviluppo da linea di comando bldmake usa i file bld.inf e gli.mmp per creare uno script a linea di comando denominato abdl.bat bldmake bldfiles Quest ultimo viene usato per generare gli eseguibili abdl build winscw udeb bld.inf.mmp bldmake abdl.bat abdl makmake.winscw.arm4.armi.thumb ::. IDE per Sybian ieri Diverse soluzioni disponibili: Microsoft Visual C++ 6 Borland C++ BuilderX Mobile Metrowerks Codewarrior Tutti usano gli SDK rilasciati per le varie versioni delle interfacce grafiche (S60, UIQ, ), sfruttandone i servizi (tool-chain di cross-compilazione, emulatori, ) 8
::. IDE per Sybian oggi Diverse soluzioni disponibili: Carbide.c++: basato su Eclipse, promosso da NOKIA, le versioni commerciali forniscono anche un UI designer e tool per il debugging on-device. Wirelexsoft VistaMax SymbDev: un set di plug-in open source per eclipse Anche questi ultimi usano i servizi degli SDK disponibili ::. Risorse on-line www.symbian.com: informazioni generali, dati sui cellulari symbian developer.symbian.com: supporto allo sviluppo developer.uiq.com: dedicato a UIQ www.forum.nokia.com: dedicato alle interfacce Nokia (S60, Series 40, Series 80, ) www.newlc.com: la community di riferimento degli sviluppatori symbian 9