290 likes | 475 Views
Symbian ohjelmointi. Ti5315200 Symbian ohjelmointi 1. harjoitus Juha Turunen (juha.turunen@lut.fi). Sisältö. Tutustutaan SDK:n sisältöön Käännöstiedostot Emulaattori Käännetään ohjelma emulaattorille Tutustutaan käytettävään sovelluskehittimeen. SDK:n rakenne.
E N D
Symbian ohjelmointi • Ti5315200 Symbian ohjelmointi • 1. harjoitus • Juha Turunen (juha.turunen@lut.fi)
Sisältö • Tutustutaan SDK:n sisältöön • Käännöstiedostot • Emulaattori • Käännetään ohjelma emulaattorille • Tutustutaan käytettävään sovelluskehittimeen
SDK:n rakenne • Hakemistorakenne \Symbian\<versio>\<platformversio>\ • Epoc32\ • binäärit, headerit, libraryt • kaikki kääntämiseen ja linkitykseen tarvittava • Examples\ • Symbianin esimerkkikoodeja • Lajiteltu aihealueittain • Series60Doc • Symbian OS & S60 dokumentaatiota • Series60Ex • S60 spesifisiä esimerkkikoodeja • Seris60Tools • Apuohjelmia PC:lle ja päätelaitteelle
\epoc32\ • Release\ • Target platform riippuvat binäärit (DLL:t ja lib:t) • Emulaattori: Release\<platform>\EPOC.exe • Emulaattorin z: -aseman juuri: release\<platform>\z\ • Käännetyt DLL:t ja niitä vastaavat lib:t -> release\<platform>\ • Include\ • C++ headerit • WINS\ • Emulaattorin c: -aseman juuri: WINS\c\
\epoc32\ • Data\ • EPOC.ini - Emulaattorin konfiguraatiotiedosto • EPOC.bmp – Emulaattorin ”skini” • Build\ • Jokaiselle projektille oma alihakemisto • Käännösprosessiin liittyvät tiedostot • Visual Studion projektifile • Makefile:t • DLL rajapinnan kuvaustiedostot (.def) • Paljon tiedostoja, joista ei tarvitse välittää
Symbian spesifiset lähdekoooditiedostot • Symbian platformissa on erillaisia normaalista (.cpp & .h) poikkeavia tiedostoja • Näillä tiedostoilla määritellään erillaisia Symbian platformille ominaisia asioita • Moduulit • MBM-bittikarttatiedostot • MIF-tiedostot (2nd ed FP3->) • Resurssitiedostot
Projektimäärittely (bld.inf) • Määrittelee Symbian ohjelmisto kokonaisuuden, joka yleensä käännetään kerrallla • Kokonaisuus koostuu yhdestä tai useammasta moduulista (.dll, .app, .exe) PRJ_PLATFORMS WINS ARMI PRJ_MMPFILES MyApplication.mmp MyEngine.mmp • Syntaksi • PRJ_PLATFORMS määrittelee mille kaikille varianteille projekti käännetään • PRJ_MMPFILES listaa moduulit, jotka kuuluvat projektiin.
Moduulimäärittely (.mmp) • MMP-tiedosto määrittelee modulin • Syntaksi • Tuotettavan modulin nimi TARGET MyFunkyLibrary.dll • Tuotettavan modulin tyyppi (app, dll, tsy, jne...) TARGETTYPE dll • Tuotettavan modulin UID (unique ID) UID 0x1000008D 0x01098FDC • Polku, josta lähdekooditiedostot haetaan (huomaa ”..\” koska mmp-tiedosto sijaitsee group\ -hakemistossa) SOURCEPATH ..\FunkySrc
Moduulimäärittely (.mmp) • Syntaksi • Listataan lähdekooditiedostot (.cpp), jotka käännetään moduuliin SOURCE CFunkyBase.cpp CGeorgeClinton.cpp SOURCE CFunkontainer.cpp • Listataan ”käyttäjän” headerhakemistot, joihin viitataan #include ”MyHeader.h” USERINCLUDE ..\src ..\inc // private headers • Listataan ”systeemin” headerhakemistot, joihin viitataan #include <e32std.h> SYSTEMINCLUDE \epoc32\include • Listataan linkitettävät kirjastot LIBRARY euser.lib cone.lib bafl.lib • Lisäksi paljon muuta • MMP:n syntaksi määrittely löytyy SDK helpistä
Resurssilähdetiedosto (.rss) • Resurssitiedostot ovat binääritiedostoja, jotka voivat sisältää mitä tahansa dataa • Resursseilla voidaan määritellä esim. käyttöliittymä komponenttien sisältö (menut, jne...) • Resurssitiedostot mahdollistavat laitteen lokalisoinnin • Resurssitiedosto käännetään rss-tiedostosta. • Lisää resursseista ja niiden käytöstä myöhemmillä harjoituskerroilla...
Resurssiheaderit (.rh, .hrh, .loc) • .hrh –tiedostot ovat .rss –tiedostojen headereita. • Aivan kuin .cpp <-> .h • .rh –tiedostot määrittelevät erillaisia resurssistruktuureja (menu, painonappi, ihan mitä vain...) • Luonnollisesti voit myös itse määritellä uusia resurssistruktuureja • .loc –tiedostot ovat lokalisointia varten. Yleensä resurssitiedostoon sijoitettavat tekstit määritellään loc-tiedostoissa • loc-tiedosto includoidaan resurssitiedostoa käännettäessä aivan kuten .hrh-tiedostotkin
Projektin hakemistorakenne • Symbian OS projektissa lähdetiedostot on jaoteltu ”standardihakemistoihin” • Platform ei vaadi hakemistoihin jakamista, mutta se helpottaa työskentelyä • Eri tyyppiset tiedostot helppo löytää, kun tietää mistä etsiä • Looginen jaottelu • Eri modulien koodit eri hakemistoihin • Helpottaa, jos tarvitsee perehtyä tuntemattomaan koodiin
\MyProject\ • Group\ • Projektin kuvaustiedosto • bld.inf • Modulien kuvaustiedostot (.mmp) • MyApp.mmp • MyEngine.mmp • jne... • Kaikille moduleille yhteiset tiedostot • MyApp.hrh • MyAppConstants.h • Resurssitiedostot (.rss) • MyApp.rss
\MyProject\ • Aif\ • Resurssitiedosto, josta AIF-tiedosto käännetään • MyAppAif.rss • Muut AIF-tiedostoon liittyvät tiedostot, esim. ikonit • XXXSrc\ • C++ lähdekooditiedostot (.cpp) • Jokaiselle modulille oma Src –hakemisto • Esim. MyEngineSrc • Sisältää myös modulille sisäisiä headereita • BWINS/BMARM\ • Rajapintamäärittelytiedostot (.def) • Eri varianteille oma hakemisto
\MyProject\ • XxxInc\ • Jokaisen modulin headereille oma hakemisto • Esim. MyEngineInc, MyCommsModuleInc • Hakemistoon tulee ainoastaan ne header tiedostot, joiden kuuluu näkyä modulin ulkopuolelle. Moduulin sisäiset headerit laitetaan modulin Src –hakemistoon. • CMyEnginePublicAPI.h => MyEngineInc • CMyEngineInternalClass.h => MyEngineSrc • Data\ • Ikonit • Äänet • Sekalainen projektiin liittyvä data • Doc\ • Projektin dokumentaatio
Komentorivi käännöstyökalut • bldmake • Käytetään kun projekti aloitetaan tai siihen liitetään uusia moduleja • > bldmake bldfiles • Luo \epoc32\build\ hakemiston alle tarvittavat hakemistot • Luo abld.bat:n • abld.bat • Hoitaa kääntämisen, linkkaamisen, makefile:n teon, .lib filejen generoinnin, jne... • > abld commands
Emulaattori • Käynnistyy komentoriviltä EPOC.EXE tai F5/Ctrl-F5 (MSVC) • Emulaattori on Windows-ohjelma • Käännetyt ohjelmat käyttävät Windowsin kirjastoja • WINS UDEB kääntö • Oikealle puhelimelle tehtävä esim. THUMB UREL kääntö jonka jälkeen tehdään SIS-paketti (tai ROM image) • Näitä ei voi ajaa emulaattorissa • Kurssilla ei tehdä omia imageja
Emulaattori • Navigointi • Emulaattorin näppäimet ja niiden merkitys • Pikanäppäimet: • § = OK • Alt-1 = Left softkey • Alt-2 = Right softkey • Backspace = C • Home = Application key • Shift = Edit key • 0 – 9 = 0 – 9, kuten puhelimessa
Emulaattori • Navigointi • Emulaattorin näppäimet ja niiden merkitys • Pikanäppäimet: • § = OK • Alt-1 = Left softkey • Alt-2 = Right softkey • Backspace = C • Home = Application key • Shift = Edit key • 0 – 9 = 0 – 9, kuten puhelimessa
Emulaattori • Navigointi • Emulaattorin näppäimet ja niiden merkitys • Pikanäppäimet: • § = OK • Alt-1 = Left softkey • Alt-2 = Right softkey • Backspace = C • Home = Application key • Shift = Edit key • 0 – 9 = 0 – 9, kuten puhelimessa
Emulaattori • Navigointi • Emulaattorin näppäimet ja niiden merkitys • Pikanäppäimet: • § = OK • Alt-1 = Left softkey • Alt-2 = Right softkey • Backspace = C • Home = Application key • Shift = Edit key • 0 – 9 = 0 – 9, kuten puhelimessa
Emulaattori - Options • Left softkey avaa Options-valikon • Valikosta löytyy ohjelman lisätoimintoja • Päätoiminnot löytyvät ensimmäisestä näkymästä
Emulaattori – Ohjelman käynnistys • OK suorittaa komennon, esim. avaa ohjelman • Esimerkkinä Phonebook-sovellus • Ohjelmasta poistutaan joko Options/Exit tai valitsemalla päänäkymästä Exit
Emulaattori – Application key • Ohjelman voi jättää taustalle painamalla Application keytä • Pitämällä Application keytä pohjassa saa listan käynnissä olevista sovelluksista (ns. fast swap window) • Siirtyminen tapahtuu OK-näppäimellä tai Left softkeyllä
Kääntäminen Visual C++:lla Step by step... • Avaa command prompt (cmd.exe) • Mene ….\series60ex\helloworldplus\group\ –hakemistoon • > bldmake bldfiles • Hakemistoon ilmestyy abld.bat • > abld makefile vc6 • Luo MSVC++ projektitiedoston \epoc32\build\......\helloworldplust\Group\helloworldplus\WINS –hakemistoon • Käynnistä Visual Studio • File/Open Workspace -> avaa projektitiedosto helloworldplus.dsw yllä olevasta hakemistosta • Tarkista että aktiivinen variantti on UDEB • Build/Set active configuration • Käännä • Build / Build HelloWorld.app (F7)
Testaaminen emulaattorilla • Käynnistä emulaattori • Build / Execute (ctrl+F5) • Ensimmäisellä kerralla projektitiedoston luonnin jälkeen Visual Studiolle pitää kertoa emulaattorin paikka \epoc32\release\wins\udeb\epoc.exe • Voit käynnistää emulaattorin myös komentoriviltä • Käynnistä HelloWorldPlus emulaattorissa
HelloWorldin muokkaaminen • Tutustu CHelloWorldPlusAppView–luokan Draw() metodiin • Muokkaa Draw() metodia, niin että tekstin paikka vaihtuu • ” gc.DrawText( timeAsText, TPoint( 20,20 ) );” • Käännä HelloWorld.app uudelleen ja kokeile muutoksia emulaattorissa • Huom! Emulaattoria ei tarvitse sammuttaa kääntämisien välillä. • Ei linkkaudu? Sammuta HelloWorldPlus applikaatio emulaattorissa ja käännä uudelleen • Applikaation menussa olevat tekstit luetaan resurssitiedostosta. Kokeile muuttaa jotakin menutekstiä. • Data\helloworldplus.loc • Resurssi tiedosto ei käänny? Emulaattori pitää resurssitiedoston lukittuna vaikkei applikaatio olisikaan käynnissä => emulaattori pitää sammuttaa resurssitiedoston kääntämisen ajaksi.
MSVC – Debuggaus • Mene CHelloWorldPlusAppUi::HandleCommandL metodiin ja paina F9 = Breakpoint rivillä case EHelloWorldPlusCommand • Käynnistä emulaattori debug moodissa Visual Studiosta (F5) • Options/Hello World Plus! Suoritus pysähtyy em. kohtaan • Nyt olemme Debuggerissa ja voimme tutkiskella ohjelman toimintaa lähemmin • !
MSVC – Debuggaus • F10 = Step over • Suorittaa kursorin kohdalla olevan lausekkeen • F11 = Step into • ”Astuu sisään” kursorin kohdalla olevaan lausekkeeseen • Esim. ilmaisujen (expression) tarkastelu • F5 jatkaa ohjelman suoritusta • Breakpointit jäävät voimaan • Huom: jos debugattavan koodin lähdekoodia ei ole saatavilla, saat vastaasi assembler-dumppia • Lopeta debuggaus valitsemalla Debug/Stop debugging (Shift-F5)