Czy aplikacje na Androida będą mogły działać w Ubuntu touch natywnie?

28

Zastanawiam się, dlaczego aplikacje na Androida nie będą mogły działać natywnie na Ubuntu Touch . Mam na myśli, czy to nie tylko Linux?

użytkownik 287536
źródło
1
Środowisko pulpitu ma duży wpływ na kompatybilność aplikacji.
Patrick C. James
8
To jest całkiem dobre pytanie. Nooby, ale bardzo ważny. Zyskaj głos.
don.joey
Zgadzam się z @ don.joey, ponieważ nie jest to coś łatwego do zbadania poza wnioskiem typu „tak” lub „nie”.
MGodby
Odbyła się interesująca dyskusja na temat najnowszego koncertu ubuntu, która obejmowała większość tego tematu: youtube.com/watch?feature=player_embedded&v=etMduYRRwDc 25:00 27:10 52:45 54:47 55:20 <znaczniki czasu na niektórych istotnych tematach punkty
Mateo,
Czy to nie problem, że prawdopodobnie mają różne procesory?
Kevin Fegan

Odpowiedzi:

24

Krótka odpowiedź brzmi „nie”.

Ściśle mówiąc, jądro Linuksa zapewnia niewiele więcej niż bezpośredni interfejs do sprzętu, na którym działa. Istnieje cały stos dodatkowych interfejsów API, programów, aplikacji itp. Specyficznych dla telefonów z Androidem, od których zależą aplikacje na Androida. Ponadto system Android nie działa na standardowym jądrze Linuksa, ale działa na takim, który został wysoce spersonalizowany przez Google w celu uruchomienia jego systemu operacyjnego.

Nawet jeśli technicznie możliwe jest odtworzenie całego stosu wymaganego do uruchomienia aplikacji Android na innym systemie, byłby rozdęty i bardzo nieefektywny.

MGodby
źródło
3
Zgadza się - uruchamianie zestawu bibliotek telefonicznych na komputerze stacjonarnym, który jest 10 razy mocniejszy, jest wyjątkowo nieskuteczne ? Od dziesięciu lat używamy emulatorów telefonów komórkowych na komputerach stacjonarnych.
MSalters,
3
Odpowiedziałem przy założeniu, że pytający miał na myśli natywnie, tj. Bez emulatorów lub wirtualizacji.
MGodby
5
@MSalters Emulator zużyłby więcej zasobów do wygenerowania tego samego wyniku w porównaniu do programu rodzimego. To właściwie definicja nieefektywności. Z mojego doświadczenia wynika, że ​​emulatory Androida są bardzo wolne.
jmathew
1
@jmathew Z perspektywy dewelopera (przynajmniej mojej) jedną z korzyści jest to, że jeśli aplikacja działa dobrze w emulatorze na powolnej maszynie, to będzie działać całkiem dobrze na stosach tanich telefonów z okazjami.
zxq9,
2
@jmathew Myślę, że MSalters starał się powiedzieć, że kiedy kilka lat było praktyczne korzystanie z emulatora, wtedy nie ma mowy, aby natywna obsługa tego samego była nieefektywna.
kasperd
1

Nokia n900 maemo ma czarownicę, która jest systemem Linux, a jednak może uruchamiać aplikację na Androida za pośrednictwem środowiska Dalvik, które zostało dla niej opracowane, ale nigdy nie zostało wprowadzone na rynek ani repozytoria. Czemu? Tylko społeczeństwo, które opracowało dalvik dla n900, wie. Teraz była kolejna inicjatywa o nazwie apkenv. Wydaje się, że nie było tak wiele do dodania, aby N900 działał na niektórych grach na Androida i bez względu na moc procesora, procesora lub pulpitu maemo, aplikacje działają tam jak jezioro w dowolnej emulacji, ale niektóre działają idealnie, a niektóre nie. Tak więc w przypadku Ubuntu Touch nie chodzi o technikę (może się mylę, ale jeden oficjalny telefon dotykowy Ubuntu to Xiaomi, który jest również używany na Androidzie, więc sprzęt nie jest problemem w tym przypadku), ale chce i przyzna, że ​​Google wygrał '

Patrick
źródło
1

Odpowiedź na twoje pytanie jest DUŻA NIE.

Android różni się całkowicie od Ubuntu Touch, chociaż Android jest oparty na jądrze Linuksa, ale to nie znaczy, że natywne aplikacje Androida mogą działać na Linuksie i odwrotnie.

Podobieństwo jądra między różnymi systemami operacyjnymi nie powoduje, że ich aplikacje mogą być wykonywane w tych systemach operacyjnych. Jądro jest najniższą warstwą oprogramowania w systemie. Nad jądrem znajduje się przestrzeń użytkownika, która składa się z oprogramowania systemowego i interfejsu aplikacji .

System operacyjny z tym samym jądrem może mieć całkowicie różne przestrzenie użytkownika, a aplikacje rodzime działają w określonej przestrzeni użytkownika.

Co więcej, aplikacje na Androida są opracowywane zwykle przy użyciu java, a aplikacje na Androida uruchamiane są w środowisku wykonawczym ( Dalvik lub ART ), które pobiera kod bajtowy z JVM jako dane wejściowe, podczas gdy aplikacje linuxowe są po kompilacji przekształcane bezpośrednio w kod maszynowy .

Aplikacje opracowane dla Androida za pomocą C ++ nie mogą być uruchamiane bezpośrednio w środowisku linux, ale najpierw muszą zostać skompilowane dla systemów Linux.

Faizan Akram Dar
źródło