38
Proiect SO - Platforma iOS

stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Proiect SO - Platforma iOS

Student: Petrescu Mihai-Gabriel Olaru Gheorghe-Stefan

Ciorba Bogdan-Cristian Cojocariu Andrei-Cezar

Profesor Indrumator: Prof. Doct. Ing. Stefan Stancescu

Page 2: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Cuprins

Introducere – Olaru Gheorghe Stefan

o Descarcarea editorului

o Adaptarea cu limbajul

o Crearea unui "Hello World"

Aplicatie demo – Petrescu Mihai-Gabriel

o Structura aplicatiei

o Rularea pe simulator/device

o Crearea fisierului de instalare pe device (.ipa)

Concluzii si notiuni generale

o Store (AppStore).

o Comparatii cu celelalte platform

Scurta descriere - Cojocariu Andrei-Cezar

Partea Hardware- Cojocariu Andrei-Cezar

Limbaje de programare - Ciorba Bogdan-Cristian

Medii de dezvoltare - Ciorba Bogdan-Cristian

Page 3: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Introducere

I Descarcarea Editorului

XCode este aplicatia folosita pentru a creea iOS apps. Un proiect XCode reprezinta sursa unei aplicatii ; contine intreaga colectie de fisiere si setari folosite pentru a construi aplicatia . Pentru a creea , dezvolta si mentine o aplicatie trebuie sa stii cum sa folosesti si sa navighezi intr-un proiect XCode . Programul XCode se poate descarca din App Store sau de pe www.developer.apple.com O data ce a fost descarcat programul, acesta se instaleaza in mod obisnuit ca orice aplicatie pentru Mac. Pentru informatii complete referitoare la XCode, puteti studia documentatia Apple (alegeti Help -> Xcode User Guide din bara de meniu atunci cand programul este pornit) .

II Adaptarea cu limbajul

Pentru a programa in iOS trebuie sa ''comunicam'' cu iOS. Orice transmitem catre iOS trebuie sa fie in concordanta cu iOS API ( API vine de la Interfata de Programare a Aplicatiei . Aceasta este o lista de specificatii sau lucruri care ne sunt permise sa le facem atunci cand ''comunicam'' cu iOS) . Acestea fiind zise, sunt necesare cunostinte de programare in limbajul C , din 2 motive:

1. Majoritatea iOS API necesita limbajul Objective-C. Objective-C presupune si limbajul C , fiind un limbaj orientat pe obiecte care are la baza limbajul C.

2. Unele iOS API necesita folosirea C mai mult decat Objective-C. Chiar si in codul Objective-C deseori sunt folosite structuri de

Page 4: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

date C sau apelari de functii C.

III Crearea unui“Hello World”

Crearea unui astfel de proiect a devenit aplicatia traditionala pentru cine invata sa codeze pentru prima data in XCode. Este un program simplu care afiseaza mesajul “Hello World”pe ecranul unui dispozitiv iOS. Acesta iti ofera o introducere in mediul de lucru XCode. Scopul acestei aplicatii este de a invata cum se creeaza un proiect si cum se creeaza o interfata vizuala cu utilizatorul, cum se compileaza un program, cum se construieste aplicatia si cum se testeaza folosind un simulator.

Inainte de a trece la cod, iata cum va arata varianta finala a aplicatiei:

Initial vom avea un buton “Hello World” . Atunci cand acesta va fi apasat, aplicatia afiseaza un mesaj.

Page 5: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Pentru a ne indeplini obiectivul, prima data trebuie sa lansam in executie XCode. Odata lansat, va aparea un dialog. De aici, trebuie sa

alegem optiunea “Create a new Xcode project” pentru a incepe un nou proiect.

Xcode ofera o varietate de posibilitati spre selectare:

Page 6: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Noi vom alege “Empty Application” apoi vom apasa pe “ Next” .

Se trece la un alt dialog in care va trebui sa completam toate campurile.

Vom completa campurile dupa cum urmeaza:

la Product Name vom pune Hello World. Acesta este numele aplicatiei noastre.

la Company Identifier vom pune spre exemplu com.appcoda. Daca aveti un domeniu, puteti sa il folositi. Deocamdata il vom folosi pe acesta.

