Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

אִחסוּן

סמל HAL לאחסון חיצוני של Android

אנדרואיד התפתחה לאורך זמן לתמיכה במגוון רחב של סוגי ומכשירי אחסון ותכונות. כל הגרסאות של מכשירי תמיכה אנדרואיד עם אחסון מסורתי , הכוללות אחסון נייד וחיקוי. אחסון נייד יכול להיות מסופק על ידי מדיה פיזית, כמו כרטיס SD או USB, המיועד להעברת נתונים זמנית / לאחסון קבצים. המדיה הפיזית עשויה להישאר עם המכשיר לפרק זמן ממושך, אך אינה קשורה למכשיר ועלולה להסיר אותה. כרטיסי SD זמינים כאחסון נייד מאז אנדרואיד 1.0; אנדרואיד 6.0 הוסיף תמיכה ב- USB. אחסון מדומה מסופק על ידי חשיפת חלק מהאחסון הפנימי דרך שכבת הדמיה והיה זמין מאז אנדרואיד 3.0.

החל ב Android 6.0, Android תומך אחסון לאימוץ , אשר מסופק על ידי מדיה פיזית, כמו כרטיס SD או USB, כי מוצפן מעוצב להתנהג כמו אחסון פנימי. אחסון מאומץ יכול לאחסן את כל סוגי נתוני היישומים.

אישורים

הגישה לאחסון חיצוני מוגנת על ידי הרשאות Android שונות. החל מ- Android 1.0, הגישה לכתיבה מוגנת באמצעות הרשאת WRITE_EXTERNAL_STORAGE . החל מ- Android 4.1, הגישה לקריאה מוגנת באישור READ_EXTERNAL_STORAGE .

החל מ- Android 4.4, הבעלים, הקבוצה והמצבים של קבצים בהתקני אחסון חיצוניים מסונתזים כעת על סמך מבנה הספרייה. זה מאפשר לאפליקציות לנהל את ספריות החבילה הספציפיות שלהן באחסון חיצוני מבלי לדרוש WRITE_EXTERNAL_STORAGE . לדוגמה, האפליקציה עם שם החבילה com.example.foo יכולה כעת לגשת באופן חופשי ל- Android/data/com.example.foo/ בהתקני אחסון חיצוניים ללא הרשאות. ההרשאות המסונתזות הללו מושגות על ידי עטיפת התקני אחסון גולמיים בדמון FUSE.

החל מאנדרואיד 10, אפליקציות הממוקדות לאנדרואיד 9 ומטה ברירת מחדל לאחסון מדור קודם, ויכולות להצטרף לאחסון מבודד. אפליקציות הממוקדות ל- Android 10 ומוגדרות כברירת מחדל לאחסון מבודד יכולות לבטל זאת באופן זמני . השתמש בתכונת מניפסט requestLegacyExternalStorage , אשר שולט על מודל האחסון, כדי לשנות את מצב ברירת המחדל.

מכיוון שגם הרשאות WRITE_EXTERNAL_STORAGE וגם WRITE_EXTERNAL_STORAGE READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE , אם המתקין לא הוסיף לרשימת היתרים את האפליקציה, ההרשאה שולטת בגישה READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE והחזותיים בלבד, ללא גישה לכרטיס SD. זה חל גם אם האפליקציה מבקשת אחסון מדור קודם. למידע נוסף על מגבלות קשות ומגבלות רכות, ראה הגבלות קשות ורכות ב- Android 10 .

אם המתקין רשם את ההרשאה לרשימת היתרים, אפליקציה הפועלת במצב מדור קודם מקבלת את התנהגות ההרשאה שאינה מבודדת. ההרשאה שולטת בגישה לכרטיסי SD ובאוספים השמעיים והחזותיים. זה קורה כאשר האפליקציה מכוונת ל- Android 9 ומטה ואינה נבחרת לאחסון מבודד, או שהיא מכוונת ל- Android 10 ובוחרת.

ניתן לציין את מצב רשימת ההיתרים רק בזמן ההתקנה, ולא ניתן לשנותו עד להתקנת האפליקציה.

למידע נוסף על הגדרת ההרשאה READ_EXTERNAL_STORAGE , ראה setWhitelistedRestrictedPermissions() במחלקה PackageInstaller.SessionParams .

הרשאות זמן ריצה

Android 6.0 מציג מודל הרשאות זמן ריצה חדש שבו אפליקציות מבקשות יכולות בעת הצורך בזמן הריצה. מכיוון שהמודל החדש כולל את ההרשאות READ/WRITE_EXTERNAL_STORAGE , על הפלטפורמה להעניק דינמית גישה לאחסון מבלי להרוג או להפעיל מחדש אפליקציות שכבר פועלות. היא עושה זאת על ידי שמירה על שלוש תצוגות נפרדות של כל התקני האחסון המותקנים:

  • /mnt/runtime/default מוצג לאפליקציות ללא הרשאות אחסון מיוחדות adbd שמות השורש בו חיים adbd ורכיבי מערכת אחרים.
  • /mnt/runtime/read מוצגת לאפליקציות עם READ_EXTERNAL_STORAGE (Set LEGACY_STORAGE עבור אנדרואיד 10)
  • /mnt/runtime/write מוצג לאפליקציות עם WRITE_EXTERNAL_STORAGE

בזמן מזלג של זיגוטה, אנו יוצרים מרחב שמות של הר לכל אפליקציה פועלת וקושרים את התצוגה הראשונית המתאימה למקומה. מאוחר יותר, כאשר ניתנות הרשאות זמן ריצה, קופץ vold למרחב השמות של היישומים שכבר פועלים vold את התצוגה המשודרגת למקומה. שים לב שהורדת דרגות ההרשאות מביאה תמיד להרצת האפליקציה.

setns() ה- setns() המשמשת ליישום תכונה זו דורשת לפחות לינוקס 3.8, אך התיקונים הוחזרו בהצלחה ללינוקס 3.4. ניתן להשתמש במבחן PermissionsHostTest CTS לאימות התנהגות הליבה הנכונה.