2014-05-10 12 views
7

Znalazłem, że aplikacje Xamarin działają w Mono runtinme na Androida, a rzeczy trafiają do Dalvik. Ale nie rozumiem, jak to możliwe, że aplikacja działa w Mono, ale normalna aplikacja jest wykonywana w Dalvik. To, co jest tak różne w Mono, że działa w Mono, a nie Dalvik.Mono dla Androida - jak to działa?

W jaki sposób Mono może być na tym samym poziomie co Dalvik? Mono powinien być jakoś przechowywany w aplikacji, która działa w Dalvik, jak sądzę.

Proszę wyjaśnić mi, jak to jest możliwe, i przepraszam za mój wulgaryzm.

Architecture

+2

Nie wiem, dlaczego tak wiele pochlebstw i bliskie pytania? Jeśli odpowiedź jest tak oczywista, zrób to szybko –

+0

Z powodu natury open source zarówno Mono, jak i Dalvik/Android, podczas gdy Xamarin.Android nie jest open source, twoje pytanie dotyczące szczegółów technicznych może tylko wzbudzić podejrzenie twoich intencji . Czy naprawdę interesują cię szczegóły techniczne, czy planujesz je sklonować od zera? SO jest miejscem wymiany wiedzy, ale nie sądzę, że jest to miejsce dla inżynierii wstecznej. BTW, nie głosowałem jeszcze na twoje pytanie. –

Odpowiedz

8

Aplikacja opracowany przez Xamarin ma czas pracy mono którym zaczyna się to do urządzenia. Plik APK zawiera pośredni kod .net, p-code, co oczywiście nie jest zrozumiałe dla Dalvika.

Twórcy Xamarin.Android uzyskują dostęp do różnych funkcji systemu operacyjnego przez wywoływanie ich w interfejsach API .NET, które znają (w przypadku dostępu niskiego poziomu) lub za pomocą klas odsłoniętych w przestrzeniach nazw systemu Android, które stanowią pomost do interfejsów Java API. które są eksponowane przez Dalvika.

http://docs.xamarin.com/guides/android/under_the_hood/architecture/ Tutaj można znaleźć więcej informacji.

+0

OK, rozumiem. Ale kiedy uruchamiam normalną aplikację java, działa ona w Dalvik. Coś w aplikacji określa, w którym uruchomionym środowisku uruchomionym? To, czego nie rozumiem, to to, jak Dalvik może być na tym samym poziomie co Mono, kiedy Mono jest zawarte w aplikacji –

+1

Kiedy masz aplikacje na Androida napisane w Javie, są one kompilowane do kodu bajtowego. Są one następnie konwertowane z plików klas Java zgodnych z JVM do plików kompatybilnych z Dalvik .dex i odex przed instalacją na urządzeniu. Ale tutaj masz aplikacje napisane w języku C#. Istnieje więc zapotrzebowanie na coś, co poradzi sobie ze złożeniami C#, które oczywiście są mono. MFA (Mono dla systemu Android) zapewniający środowisko wykonawcze Mono, może owijać wokół i wywoływać środowisko uruchomieniowe Dalvik lub nawet całkowicie ominąć Dalvik. To, co się wydarzy, zależy od kodu. –

+2

Teraz Mono nie jest domyślnie obecny na urządzeniach z Androidem. Musi być więc sposób, w jaki można go umieścić i uruchomić na urządzeniu. Tak więc pakiet aplikacji jest oczywistym sposobem, w jaki możemy to zrobić. I nawet możemy mieć mono działające, co z kolei może uruchomić naszą aplikację. Przyjmij odpowiedź, jeśli pomogło ci to w jakiś sposób. –