la Class Prefix vom pune HelloWorld. Xcode foloseste acest prefix pentru a denumi clasele in mod automat. Aici puteti sa folositi orice prefix doriti.

la Device family: iPhone . Vom creea proiectul spre a fi rulat pe un iPhone.

la Use Core Data lasati nebifat, nu avem nevoie de Core Data pentru acest tip de proiect.

Page 7: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

In continuare apasati “Next”si XCode va va intreba unde doriti sa salvati proiectul. Alegeti destinatia pe care o doriti si apasati pe “Create”.

Page 8: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Dupa ce ati confirmat, XCode va creea automat proiectul nostru si ecranul ar trebui sa arate acum asa:

In cele ce urmeaza voi descrie mediul de lucru.

In partea stanga a ecranului, in sectiunea denumita Project Navigator veti gasi toate filele dumneavoastra. In partea centrala, in sectiunea denumita Editor Area, se vor face toate editarile de cod in functie de tipul filei selectate. Sub aceasta sectiune se afla Debug Area unde veti gasi informatii o data ce aplicatia este rulata.

In final, sectiunea din dreapta, denumita Utility Area, de unde se pot selecta diverse butoane, view-uri, labele si asa mai departe precum si optiunea de Quick Help.

De asemenea sectiunea de sus, permite rularea, selectarea simulatorului, butoanele de editor si selectia de view-uri.

Page 9: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

In cele ce urmeaza o sa incepem sa scriem cod.

Inainte de a pune butonul nostru va trebui sa ii cream un view si controller-ul lui. Pentru a face asta, vom merge in Project Navigator, vom apasa click dreapta pe folderul HelloWorld si vom selecta”New File”.

De aici vom selecta Objective-C class si apoi “Next”. Numiti noua clasa HelloWorldViewController si faceti-o subclasa a UIViewController. Selectati optiunea “With XIB for user interface” si apoi apasati “Next”.

Va aparea un dialog in care va trebui sa apsati pe butonul “Create''.

Xcode va genera trei file cu extensiile .h ,.m si.xib. Cand veti selecta fila cu extenisa .xib, veti gasi un view gol exact ca in imaginea de mai jos:

Page 10: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Aici vom adauga un buton. In partea de jos a sectiunii de utilitai, este afisata o librarie de obiecte. Gasiti aici un button si dati drag&drop in view.

Page 11: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Acum pentru a redenumi butonul, dati dublu click pe el si numiti-l “HelloWorld”.

Daca am rula aplicatia in acest moment, butonul nostru nu ar fi afisat pentru ca inca nu i-am spus aplicatiei sa incarce noul view. Pentru a face acest lucru este nevoie sa adaugam cateva linii de cod.

Selectati AppDelegate.m si importati la inceputul acestei file, fila cu extensia .h a controller-ului in felul urmator:

#import "HelloWorldViewController.h"

In metoda didFinishLaunchingWithOptions: adaugati urmatoarele linii de cod subliniate in imaginea de mai jos:

O data facute modificarile vom creea o metoda pentru butonul nostru in scopul de a afisa un mesaj.

In Project Navigator, selectati fila cu extensia .h si adaugati urmatorul cod inainte de linia: “@end”:

-(IBAction)showMessage;

Page 12: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Acum selectati fila cu extenisa .m si adaugati urmatorul cod inainte de linia “@end”.

