ההרשאות ב-Android מספקות אמצעי בקרה שמגבירים את המודעות של המשתמשים ומגבילים את הגישה של האפליקציה לנתונים רגישים. הגדרת הרשאות ב-Android 8.0 ובגרסאות קודמות כוללת הוספה לרשימת ההיתרים. בלי זה, אפליקציות עם הרשאות מיוחדות מושבתות, גם אם הן בנתיב priv-app
. ב-Android מגרסה 9 ואילך, מכשיר שמנסה להשתמש באפליקציות שלא הוכנסו לרשימת ההיתרים בצורה תקינה לא יופעל.
ב-Android 10 הוצג המושג תפקיד, שהוא שם ייחודי במערכת שמשויך לדרישות ולהרשאות מסוימות. מקצים תפקידים לאפליקציות כדי להעניק להן הרשאות למטרה ספציפית, ומגדירים תפקידי ברירת מחדל באמצעות משאבי הגדרת פלטפורמה.
ההגנות המוגברות מפני אפליקציות שעלולות להזיק (PHAs) משפרות את:
- שקיפות לגבי התנהגות של אפליקציות שעלולות להזיק.
- שליטה של המשתמשים בהתנהגות האפליקציה.
- למפתחי האפליקציות יש שיקול דעת לגבי השימוש בנתונים פרטיים, שמוגנים על ידי הרשאות.
התקנת חבילות והרשאות
ב-Android מגרסה 9 ומטה, הפונקציות של התקנת חבילות ושליטה בהרשאות נכללו בחבילה PackageInstaller
(//packages/apps/PackageInstaller
). ב-Android מגרסה 10 ואילך, הפונקציה של שליטה בהרשאות נמצאת בחבילה נפרדת, PermissionController
(//packages/apps/PermissionController
). איור 1 מראה איפה נמצאות שתי החבילות ב-Android מגרסה 10.

איור 1. פונקציות של התקנת חבילות ושליטה בהרשאות ב-Android 10
רשימות היתרים וגישה
ב-Android 6.0 ואילך, אפליקציות מבקשות גישה להרשאות מסוכנות בזמן הריצה. ב-Android 10 נוספו הרשאות זמן ריצה לזיהוי פעילות (AR), שגורמות למשתמש לשנות או לאשר הרשאות מסוכנות.
ב-Android 8.0 נדרש להוסיף במפורש לרשימת ההיתרים אפליקציות עם הרשאות מיוחדות בקובצי ה-XML של הגדרות המערכת בספרייה /etc/permissions
.
ב-Android מגרסה 9 ואילך, צריך להוסיף לרשימת ההיתרים הרשאות מיוחדות, אחרת אי אפשר להפעיל את המכשיר.
כדי להגביל את החשיפה של ממשקי API פנימיים ולמנוע מאפליקציות לגשת בטעות לספריות של הפלטפורמה, ב-Android 7.0 הוצגו מרחבי שמות לספריות Native. כך ספריות המערכת מופרדות מספריות האפליקציות, ויצרני המכשירים יכולים להוסיף ספריות מקומיות משלהם.
החל מ-Android 10, אפליקציות חייבות לקבל גם הרשאות חתימה וגם הסכמה מהמשתמש כדי לגשת לתוכן המסך של המכשיר. אפליקציות עם הרשאות מיוחדות שמסתמכות על הפונקציונליות של צילום מסך שקט, צריכות להשתמש במקום זאת במחלקה MediaProjection.
ב-Android 15, צריך להוסיף לרשימת ההיתרים באופן מפורש הרשאות חתימה של פלטפורמה שנדרשות על ידי אפליקציות שאינן אפליקציות מערכת, או שנדרשות על ידי עדכונים לאפליקציות מערכת. ההרשאות האלה מופיעות בקובצי ה-XML של הגדרות המערכת בספרייה /etc/permissions
.
שקיפות ופרטיות
ב-Android מגרסה 6.0 ואילך, כתובת MAC של מכשיר מהיצרן מוגנת מפני גישה של ספקי שירותי Wi-Fi ומנתחי חבילות. הגבלות נוספות החל מ-Android 10 מגבילות את הגישה של אפליקציות למזהי מכשיר (ID) שלא ניתן לשנות, אלא אם הן נכללות ברשימת ההיתרים להרשאות מיוחדות. (בקטע קישוריות יש דיון בנושא מזהי מכשירים, כי זה משפיע על ספקי הסלולר).
ב-Android 9 ובגרסאות קודמות, המשתמשים בוחרים אפשרויות קבועות כשהם מעניקים לאפליקציות גישה למיקום. החל מ-Android 10, התכונה הרשאות מיקום עם שלושה מצבים מאפשרת למשתמשים לבחור מבין שלוש אפשרויות כדי לאפשר לאפליקציה גישה למיקום של המכשיר. דרישות ההרשאה האלה חלות על אפליקציות ב-Android 10, ללא קשר ל-SDK היעד.
הגדרת הרשאות לתכונות אחרות שקשורות לשקיפות ולפרטיות החל מ-Android 10
- התזכורת
גישה למיקום ברקע מוצגת למשתמשים כשאפליקציה ניגשת למיקום המכשיר שלהם באמצעות הרשאת
ACCESS_FINE_LOCATION
ברקע. - הגישה לנתונים שקשורים לקרבה לאנשי קשר, שמנוהלים על ידי רכיב ספק אנשי הקשר, מתבצעת באופן שונה: לאפליקציות אין אפשרות לכתוב לנתונים של הקרבה לאנשי קשר במסד הנתונים או לקרוא מהם. השינוי הזה משפיע על ממשקי API שקשורים למתקשר.
הגדרות יעילות יותר
הגדרות ההרשאות פשוטות יותר ב-Android 6.0 ומעלה.
- Ambient
capabilities לשירותים שהופעלו על ידי
init
שומרת את כל ההיבטים של הגדרת השירות בקובץ.rc
יחיד. כשמגדירים יכולות לשירותים שלא מופעלים על ידיinit
, צריך להגדיר את היכולות של מערכת הקבצים באמצעותfs_config.c
. - ב-Android מגרסה 7.x ומגרסאות קודמות, מנגנון מזהי Android (AID) מורחב באמצעות קובץ
android_filesystem_config.h
ספציפי למכשיר כדי לציין יכולות של מערכת קבצים ו/או מזהי Android מותאמים אישית של יצרן המכשיר. Android מגרסה 8.0 ואילך תומך בשיטה חדשה להרחבת היכולות של מערכת הקבצים. - ב-Android 8.0, הטיפול בפקודות USB הועבר מסקריפטים ספציפיים למכשיר (תחליף לשכבות HAL) אל USB daemon מקורי.
init
ממשק USB HAL חייב להיות מוטמע בכל מכשיר שמופעל ב-Android מגרסה 8.0 ומעלה.