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.

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

אישורים

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

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

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

מכיוון READ_EXTERNAL_STORAGE 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 בו 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 לאימות התנהגות הליבה הנכונה.