-(IBAction)showMessage{ UIAlertView *helloWorldAlert=[[UIAlertView alloc]initWithTitle:@"My First App"message:@"Hello, World!"delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

// Display the Hello World Message [helloWorldAlert show];}

Aceasta actiune atribuita butonului va afisa un mesaj pe ecran.

Pentru ca butonul nostru sa stie ce actiune va invoca atunci cand el este apasat, va trebui sa stabilim o legatura intre buton si metoda showMessage.

Pentru a face asta, selectati fila cu extensia .xib.

Tineti apasat butonul Control de pe tastatura, dati click pe butonul “HelloWorld”si dati drag catre “File's Owner”ca in imaginea de mai jos:

Page 13: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Acum dati drumul la buton si click si un pop-up va afisa metoda noastra. Selectati-o pentru a finaliza conexiunea.

Acum puteti testa aplicatia apasand butonul RUN din stanga sus. Daca ati efectuat corect toate modificarile, Simulatorul va arata in felul urmator:

Page 14: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Aplicatia Demo

I. Structura Aplicatiei

Aplicatia demo cuprinde un mic overview despre o parte din functionalitatile unei aplicatii iOS. Proiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici detalii la inceput iar dupa ce este selectat un row, vor aparea toate detaliile retetei.

Se creaza un proiect ca cel din pasul anterior cu “Hello Word”, aplicatia poate sa fie “Single View Application”. Urmatorul pas este crearea unul UIView Controller din File->New File->Cocoa Touch->Objective-C Class. Se alege UIViewController la subclass si se denumeste clasa CellDetailsController, se alege path-ul catre proiect si se creaza fisierul.

View Controller (cel creat de proiect) o sa contina:In Main_iPhone.storyboard o sa adauga un UITableView.

Un UITableView este un view scrolabil ce este separate in sectiuni, fiecare din aceste sectiuni fiind la randul lor separate in celule.

Page 15: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Se va face drag/drop in view-ul principal. Dupa se fac legaturile de la Data Source si Delegate al Table View tinand click dreapta pe table view si ducand pe View Controller.

Dupa trebuie creat un link catre acest obiect. Acesta se face prin crearea unui IBOutlet in ViewController.h. Tot in header vom pune ca o interfata UITableViewDataSource si UITableViewDelegate.

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, weak) IBOutlet UITableView *menuTableView;

@end

Page 16: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Dupa o sa se faca click dreapta pe View Controller in storyboard si se va duce la UITableView unde se va pune linkul menuTableView.Dupa se va adauga un UILabel deasupra acestui tableview unde se va seta textul “Meniu”.

Pentru a seta valorile tableview-ului creat ne vom folosi de un obiect ajutator creat de noi cu numele RetetaObiect ce mosteneste de la NSObject. Acesta are doar functia de incapsulare a valorilor date de noi. In headerul lui vom seta proprietetile si numele functiei de setare a valorilor iar in header impelentarea functiei:

RetetaObiect.h@property (nonatomic, retain) NSString *numeStr;@property (nonatomic, retain) NSString *imagineStr;@property (nonatomic, retain) NSString *description;@property (nonatomic, retain) NSString *pret;

- (void)seteazaNume: (NSString *)nume siImagine: (NSString *)imagine siDescr:(NSString *)descr siPret:(NSString *)pret;

RetetaObiect.m- (void)seteazaNume: (NSString *)nume siImagine: (NSString *)imagine siDescr:(NSString *)descr siPret:(NSString *)pret{ _numeStr = nume; _imagineStr = imagine; _description = descr; _pret = pret;}

Dupa ce am creat obiectul revenim la ViewController.m unde vom creat un NSMutableArray numit itemsArray unde vom tine obiectele de tip RetetaObiect pentru a popula menuTableView. In viewDidLoad vom initializa array-ul si obiectele de timp RetetaObiect unde le vom adauga in array.

Urmatorul pas este setarea metodelor delegate ale unui UITableView (un delegate este un fel de clasa abstracta ce te obliga sa implementezi metodele lui pentru a le da anumite date specifice). Vom seta numarul de diviziu cu 1, la numberOfRowsInSection vom seta numarul de obiete din itemsArray. In cellForRowAtIndexPath vom seta imaginea si textul la label-urile textLabel si DetailTextLabel.

Atunci cand vom da click pe un cell se va apela metoda unde vom crea un segue pentru a ne duce in CellDetailsController.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:

Page 17: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

(NSIndexPath *)indexPath{ [self performSegueWithIdentifier:@"cellDetails" sender:itemsArray[indexPath.row]];}Acel Segue este creat din xib, click dreapta pe ViewController, mergem cu mouse peste CellDetailsController si alegem Modal Segue.Inainte de a incepe animatia de tranzitie se va apela metoda prepareForSegue unde vom prelua ViewControllerul destinatie si ii vom seta proprietatea retetaObject din header:

CellDetailsController *cellDetailsController = (CellDetailsController *)[segue destinationViewController];//the sender is what you pass into the previous methodcellDetailsController.retetaObject = sender;

CellDetailsViewController este doar afisarea datelor din RetetaObject. Acesta va avea un backbutton ce il vom adauga in navigationBar si va apela metoda dismiss pentru a ne intoarce la ViewController. [self dismissViewControllerAnimated:YES completion:nil];

II. Rularea pe simulator/device

Xcode vine automat cu un simulator. Rularea pe device se face dupa ce a fost creat un cont apple de developer, creat certificate de developer, adaugat telefonul la Devices creat un Provision cu certificatul si device-ul si setate in proiect la Build Settings. Asa arata simulatorul:

Page 18: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

III. Crearea unui kit de instalare (.ipa)

Dupa ce este creat contul de developer, Xcodul are in Product o optiune Archieve ce iti da posibilitate sa arhivezi proiectul sub mai multe extensii. Vom da Distribute dupa vom alege Enterprise or Ad Hoc Deployment, alegem Provision-ul specific si dam export. Se va genera un kit de instalare unde alegem noi destinatia cu extensia .ipa

Page 19: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Link de download al proiectului: http://fastupload.rol.ro/2f3e326298b74c63c098f5c7ffb95296.html

Concluzii

Notiuni generale Store (Apple Store)

Odata ce aplicatia este gata, aceasta poate fi incarcata pe Store. Apple AppStore reprezinta o platforma online prin care se pot cumpara si descarca aplicatii pe dispozitivele cu sistem de operare iOS.

La fel ca si cu dezvoltarea aplicatiei, pentru incarcarea acesteia este nevoie de cont de iOS Developer cu care trebuie accesat iTunes Connect (https://itunesconnect.apple.com). Aici se va adauga aplicatia(Manage

Page 20: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Your Applications > Add New App) si se vor introduce detaliile acesteia: denumirea, descrierea, iconita si cel putin un screenshot cu aceasta, cuvinte cheie, categoria. Daca se incarca pe Store pentru a fi vanduta, trebuie adaugat un cont bancar si completate doua contracte(Contracts, Tax and Banking), unul pentru Aplicatii si altul pentru iAds.

In continuare, se va folosi programul Xcode. Din optiunea Archive, se selecteaza Submit si se vor urmari instructiunile din Wizard (autentificare, selectarea aplicatiei si identitatea, incarcare).

Acum aplicatia este incarcata si urmeaza sa fie verificata de catre Apple, statusul poate fi verificat in iTunesc Connect. Verificarea poate dura si cateva saptamani, dupa care, daca totul este in regula, aceasta poate fi cumparata si descarcata de utilizatori. In caz contrar, Apple va trimite pe email mai multe informatii legate de problemele pentru care nu a fost aprobata incarcarea si solutii pentru rezolvarea acestora.

Comparatii cu celelalte platforme

In continuare va fi prezentata o comparatie intre cele mai utilizate sisteme de operare pentru platforme mobile: Android, iOS si Windows.

1) Scurta descriere despre fiecare SO

