Jakie są różnice między aplikacją systemową a aplikacją użytkownika?

28

Ponieważ bawiłem się różnymi ROMami i korzystałem z Titanium Backup, widzę, że aplikacje są podzielone na aplikacje systemowe i użytkownika. Kilku programistów ROM twierdzi, że Titanium Backup powinien być używany tylko do aplikacji użytkownika, a nie do aplikacji systemowych, a kiedy przystąpię do odinstalowywania aplikacji systemowych, TiBu ostrzega mnie, że pamięć ROM może nie działać poprawnie.

Oprócz tego, że aplikacje użytkownika można pobierać za pośrednictwem usługi Market lub w inny sposób, jakie są kluczowe różnice między nimi?

Co takiego jest w aplikacjach systemowych, które sprawiają, że są one bardziej zintegrowane z samym systemem operacyjnym?

Szansa
źródło

Odpowiedzi:

20

/systemtylko do odczytu bez korzenia, dlatego uniemożliwia odinstalowanie aplikacji z /system/appi /system/priv-app. Krytyczne aplikacje są tam umieszczane, aby nie można ich odinstalować. Umieszczane są tam również bloatware przewoźników, których nie chcą oni usuwać. Ta ostatnia kategoria aplikacji może zostać usunięta, jeśli jesteś zrootowany; ten pierwszy, nie tak bardzo.

/system/priv-appumożliwia również zainstalowanym aplikacjom korzystanie signatureOrSystemi inne uprzywilejowane uprawnienia. Odpowiedź Stephena zawiera kilka przykładów.

To, dlaczego aplikacje mogą być krytyczne, zależy od pamięci ROM. Na przykład HTC Sense jest silnie uzależniony od wbudowanych aplikacji. Po prostu nie zaprojektowali swojego interfejsu w taki sposób, aby działał natywnie z aplikacjami innych firm (lub nie działałby ładnie, gdyby brakowało aplikacji systemowych). Inne aplikacje są zasadniczo częścią systemu operacyjnego Android, ale Google zakodowało je jako aplikacje / usługi (prawdopodobnie ze względu na hermetyzację i niezawodność).

Aktualizacje niektórych aplikacji systemowych można pobrać ze Sklepu Play, np. Google Maps. Jeśli nie został zainstalowany jako aplikacja systemowa na urządzeniu, możesz użyć Titanium, aby przekonwertować go z aplikacji użytkownika na aplikację systemową.

Matthew Read
źródło
czy to oznacza również, że aplikacja systemowa nie może zostać zabita przez zabójców zadań? czy że zaczną się automatycznie, jeśli zostaną zabite?
ashishsony
@ashishsony Usługi systemowe są zwykle uruchamiane automatycznie, tak, ale (większość?) aplikacje / usługi można nadal zabić. Na przykład mogę zabić przeglądarkę na swoim urządzeniu. (Wstaw zwykłe porady na temat tego, jak zabójcy zadaniowi są źli).
Mateusz Przeczytał
Prawidłowo, aplikacje systemowe na urządzeniach HTC (nawet takie jak Dropbox, Facebook) są zbyt głęboko zintegrowane z interfejsem Sense. Należy powstrzymać się od ich usuwania; również konwersja aplikacji użytkownika na aplikacje systemowe nie powinna być wykonywana, chyba że jest to bardzo konieczne, ponieważ w niektórych ROM-ach mogą się nie kończyć w warunkach niskiej pamięci.
Ashesh Kumar Singh
1
@wszystka jedna różnica programowa polega na tym, że aplikacja systemowa (prywatna) odbiera transmisję systemową, a nawet force_stop z ustawień aplikacji, gdy aplikacja niesystemowa (użytkownik-aplikacja) nie może odbierać żadnej transmisji, jeśli jest to force_stop z ustawień urządzenia.
Zala Janaksinh,
22

Pozostałe odpowiedzi są poprawne, ale nie wskazują kilku różnic:

Uprawnienia

Aplikacje systemowe mają możliwość żądania określonych uprawnień tylko do systemu, które nigdy nie są dostępne dla aplikacji użytkownika. To nie to samo, co uprawnienia root / sudo / su.

Jednym z przykładów, które znam i używam codziennie, jest możliwość zresetowania licznika powiadomień o nieodebranych połączeniach. Mam Go Dialer, który jest zamiennikiem zapasowego dialera i aplikacji kontaktowej (jak dzwonisz). Kiedy przegapię połączenie, Android informuje mnie o tym za pomocą powiadomienia. Jednak Go Dialer nie może zresetować tego licznika, nawet jeśli poprosi o to pozwolenie podczas instalowania aplikacji. W Androidzie 2.2 i wcześniejszych aplikacje użytkowników mogły go zresetować, ale uczyniły to uprawnienie dostępnym tylko dla systemu uprawnieniem dla Androida 2.3

Przenosząc moją aplikację Go Dialer na partycję systemową, można zresetować ten licznik. Root nie jest wymagany dla aplikacji (z wyjątkiem oczywiście przeniesienia aplikacji na partycję systemową).

