Uprawnienia Androida zapewniają kontrolę, która zwiększa świadomość użytkowników i ogranicza dostęp aplikacji do poufnych danych. Konfigurowanie uprawnień w systemie Android 8.0 i starszych obejmuje listę dozwolonych, bez której uprzywilejowane aplikacje są wyłączone, nawet jeśli znajdują się w ścieżce priv-app
. W systemie Android 9 lub nowszym urządzenie, które próbuje korzystać z aplikacji, które nie są prawidłowo umieszczone na liście dozwolonych, nie uruchamia się.
Android 10 wprowadził pojęcie roli , unikalnej nazwy w systemie związanej z określonymi wymaganiami i uprawnieniami. Przypisz role do aplikacji, aby przyznać im uprawnienia do określonego celu, i skonfiguruj role domyślne, korzystając z zasobów konfiguracji platformy.
Zwiększona ochrona przed potencjalnie szkodliwymi aplikacjami (PHA) poprawia się
- Przejrzystość na potencjalnie szkodliwe zachowanie aplikacji.
- Kontrola użytkownika nad zachowaniem aplikacji.
- Swoboda twórców aplikacji podczas korzystania z prywatnych danych chronionych uprawnieniami.
Instalacja pakietu i uprawnienia
W systemie Android 9 i niższych funkcje instalacji pakietu i kontroli uprawnień były zawarte w pakiecie PackageInstaller
( //packages/apps/PackageInstaller
). W systemie Android 10 i nowszych funkcja kontroli uprawnień znajduje się w osobnym pakiecie PermissionController
( //packages/apps/PermissionController
). Rysunek 1 pokazuje, gdzie znajdują się te dwa pakiety w systemie Android 10.

Listy dozwolonych i dostęp
W Androidzie 6.0 i nowszych aplikacje żądają dostępu do niebezpiecznych uprawnień w czasie wykonywania . Android 10 dodaje uprawnienia do rozpoznawania aktywności (AR), które skłaniają użytkownika do modyfikacji lub zezwolenia na niebezpieczne uprawnienia.
Android 8.0 wymagał jawnej listy dozwolonych aplikacji uprzywilejowanych w plikach XML konfiguracji systemu w katalogu /etc/permissions
. W systemie Android 9 i nowszych uprawnienia uprzywilejowane muszą być na liście dozwolonych lub urządzenie nie może się uruchomić.
Aby ograniczyć widoczność wewnętrznego interfejsu API i zapobiec przypadkowemu dostępowi aplikacji do bibliotek platformy, w systemie Android 7.0 wprowadzono przestrzenie nazw dla bibliotek natywnych . Oddziela to biblioteki systemowe od bibliotek aplikacji, a producenci urządzeń mogą dodawać własne biblioteki natywne.
Aplikacje na Androida 10 muszą mieć zarówno uprawnienia do podpisu, jak i zgodę użytkownika na dostęp do zawartości ekranu urządzenia . Uprzywilejowane aplikacje, które opierają się na funkcji cichego przechwytywania, takie jak robienie zrzutów ekranu, powinny zamiast tego używać klasy MediaProjection .
Przejrzystość i prywatność
W Androidzie 6.0 i nowszych fabryczny adres MAC urządzenia jest chroniony przed dostępem dostawców usług Wi-Fi i analizatorów pakietów. Dodatkowe ograniczenia od Androida 10 ograniczają aplikacjom dostęp do niezmiennych identyfikatorów urządzeń (ID) , chyba że są one dozwolone na liście uprawnień uprzywilejowanych . (Sekcja Łączność zawiera powiązaną dyskusję na temat identyfikatorów urządzeń , ponieważ ma to wpływ na operatorów).
W Androidzie 9 i starszych użytkownicy dokonują stałych wyborów, przyznając aplikacjom dostęp do lokalizacji. Począwszy od Androida 10, funkcja trójstanowych uprawnień do lokalizacji daje użytkownikom trzy opcje zezwalania aplikacji na dostęp do lokalizacji urządzenia. Te wymagania dotyczące uprawnień są stosowane do aplikacji w systemie Android 10 niezależnie od docelowego pakietu SDK.
Skonfiguruj uprawnienia dla innych funkcji przejrzystości i prywatności, począwszy od Androida 10
- Przypomnienie o lokalizacji dostępu w tle pokazuje użytkownikom, kiedy aplikacja uzyskuje dostęp do lokalizacji ich urządzenia przy użyciu uprawnienia
ACCESS_FINE_LOCATION
w tle. - Dostęp do danych związanych z powinowactwem kontaktów, zarządzanych przez komponent Dostawca kontaktów, jest inny: aplikacje nie mogą zapisywać ani odczytywać danych powiązań kontaktów w bazie danych. Ma to wpływ na interfejsy API związane z wywołującym .
Usprawnione konfiguracje
Konfiguracje uprawnień zostały uproszczone dla Androida 6.0 i nowszych.
- Możliwości otoczenia dla usług uruchamianych przez
init
utrzymują wszystkie aspekty konfiguracji usługi w jednym pliku.rc
. Podczas ustawiania możliwości dla usług, które nie są uruchamiane przezinit
, skonfiguruj możliwości systemu plików za pomocąfs_config.c
. - Android 7.x i niższe rozszerzają mechanizm identyfikatorów Android (AID), używając pliku
android_filesystem_config.h
specyficznego dla urządzenia, aby określić możliwości systemu plików i/lub niestandardowe identyfikatory AID producenta urządzenia. Android 8.0 i nowszy obsługuje nową metodę rozszerzania możliwości systemu plików . - W systemie Android 8.0 obsługa poleceń USB została przeniesiona ze skryptów
init
specyficznych dla urządzenia (zastąpienie warstw HAL) i do natywnego demona USB. Interfejs USB HAL musi być zaimplementowany na każdym urządzeniu z systemem Android 8.0 i nowszym.