Android

Sistemul de operare Android este dezvoltat de Google si de alti membri ai grupului Open Handset Alliance (Htc, Samsung, LG, T-mobile etc) inca din 2005 de cand Google a achizitionat start up-ul Android Inc. si a fost prezentat publicului pentru prima oara in 2007. Denumirile versiunilor aparute dupa 'Astro' si 'Bender' sunt inspirate din deserturi si puse in ordine alfabetica.

Page 21: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Android este bazat pe kernelul Linux si este open source, avand licenta Apache. Deasupra kernel-ului se afla librariile (SQLite, Surface Manager, Media Framework, Freetype, Webkit, SSL), masina virtuala Dalvik si librariile Java de baza. Peste acestea functioneaza Framework-ul care are functiile de baza ale dispozitivului si care ofera posibilitatea construirii de aplicatii cu care utilizatorul interactioneaza direct (widget-uri, jocuri, browser, contacte etc)

Android este foarte flexibil, fiind folosit pe procesoare ARMv7, Intel, i .MX si este disponibil pe smartphone-uri, tablete si laptop-uri.

iOS

Acesta a fost creat de compania Apple Inc. in 2007 initial doar pentru telefoane iPhone ca mai apoi sa fie extins si pe alte dispozitive ca iPod si iPad.

Sistemul de operare iOS este dezvoltat pe acelasi kernel pe care este bazat si Mac OSX, Mach. Pe acesta, se afla nivelele de servicii care sunt folosite la implementarea aplicatiilor. Nivelele, de jos in sus, sunt: Core OS, Core Services, Media si Cocoa Touch.

iOS si dispozitivele pe care ruleaza sunt cunoscute pentru usurinta cu care un utilizator le poate folosi. Se integreaza in totalitate cu iTunes, software oferit de Apple pentru PC, de unde se pot coordona mai multe aspecte ale telefonului.

Windows phone

Sistemul de operare Windows este dezvoltat de compania Microsoft. Windows mobile se bazeaza pe kernelul Windows CE, aparut in 1996 si a suferit numeroase imbunatatiri pana la versiunea 6.1.

Totusi, pentru a face fata noilor platforme mobile de pe piata internationala, Microsoft a lansat Windows phone, bazat pe kernel-ul Windows NT, versiunea actuala fiind 8.1. Avantajul este ca varianta pentru platforme mobile foloseste multe componente pe care si cea de PC le are, insemnand ca aplicatiile pot fi portate.

Interfata Metro este usor de folosit si de customizat, desi nu are un grad de libertate atat de mare ca Android.

Page 22: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

2) Partea Hardware

Android

Cerintele minime pentru primele dispozitive Android erau: un procesor de 200MHz, memorie Ram de 32MB si cel putin 32MB de memorie flash, iar acum sunt: un procesor cu frecventa mai mare de 1GHz, 256MB Memorie Ram si 512MB memorie flash.

iOS

Primul Iphone avea un procesor ARM de 412MHz, 128MB memorie Ram si un minim de 4GB memorie flash, iar ultimul model, Iphone 5s, are un procesor bazat pe ARM8 de1.3GHz, 1GB memorie RAM DDR3 si cel putin 16GB memorie flash. Placa grafica are suport OpenGL, astfel animatiile sunt rapide si fluente.

Windows phone

Pentru sistemul de operare Windows phone 8, este nevoie de cel putin 512MB ram in cazul telefoanelor WVGA si cel putin 1GB in cazul WXGA, procesor Qualcomm Snapdragom S4 dual-core si peste 4GB memorie flash.

3) Limbaje de programare

Android

Aplicatiile Android pot fi create cu orice sistem de operare (Windows, Linux, Mac). Mediul de dezvoltare pentru Android se poate descarca gratuit si se poate instala intr-un timp foarte scurt. Acesta contine IDE-ul Eclipse, plugin-uri necesare si Android SDK.

Limbajul de programare pentru Android este de fapt un set de API-uri Java (insemnand ca si Java Runtime Environment trebuie sa fie instalat pe dispozitivul de pe care se vor crea aplicatii). Exista patru componente principale care functioneaza impreuna pentru a face o aplicatie sa functioneze corespunzator: activitati, servicii, continut si notificari. Astfel, se poate reutiliza codul de la framework-uri existente (camera, GPS, contacte etc) in alte combinatii pentru a forma aplicatii noi mai complexe.

Page 23: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

iOS

Pentru dezvoltarea aplicatiilor pe iOS era initial nevoie de un sistem Mac, dar acum se gaseste software de dezvoltare si pe celelalte platforme. Cel mai utilizat mediu de dezvoltare este Xcode care contine si SDK si simulator. Aplicatiile sunt scrise cu Objective-C, un limbaj de programare creat in 1980 pentru dezvoltarea sistemului OS X.

Avantajul pe care il au aplicatiile iOS este ca acestea sunt compatibile cu toate dispozitivele, problemele cauzate de compatibilitate fiind mult mai mici fata de aplicatiile pentru Android.

Windows phone

