Încă de când Xamarin a venit pe scenă acum câțiva ani, dezvoltatorii C # au fost încântați de posibilitatea de a crea aplicații mobile care vizează platforme non-Microsoft. Este destul de entuziasmat că putem scrie acum aplicații într-o limbă pe care o cunoaștem foarte bine și să le putem distribui marilor jucători din spațiul mobil, iOS și Android.
Deoarece aceste aplicații pot fi scrise într-o singură limbă, este logic să doriți să scrieți o singură bază de cod care să se compileze în aplicații separate pentru diferitele platforme și să ne permită în cele din urmă să ajungem în lumea Scrie o dată, alergi oriunde / oriunde. Asta sună bine pe hârtie, dar nu era cazul.
Conceptul de a scrie o aplicație o singură dată și de a putea rula pe mai multe platforme nu este unul nou. Dezvoltatorii au încercat să realizeze acest lucru de mai mulți ani cu aplicații desktop și server scrise în Java sau C / C ++ și compilate pe platformele specifice. De ce ar trebui aplicațiile mobile să fie diferite? Răspunsul simplu este că nu sunt. În calitate de dezvoltatori de aplicații mobile, întâlnim aceleași probleme majore trans-platforme pe care le fac și alții, interfața cu utilizatorul.
Când vine vorba de scrierea oricărui tip de software pe care doriți să îl puteți rula pe diferite platforme, uşor parte este logica. De uşor, Adică partea din aplicație care nu se schimbă indiferent de platforma pe care o vizați. Indiferent de ce platformă vizați, va trebui în continuare să obțineți date din servicii, baze de date, fișiere etc. Cotele sunt că acest lucru se va schimba foarte rar. Partea care se schimbă este interfața utilizator. Acest lucru se datorează în primul rând diferențelor inerente ale diferitelor platforme. Fiecare platformă va avea propriul SDK, definind capabilitățile platformei, precum și componentele și caracteristicile lor vizuale.
Când vă uitați la peisajul mobil de astăzi, veți găsi rapid că există trei jucători mari, iOS, Android, și Windows Phone. Acești trei sunt în competiție constantă pentru a încerca să-i facă pe ceilalți să câștige o cotă de piață mai mare. Dar, în viitorul apropiat, acestea sunt platformele pe care veți dori să le vizați. Motivul pentru care dezvoltarea pe mai multe platforme pe mobil poate fi dificilă se datorează diferențelor fundamentale în ceea ce privește interfața utilizator. Un buton nu mai este doar un buton. Un buton este a UIButton
cu XML pe iOS, a Buton
cu AXML pe Android, și a Buton
cu XAML pe Windows Phone.
Ca și în cazul majorității cadrelor inter-platforme, Xamarin a avut, de obicei, o strategie similară atunci când vine vorba de limitarea durerii de cap cauzate de UI, împărțirea logicii din interfața cu utilizatorul.
În lumea C #, această strategie vă va lăsa cel puțin cu cel puțin N + 1 proiecte în cadrul soluției dvs. Veți avea cel puțin un proiect pentru fiecare dintre N platforme vizați și va trebui să aveți cel puțin un proiect care să conțină tot codul partajat de care se bazează aplicația. În acest fel, puteți avea proiecte specifice platformei pur și simplu să se refere la proiectul de cod partajat și trebuie doar să vă faceți griji cu privire la modul de vizualizare a datelor. Datorită unor noi funcționalități în cadrul .NET și Mono, aveți câteva opțiuni.
Bibliotecile de clasă portabile sau PCL-urile au venit pe primul loc. Este mai ușor să vă gândiți la PCL-uri ca biblioteci de clasă normală, doar cu funcționalitate limitată. Este mai ușor să înțelegeți acest concept cu un exemplu. Începeți prin a crea o nouă soluție / proiect și denumiți-o PCLDemo și selectați Biblioteca de clasă (portabilă) ca șablon de proiect.
Când faceți clic pe O.K în Visual Studio, veți vedea o altă fereastră care arată asemănătoare cu aceasta:
În funcție de instrumentele pe care le-ați instalat, acestea pot părea puțin diferite. În acest ecran, aveți posibilitatea să vizați mai multe platforme sau mai puține pe cât doriți. Regula principală este să alegeți doar platformele pe care trebuie să le vizați absolut. Motivul pentru aceasta este că cu cât mai multe platforme pe care doriți să le vizați, cu atât mai puține caracteristici vor fi incluse în această bibliotecă. Pentru o listă actualizată a caracteristicilor suportate de diferitele platforme, consultați Cross Platform Development cu pagina de bibliotecă clasă portabilă de pe MSDN.
Dacă nu selectați platformele potrivite în acest dialog, puteți întâmpina probleme de incompatibilitate mai târziu. Pentru a vedea acest lucru în acțiune, debifați cele trei opțiuni de jos:
Acum, creați un nou proiect al unuia dintre tipurile pe care ați eliminat suportul din PCL. De exemplu, puteți crea un nou proiect Xamarin.Android utilizând oricare dintre șabloanele furnizate. Odată ce proiectul este creat, faceți clic dreapta pe Referințe și selectați Adăugați o referință. În Manager de referință , selectați Soluție> Proiecte din filtrul din stânga și bifați caseta de lângă PCLDemo proiect.
Când faceți clic pe O.K, veți vedea o eroare cum ar fi:
Această eroare vă permite să știți că proiectul în care vă aflați în prezent este incompatibil cu obiectivele disponibile în PCL selectat. Puteți rezolva acest lucru prin trecerea în proprietățile proiectului PCL și schimbarea țintelor. Dar rețineți că, cu cât sunt mai multe ținte, cu atât mai puține caracteristici acceptate.
Chiar dacă există câteva lucruri pe care trebuie să le urmăriți atunci când folosiți PCL-uri, există câteva avantaje foarte frumoase.
Atunci când alegeți o nouă tehnologie sau o platformă de utilizat, trebuie să înțelegeți și dezavantajele care trebuie abordate.
Dacă PCL-urile par prea limitate pentru dvs. ca o alegere pentru codul partajat, există o altă opțiune.
În versiunea recentă a Visual Studio 2013 Update 2, Microsoft a adăugat suport pentru Proiecte partajate. Proiectele comune sunt un alt mod de a partaja codul între diferite platforme, în unele moduri similare cu PCL-urile și în alte moduri drastic diferite. Să începem prin crearea unui exemplu simplu.
Începeți prin a crea o altă soluție / proiect în Visual Studio și dându-i un nume de SharedDemo și selectarea Proiect comun (gol) ca șablon.
Dacă nu vedeți Proiect comun (gol) ca o opțiune, asigurați-vă că aveți cea mai recentă versiune de Visual Studio 2013 Update 2. Dacă utilizați cea mai recentă versiune și încă nu o vedeți, este posibil să fie necesar să instalați extensia Manager asociat proiect.
După ce faceți clic pe O.K, Visual Studio va crea un nou proiect pentru tine în Soluție Explorer, dar va arăta puțin diferit decât v-ați obișnuit.
Pare puțin cam singuratic, nu? Nu este Proprietăți dosarul și nr Referințe pliant. Ce se întâmplă? Aceasta este frumusețea și adesea sursa confuziei pentru majoritatea dezvoltatorilor. În mod implicit, un proiect partajat nu conține într-adevăr acces la nicio funcționalitate. Există niște magie care se întâmplă în spatele scenei în Visual Studio / Xamarin Studio, dar veți vedea că în curând.
O altă caracteristică ciudată a unui proiect comun este că nu îl puteți construi. Dacă urmați clic dreapta soluția sau proiectul, nu ați vedea opțiuni pentru construirea, rularea sau depanarea acestui proiect. Pentru a înțelege de ce este acest lucru, trebuie să faceți un pas înapoi pentru o clipă.
Care este scopul construirii unui proiect? Scopul este de a vă transforma codul dintr-un text într-un fișier real care poate fi utilizat de sistemul pe care îl executați sau de o altă aplicație. De aceea nu puteți crea un proiect comun, nici un fișier de ieșire nu este generat de acesta. Acest proiect specializat are un scop complet diferit.
Atunci când creați un proiect comun și scrieți cod în el, puteți adăuga referințe la acesta din alte proiecte cât doriți. Nu există platforme care să vizeze sau să urmeze reguli. Acesta este primul diferențiator de la PCL-uri. Să continuăm cu un exemplu. Creaza un nou Xamarin.Android și / sau Xamarin.iOS proiect în soluția dvs. și numiți-le în mod corespunzător, SharedDemo.Android și / sau SharedDemo.iOS.
Acum că aveți un proiect nou, faceți clic dreapta pe Referințe și selectați Adăugați o referință de proiect comună. Dacă nu vedeți această opțiune, este posibil să fie necesar să examinați adăugarea extensiei Managerului de referință al proiectelor partajate.
De aici, faceți clic pe O.K și ar trebui să vedeți ceva similar cu acesta:
Aici intră magia. Codul conținut cu un proiect comun va fi compilate în orice proiecte care o fac referire. De aceea nu le puteți construi direct, au nevoie de ceva pentru a le referi înainte de a fi construite și compilate. Faptul că ele pot fi adăugate la orice proiect ca referință fac parte din motivul pentru care sunt candidați atât de buni pentru dezvoltarea pe mai multe platforme.
Celălalt motiv pentru care sunt candidați buni pentru dezvoltarea pe mai multe platforme este sprijinul pentru directivele compilatoare. Puteți plasa cecuri pentru directive speciale în cadrul proiectelor dumneavoastră partajate, astfel încât numai anumite platforme să obțină anumite funcționalități sau ca lucrurile să fie tratate diferit pe diferite platforme. Următoarele directive pot fi găsite în proiectele de platformă:
__MOBIL__
Xamarin.Android și Xamarin.iOS__IOS__
Proiectele Xamarin.iOS__ANDROID__
Proiectele Xamarin.Android__ANDROID_xx__
Proiectele Xamarin.Android unde xx
este înlocuită de versiunea Android API vizatăWINDOWS PHONE
Proiecte Windows PhoneSilverlight
Proiecte Windows PhonePuteți folosi aceste directive în interior # ifdef
blochează pentru a verifica platforma pe care rulează și folosiți compilația condiționată pentru a include doar ceea ce este necesar în fiecare proiect. Acest lucru este făcut pentru dvs. de către compilator. Să vedem un exemplu.
În tine SharedDemo proiect, adăugați o nouă clasă numită Reţetă și înlocuiți implementarea implicită cu următoarele:
public class Rețetă șir public ShortName get; a stabilit; #if __iOS__ sirul public LongName get; a stabilit; #de listă publicăIngrediente get; a stabilit; Listă publică Direcții get; a stabilit;
Acesta este un exemplu de contur, dar serveste pentru a ilustra un punct simplu. Deoarece mă refer la acest cod dintr-un proiect Xamarin.Android, clasa Rețetă va conține doar 3 proprietăți, Nume scurt
, ingrediente
, și Directii
. Dacă acest cod a fost menționat de un proiect Xamarin.iOS, acesta ar conține și LongName
proprietate.
Este mai probabil să utilizați aceste directive în situațiile în care vă confruntați cu divergențe de platformă. Zonele comune de divergență pe aceste platforme mobile au de-a face cu accesarea hardware-ului, a sistemului de fișiere, etc. Acum puteți plasa codul platformei în Proiectul partajat împărțit de directive și Visual Studio va gestiona compilația specifică platformei pentru proiectele corespunzătoare. Foarte frumos.
Proiectele comune conțin câteva caracteristici foarte frumoase care ajută la crearea de proiecte cross-platform.
În timp ce proiectele comune au caracteristici frumoase, există câteva caracteristici care nu sunt atât de dezirabile.
Acum sunteți conștient de strategiile de bază pentru partajarea logicii aplicației. Este timpul să începeți să vă uitați la interfața de utilizare a aplicației. În cea mai recentă lansare a versiunii 3 a Xamarin, una dintre caracteristicile cele mai interesante este introducerea Xamarin.Forms. Xamarin.Forms este o bibliotecă care conține abstracții ale controalelor UI tipice care cuprind interfața de utilizare a aplicației. Când aceste controale sunt utilizate pe platformele specifice, acestea sunt mapate pentru a face comenzi native UI, astfel încât să obțineți aspectul și simțul componentelor native.
Structura de bază a aplicației dvs. cross-platform nu se modifică. Veți continua să respectați regula N + 1 în ceea ce privește proiectele, însă veți trece acum codul UI specific platformei de la proiectele specifice platformei în Proiectele partajate. Înainte de a ajunge prea departe de noi înșine, trebuie să înțelegem nevoile și cerințele nu numai de a rula, ci și de a dezvolta aplicații Xamarin.Forms.
Există câteva cerințe dacă doriți să profitați din plin de Xamarin.Forms. Pentru a utiliza Xamarin.Forms, aplicația dvs. trebuie să vizeze următoarele platforme:
Aceasta înseamnă că dacă intenționați să vizați unele dintre versiunile mai vechi ale acestor platforme, nu veți putea utiliza Xamarin.Forms. Pe lângă restricțiile vizate de platformă, există și câteva cerințe privind sistemul de dezvoltare.
După ce ați descărcat și configurați totul, sunteți gata să începeți.
Ideea de bază din spatele Xamarin.Forms este simplă, vă referiți la comenzile UI comune în același mod, indiferent de platformele pe care le vizați. Un buton este un buton este un buton. Veți crea aceste controale și le veți da caracteristici vizuale și funcționalitate. Apoi veți folosi a schemă
pentru a poziționa comenzile pe ecran și a afișa totul pe a Pagină
. Dacă sunteți obișnuit să utilizați terminologia specifică platformei pentru a descrie componentele UI ale aplicațiilor dvs., obișnuirea cu termenii noi poate dura ceva timp. Din fericire, există doar câteva concepte de înțeles.
În Xamarin.Forms, Paginile reprezintă ecranele efective ale aplicației dvs. În ceea ce privește alte platforme, a Pagină
este un Activitate
pe Android, a UIViewController
pe iOS și a Pagină
pe Windows Phone. Pagină
este obiectul principal pe care îl veți ocupa atunci când lucrați cu tranziții și navigație. Deasemenea o Pagină
conține doar un singur copil, care în cele mai multe situații este un tip schemă
.
Aspecturile sunt controale utilizate pentru a organiza componentele UI pe dvs. Pagină
într-un mod logic. Intr-un schemă
, puteți seta caracteristicile comenzilor UI, cum ar fi poziția și dimensiunea. Puteți adăuga orice număr de componente UI la un aspect, inclusiv controale și altele schemă
obiecte.
În Xamarin.Forms, vizionările sunt ceea ce ați face referire în mod curent ca controale. Comun Vedere
obiecte din Xamarin.Forms sunt Buton
, Eticheta
, și ListView
, a numi câteva. schemă
clasa de fapt, moștenește de la Vedere
clasa, ceea ce înseamnă că pot fi tratate în același mod și au fost adăugate schemă
obiecte.
Celulele sunt componente de UI specializate folosite pentru a personaliza ceea ce în mod obișnuit va fi denumit ca și rânduri ListView
și UITableView
obiecte. Sunt pre-construite celulă
tipuri pentru a adăuga un număr de personalizări diferite la dvs. Vedere
obiecte.
Pentru a crea o aplicație Xamarin.Forms de bază, deschideți Visual Studio, selectați Fișier> Proiect nou, selectează Aplicații pentru mobil și selectați șablonul corespunzător. Am ales Aplicație Blank (Xamarin.Forms Shared) șablon. Aceasta va crea o aplicație Xamarin.Forms utilizând Proiect comun șablon.
După ce faceți clic O.K, soluția dvs. va fi creată cu patru proiecte. După cum sa discutat anterior, veți avea trei proiecte specifice platformei și un proiect comun. Proiectul comun conține logica aplicației, precum și codul Xamarin.Forms care va fi responsabil de crearea ecranelor (Pagină
obiecte) ale aplicației dvs..
Dacă deschideți SampleFormsApp proiect, veți vedea o singură clasă numită App.cs. Acesta este fișierul principal al proiectului care conține Pagină
definiții care vor apărea în final pe platformele țintă. Este o clasă simplă care conține numai următoarele:
public clasă App public statică Page GetMainPage () returnează ContentPage noi Content = new Label Text = "Hello, Forms!", VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand,;
Clasa App
este destul de simplu prin aceea că conține numai o singură metodă statică care returnează a Pagina de conținut
obiect. A Pagina de conținut
obiect este cel mai de bază, nu-bibelouri Pagină
pe care le puteți crea. Este mai ușor să te gândești la a Pagina de conținut
ca o pânză neagră pe care o poți face cu ce vrei tu. Există foarte puțină funcționalitate încorporată în ea.
Veți găsi de obicei cel mai mult Pagină
obiectele au a Conţinut
proprietate care vă permite să atribuiți Vedere
obiectează la ea. În acest caz, este simplu Eticheta
vizualizați printurile "Bună ziua, Formulare!" la ecran, oferindu-i câteva formate de bază pentru centrifugare.
Pentru a obține asta Pagina de conținut
pentru a încărca pe fiecare platformă pe care o vizăm, există un anumit cod specific pentru platformă, care trebuie să fie inclus în fiecare dintre proiectele de platformă. Să aruncăm o privire mai întâi la proiectul iOS. Deschide SampleFormsApp.iOS proiect și să aruncați o privire la AppDelegate.cs fişier. Acesta este fișierul care conține cablajul în lumea Xamarin.Forms.
suprascriere publică bool FinishedLaunching (aplicație UIApplication, opțiuni NSDictionary) Forms.Init (); fereastră = noua fereastră UIWindow (UIScreen.MainScreen.Bounds); fereastra.RootViewController = App.GetMainPage () CreateViewController (); window.MakeKeyAndVisible (); return true;
Mai întâi inițializăm biblioteca Xamarin.Forms cu invocarea Forms.Init ()
. După aceea, singurul cod personalizat este setarea window.RootViewController
proprietate la rezultatul App.GetMainPage (). CreateViewController ()
apel. Această linie va lansa în lumea Xamarin.Forms și totul din acel punct va continua să folosească Xamarin.Forms.
Procesul de inițializare a Xamarin.Forms în Android și Windows Phone este foarte asemănător. Vei suna init
și setați valoarea inițială Pagină
să fie rezultatul App.GetMainPage ()
metodă. Asa arata cum arata SampleFormsApp.Android proiect în MainActivity.OnCreate
metodă.
protejat override void OnCreate (pachet Bundle) base.OnCreate (pachet); Xamarin.Forms.Forms.Init (acest pachet); SetPage (App.GetMainPage ());
Și în SampleFormsApp.WinPhone proiect în Pagina principală
constructorul clasei parțiale Pagina principală
:
public MainPage () InitializeComponent (); Forms.Init (); Conținut = SampleFormsApp.App.GetMainPage () ConvertPageToUIElement (acest);
Ar trebui să aveți acum o înțelegere de bază a Xamarin.Forms, precum și ceea ce puteți realiza folosind. Călătoria în această tehnologie uimitoare nu se oprește aici. Veți avea o altă alegere înaintea dvs. când utilizați Xamarin.Forms, care are de a face cu aspectul. Și tocmai asta va fi acoperit în tutorialul următor.
Dacă doriți să aflați mai multe despre Xamarin, verificați cursul pe care l-ați construit Aplicații multi-platformă cu C # în Xamarin.
În curs, veți învăța cum să creați o aplicație cross-platformă dintr-o bază de cod unică, care va funcționa pe trei platforme diferite: iOS, Android și Windows Phone 8. Credeți că nu se poate face? În doar puțin timp o veți face singur. Sa trecem la treaba.
Puteți să o luați imediat cu un complet gratuit Studiu de 14 zile al unui abonament Tuts +. Aruncati o privire la optiunile noastre de abonament pentru a incepe sau, daca sunteti interesat doar de acest curs, o puteti cumpara individual pentru 15 $! Iată o previzualizare pentru a începe: