קוד אנדרואיד 3.2+ (בטעות?) מונע גישת כתיבה לאחסון חיצוני

נראה שלגוגל יש באג בקוד ה-AOSP שלהם שהוצג סביב אנדרואיד 3.2, שמשפיע על האופן שבו מערכת ההפעלה מטפלת באחסון USB ויכול למנוע גישת כתיבה לכרטיסי SD ומקלות USB. XDA Elite מפתח מוכר, מנחה בכיר, ו כותב חדשותאש שרשרת מסכם את הנושא שלו פוסט בבלוג:

בעבר, אפליקציה הייתה מבקשת את "WRITE_EXTERNAL_STORAGE", שתעניק גישת כתיבה ל את כל אחסון חיצוני (משתמש/קבוצה"sdcard_rw"). זה כנראה השתנה כדי להעניק גישת כתיבה בלבד ל- יְסוֹדִי אחסון חיצוני. הוכנסה הרשאה שנייה בשם "WRITE_MEDIA_STORAGE", אשר יעניק גישה לאחסון החיצוני האחר (משתמש/קבוצה"media_rw").

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

בזמן ש-Chainfire חקר את הנושא הוא נתקל בקוד ב- /system/vold/Volume.cpp שקובע במפורש:

 if (primaryStorage) {

// מקרה מיוחד ה כרטיס SD ראשי.

// לשם כך אנו מעניקים גישת כתיבה לקבוצת SDCARD_RW.

gid = AID_SDCARD_RW;

} אחר {

// עבור אחסון חיצוני משני אנו שומרים על דברים נעולים.

gid = AID_MEDIA_RW;

}

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

שרשרת הגיש את שאלתו ל- שעות עבודה למפתחי אנדרואיד צוות, ובסופו של דבר הם דנו בזה בעצמם מפגש חי ב-11 באפריל. למרבה הצער, מהנדסי גוגל שנכחו ב-hangout לא הצליחו לספק תשובות אמיתיות, מכיוון שמדובר בסוגיה מסובכת והשאלה עלתה רק שעה לפני עליית התוכנית לאוויר. עם זאת, הם הבטיחו לרדת לעומק הנושא הזה, ולחזור ל-Chainfire (ולנו) במועד מאוחר יותר.

כמו כן, על פי Chainfire, הבעיה קיימת למעשה גם ב-ICS בונה עבור SGS2, אם כי סמסונג "עקף את זה באמצעות פריצת הרשאה מכוערת מאוד":

מה שאתה רואה כאן הוא סמסונג גיבוי את ההרשאה WRITE_MEDIA_STORAGE להרשאת WRITE_EXTERNAL_STORAGE, כך שאפליקציות לא נתקלות בבעיה המתוארת.

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

[תודה ענקית ל-Chainfire על ההעלאה והעזרה!]