Dezvoltarea aplicatiilor pentru Windows phone se face atat in C#, cat si in C++ folosind mediul de dezvoltare Visual Studio.

Simulatorul Windows phone este o masina virtuala Hyper-V, ceea ce inseamna ca PC-ul trebuie sa aiba virtualizare, iar dezvoltarea este limitata pe sistemul de operare Windows 8/8.1. Se poate folosi Windows 8/8.1 cu ajutorul unei masini virtuale ca Vmware si pe alte sisteme.

Spre exemplu, pentru transmiterea de date intre doua pagini, in cazul iOS, se poate folosi un protocol delegat methodpresentModalViewController al obiectului UIViewController.

[new page setDelegate:self];[self presentModalViewController:newpage animated:YES];

Pentru afisarea intr-o lista se foloseste UITableView cu UITableViewController. Pentru a face legatura cu serviciul Rest, se poate folosi libraria ASIHTTPRequest care comunica HTTP, atat sincron, cat si asincron.

Pentru a prelua date din serviciul Rest si a le afisa pe o pagina noua, in cazul Android, se lanseaza un Intent care la randul sau incarca o Activitate noua. Se foloseste metoda startActivityForResult().

Intent intent = newIntent(nume_aplicatie.this, clasa.class);startActivityForResult(intent, int)

Page 24: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Implementarea unei liste cu datele obtinute se poate face cu ajutorul ListAdapter care foloseste fisiere XML. Pentru comunicarea cu Rest se poate folosi Android Asynchronous Http Client.

In cazul Windows phone, pentru a naviga intr-o pagina noua se foloseste metoda Navigate din theNavigationService cu numele fisierului XAML al paginii noi ca si argument. Ca si in cazul Android, cererile HTTP se fac asincron si se poate folosi libraria RestSharp si metoda POST.

4) Medii de dezvoltare

Comparaţii între mediile de dezvoltare iOS, Android, Windows MobileIn acest capitol ne propunem să facem o paralela intre cele trei medii de dezvoltare, scotand in evidenta avantajele si dezavantajele fiecaruia. IDE-ul standard pentru iOS este Xcode de la Apple, aceasta putand fi gasita pe AppStore. Din acest program de dezvoltare fac parte si iOS SDK si iOS Simulator. Ca si parte din dezvoltarea iOS, Xcode a fost pentru o lunga perioada de timp singurul IDE, ulterior, a aparut si un program competitiv – AppCode de la JetBrains.La Android, sunt mai multe medii de dezvoltare, dar cel care iese in evidenta cel mai bine este Eclipse. Ca alternativa secundara, ar fi IntelliJ de la JetBrains.La dezvoltarea pentru Windows Mobile, IDE-ul este Visual Studio Express si Blend pentru grafica. Visual Studio Express este dezvoltat de Microsoft, din octombrie 2005.iOS – veteran in domeniuOriginile acestuia se afla in sistemul creat la inceputul anilor ’90: NeXTStep, ce mai apoi a evoluat in cunoscutul Mac OS. Sistemul pentru telefon, iOS, este o varianta ajustata pentru performantele mobilelor. In timp, acestea au evoluat, fiecare noua lansare aducand imbunatatiri vechiului model, lucrandu-se continuu pentru evolutia iOS, urmand niste pasi simpli, din aproape in aproape. Descrierea Xcode versiunea 5

Page 25: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Imaginea de mai sus reprezinta interfata Xcode in versiunea 5. Ca sa intelegem mai bine, vom lua pe rand toate partile acesteia.Aceasta interfata dispune de:

- Toolbar – bara de instrumente- Editor area – spatiul editorului- Navigator area – spatiul de navigare- Debug area – spatiul de depanare- Utility area – spatiul utilitar

Imaginea are rolul de a ne face o ideea asupra subiectului nostru, astfel putem sa ne facem o idee asupra subiectului nostru. In spatiul de navigare iti poti organiza, tria si gasi usor fisierele de care ai nevoie in timpul lucrului la o aplicatie. Tot in aceasta parte, putem folosi si butonul de Cautare printre fisierele existente - tine de accesibilitatea proiectelor si a fisierelor si subfisierelor in dezvoltare sau terminate. Issue Navigator – este partea Xcode care afiseaza instant mesaje de dupa compilarea aplicatiei testate, spunandu-ti exact ce este in neregula si dand si sugestii de fixare a problemei.

