1 / 29

Symbian ohjelmointi

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.

keefe
Download Presentation

Symbian ohjelmointi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Symbian ohjelmointi • Ti5315200 Symbian ohjelmointi • 1. harjoitus • Juha Turunen (juha.turunen@lut.fi)

  2. Sisältö • Tutustutaan SDK:n sisältöön • Käännöstiedostot • Emulaattori • Käännetään ohjelma emulaattorille • Tutustutaan käytettävään sovelluskehittimeen

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

  4. \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\

  5. \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ää

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

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

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

  9. 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ä

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

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

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

  13. \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

  14. \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

  15. \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

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

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

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

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

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

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

  22. Emulaattori - Options • Left softkey avaa Options-valikon • Valikosta löytyy ohjelman lisätoimintoja • Päätoiminnot löytyvät ensimmäisestä näkymästä

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

  24. 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ä

  25. 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)

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

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

  28. 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 • !

  29. 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)

More Related