Cum funcționează Mono Framework de la .Net pe Android (Inginerie software, Java, Android, Mono)

EdgeDev a intrebat.
a intrebat.

Android utilizează versiunea modificată a JVM, cunoscută sub numele de Android Runtime, pentru a executa aplicațiile Android.

Cum rulează jocurile (cu Unity 3d) și aplicațiile (Xamarin) scrise în C# (care necesită cadrul Mono de la dot Net) pe Android?

Site-ul oficial al mono spune

Runtime-ul Mono a fost portat pe sistemul de operare Android.

Ce înseamnă asta mai exact?

Mono este inclus în sistemul de operare Android?

Mono este inclus în pachet cu fiecare aplicație și joc?

Conform acest răspuns de pe forumul Unity3d. Se spune că Mono este similar cu Java, în ceea ce privește posibilitatea de a dezvolta software pentru mai multe platforme.

Acest lucru duce înapoi la întrebarea mea inițială,

android are două runtimes (Mono și ART)?

1 răspunsuri
Robert Harvey

Iată o versiune simplificată a Arhitectura Mono:

Inima acestei arhitecturi este reprezentată de Common Language Runtime sau CLR. CLR conține un compilator Just-In-Time (JIT) care convertește limbajul intermediar comun (IL) în codul nativ al platformei pe care se execută. Acesta are același scop ca și JIT-ul din Java.

În practică, acest lucru înseamnă că aveți nevoie doar de un singur compilator C# care va funcționa pentru orice platformă. Compilatorul respectiv ia C# ca intrare și produce IL ca ieșire. Există un singur CLR scris pentru fiecare platformă.

Atunci când se spune că Mono a fost portat pe Android, ceea ce se înțelege în general este că s-a scris un CLR pentru Android. Biblioteca de clase (echivalentă cu .NET Framework pe un sistem Windows) este scrisă în cea mai mare parte (dacă nu în întregime) în C# și IL și, din moment ce C# se compilează în IL, Framework-ul ar trebui să fie deja compatibil.

Comentarii

  • Există câteva clase în biblioteca standard care trebuie, de asemenea, să fie portate pentru a fi compatibile cu noua platformă, în special clasa Environment și Process clasele. Există două strategii principale pentru Android: compilați pentru timpul de execuție Android (Dalvik: ro.wikipedia.org/wiki/Dalvik_(software) ) sau să implementeze CLR-ul peste Dalvik. Presupun că au făcut prima variantă. –  > Por Berin Loritsch.
  • Corecție, Dalvik este acum Android RunTime (ART), dar se aplică aceleași strategii. –  > Por Berin Loritsch.
  • @BerinLoritsch: Sunt destul de sigur că nu au făcut nici una, nici alta. Mono rulează deja pe Linux, iar Android este doar Linux. Nu este nevoie de o implementare Java a Mono care să ruleze pe ART, și nici nu este nevoie de un compilator încrucișat CIL -> ART, atunci când puteți rula doar runtime-ul Mono existent în mod nativ. De asemenea, spre deosebire de CLR-ul Microsoft, Mono a susținut întotdeauna compilarea nativă înainte de timp, care este ceea ce folosește de fapt Xamarin. –  > Por Jörg W Mittag.
  • Acest lucru nu răspunde la întrebarea principală – dacă Mono face parte din sistemul de operare Android sau este inclus în fiecare aplicație. –  > Por Rumen Georgiev.