In spatiul de editare – aceasta este zona unde magia se intampla – aici se scriu toate codurile ce duc la dezvoltarea unei aplicatii. Aceasta parte dispune si de optiune a a-ti ajusta in modul dorit de tine interfata spatiului de editare. Acest spatiu se transforma intr-o

Page 26: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

platforma de editat designul cand suntem in interfata builder view. Sunt multe scurtaturi prin care poti cauta un anumit cod sau o definitie dupa o clasa anume, ajungand direct la ea prin triere.

Spatiul utilitar – este format din doua parti – panoul de inspectat si panoul librarie. In primul vei gasi ceea ce te intereseaza mai mult despre ce anume ai selectat in navigator, aratandu-ti ce anume poti modifica pentru un anumit segment. Al doilea panou iti este util doar in anumite conditii, doar daca tu cauti ceva anume la un fisier XIB. Aceasta parte este mai putin utilizata, fiind necesara doar in anumite conditii.

Spatiul de depanare – este folosita cel mai des, pentru a gasi problemele aplicatiei si pentru a lucra la indepartarea lor.

Bara de instrumente – acest spatiu iti ofera posibilitatea de a deschide aplicatia in stimulator, si tot aici avem si butoanele editorului, unde poti cauta si deschide alte coduri, impreuna cu butonul de organizare.

Simulatorul pentru iOS – vine o data cu Xcode, si este locul perfect unde iti poti testa aplicatia pentru prima data, indiferent in ce stadiu esti, iar cand esti aproape de termianre, poti gasi un dispozitiv unde sa o testezi. Acesta iti ofera mai multe facilitati, mai multe servicii pe care sa le poti testa.

In concluzie – Xcode este un program destul de usor de manevrat si la indemana fiecaruia, avantajul este ca e rapid la compilare/simulare, dar nu este asa de avantajos in sensul ca unele coduri binare difera fata de aplicatiile create pentru iDevice CPU.Iin cele ce urmeaza, vom vorbi despre al doilea mediu de dezvoltare, specific Windows mobile, Visual Studio Express.

Page 27: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Visual Studio Express este un program usor de folosit si de invatat. Si acesta are in ecranul principal

- Toolbar – bara de instrumente- Properties – proprietati- Search solution Explorer - Toolbox- Editor area

La fel ca si la Xcode, zonele au aceleasi functii si functioneaza pe aceleasi principii de baza, diferenta o face ca in cadrul Cross – platform acesta poate edita si complila proiecte in facute in Eclipse si Xcode. Acest aspect fiind mai mult ca o optiune a canalului de dezvoltare Visual Studio. Acesta este destul de usor de folosit, cu foarte multe indrumari si sugestii la fiecare pas pe care il face utilizatorul. Codificarea are la baza C++, extinzanzu-se catre Java.

Page 28: stst.elia.pub.rostst.elia.pub.ro/news/SO/Teme_SO_2014/2_PetrescuMiGa_OlaruGh…  · Web viewProiectul o sa contina o lista de retete (un meniu dintr-un restaurant) cu cateva mici

Cat despre mediul de dezvoltare Eclipse, el este specific Androidului si a fost creat la inceput ca un proiect al IBM Canada, acum fiind independent, Eclipse Foundation. In magazinul Play de la Google, Eclipse poate fi downloadat, in pachetul Android Developer Tools, impreuna cu Android device emulator si Android Virtual Device.

In partea din stanga a imaginii este afisat AVD-ul, care se comporta ca un telefon real cu OS Android, ce iti permite sa testezi aplicatiile pe diferite versiuni de sisteme de operare si configuratii, fara a accesa adevaratul hardware al telefonului. In timpul crearii aplicatiei pot fi optimizate optiunile: ca densitatea pixelilor, rezolutia, interfata grafica etc. Programarea se face in limbaj Java, softul avand multe posibilitati de a face testari, avand un univers managerial foarte bine dezvoltat si organizat.