Innym uprawnieniem systemu jest możliwość ustawienia bieżącej lokalizacji GPS. Teraz Android ma preferencję, w której możesz zezwolić na fałszywe lokalizacje, więc każda zainstalowana aplikacja fałszowania GPS może zadeklarować lokalizację GPS. Ale jeśli aplikacja znajduje się na partycji systemowej, można wyłączyć fałszywe lokalizacje, jednocześnie pozwalając aplikacji sfałszować lokalizację GPS.

Aktualizacje

Aplikacje systemowe mogą być aktualizowane tak jak aplikacje użytkownika, ale aktualizacja nigdy nie jest zintegrowana z oryginalnym ROM. Oznacza to, że aplikacje systemowe mają unikalną możliwość przywrócenia wersji, która istniała podczas pierwszej instalacji ROM.

Przenieś na kartę SD

Android pozwala użytkownikom przenosić useraplikacje z pamięci wewnętrznej na kartę SD. Aplikacje systemowe nie mogą być przenoszone i zawsze zajmują trochę przestrzeni wewnętrznej. Jednak większość (wszystkich?) Urządzeń ma wewnętrzne aplikacje użytkownika na innej partycji, więc odinstalowanie aplikacji systemowej nie zapewniłoby więcej miejsca na aplikacje użytkownika (poza usuniętą pamięcią podręczną dalvik).

Odzyskasz trochę miejsca, jeśli odinstalujesz jakiekolwiek aktualizacje aplikacji systemowej. Jak wspomniano, aktualizacje nie są zintegrowane z ROM-em i dlatego są przechowywane w przestrzeni użytkownika. Aktualizacje również nie mogą zostać przeniesione na kartę SD, ale jeśli zostaną usunięte, przestrzeń użytkownika zostanie odzyskana.

Jak to na ciebie wpływa

Jeśli jesteś zwykłym użytkownikiem Androida, prawdopodobnie nie spotkasz się ze scenariuszami, w których aplikacja system kontra użytkownik zrobiłaby różnicę. Jeśli jesteś zaawansowanym użytkownikiem, prawdopodobnie masz root, a zatem możesz zmienić aplikację systemową na użytkownika (i odwrotnie), jeśli kiedykolwiek spotkasz się z jedną z tych sytuacji.

Stephen Schrauger
źródło
1
Czy miałeś na myśli „To nie to samo, co uprawnienia root / su”? Wydaje mi się, że to pamiętam sudoi sunie są takie same - przynajmniej w systemach Unix i Linux.
ChuongPham,
Masz rację, że su i sudo różnią się w * nix. Ale sudoma to większe zastosowanie w tym przypadku, ponieważ sudo prosi o uprawnienia roota, podczas gdy supo prostu prosi o zmianę użytkownika. Aby korzystać z su, wystarczy znać hasło do konta, na które się przełączasz; jeśli nie określisz konta, poprosisz o rootowanie. W systemie Android nie ma jednak hasła roota ani żadnych innych kont, więc suużytkownicy znają polecenie uruchamiania w terminalu w celu uzyskania uprawnień roota.
Stephen Schrauger,
W każdym razie zaktualizuję odpowiedź, aby zawierała su, ponieważ to właśnie niektórzy użytkownicy Androida utożsamiają z rootowaniem.
Stephen Schrauger,
4

Aplikacje systemowe to aplikacje wchodzące w skład systemu. Znajdują się one w folderze / system / app.

Zdecydowana większość z nich jest wymagana do uruchomienia urządzenia. Przykładem niektórych z nich jest dialer, który konfiguruje całą łączność sieciową i przeglądarka, bez których nie działałyby żadne widoki internetowe w aplikacji.

Liam W.
źródło
1
Dialer konfiguruje połączenie sieciowe?
Mateusz
2
@MatthewRead Tak - Tak! Rzeczywisty „Dialer” to osobne działanie znajdujące się w aplikacji dialera. Dialer.apk to aplikacja, która konfiguruje łączność - jeśli potrzebujesz dowodu, zamroź aplikacje do przechowywania połączeń i wybierania numerów, sieć nie będzie działać.
Liam W
To dość dziwne!
Mateusz
Android jest dziwny!
Liam W
3

Chciałbym dodać coś do powyższych odpowiedzi. W przeciwieństwie do aplikacji użytkownika nie można usunąć aplikacji systemowych po pełnym przywróceniu ustawień fabrycznych. Jeśli więc chcesz usunąć wszystkie swoje pliki osobiste, ale jest ich zbyt wiele, aby można je było wygodnie usunąć, aby przywrócenie ustawień fabrycznych było najwygodniejsze, a masz aplikacje, które chcesz zachować, możesz przekonwertować je na aplikacje systemowe, aby wygrały nie zostaną usunięte podczas przywracania ustawień fabrycznych.

CCCP
źródło
1
Ciekawa wskazówka! Chcę przenieść moją muzykę do systemu teraz lol
FreeSoftwareServers
2

Inną cechą aplikacji systemowych jest to, że używają bibliotek natywnych ( plików libsomething.so ) ze wspólnego katalogu bibliotek systemowych (zazwyczaj / system / lib lub / system / lib64 ), a nie z katalogu bibliotek prywatnych aplikacji (np. / Data /app/com.example.HelloJni/lib/arm ). Przed Androidem Nougat aplikacje użytkownika mogły swobodnie ładować i używać rodzimych bibliotek systemowych. Ograniczenia zostały nałożone później, patrz https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk .

Alex Cohn
źródło