Код Android 3.2+ (ненавмисно?), що забороняє доступ до зовнішньої пам’яті для запису

click fraud protection

Здавалося б, Google має помилку в коді AOSP, яка була введена в Android 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-картою». The справжній Потім SD-карта стає вторинним зовнішнім накопичувачем і блокується, захищаючись недоступним "WRITE_MEDIA_STORAGE"дозвіл.

Chainfire подав своє запитання до Графік роботи розробників Android команди, і вони закінчили обговоренням у своїй жива відеозустріч 11 квітня. На жаль, інженери Google, присутні у відеокімнаті, не змогли дати реальних відповідей, оскільки це складне питання, і питання було піднято лише за годину до виходу шоу. Однак вони пообіцяли розібратися в цій проблемі та повернутися до Chainfire (і до нас) пізніше.

Крім того, згідно з Chainfire, проблема насправді присутня у збірках ICS для SGS2, хоча Samsung "обійшов це, використовуючи дуже потворний хак дозволів":

Те, що ви бачите тут, це Samsung контрейлерний дозвіл WRITE_MEDIA_STORAGE на дозвіл WRITE_EXTERNAL_STORAGE, тому програми не відчувають описаної проблеми.

Чи збирався Google обмежити підключені SD-карти та USB-накопичувачі лише для читання для програм сторонніх розробників, ще належить з’ясувати. Однак це породжує тривожну думку: а що, якщо код і супровідні примітки є першими в Google стадії впровадження певного роду захисту від запису для зовнішньої пам’яті, і таким чином подальше обмеження нашого мобільного пристрою свобода? Ми можемо лише сподіватися, що це справжня помилка, оскільки свобода є однією з причин, чому ми всі її уникаємо Темна сторона.

[Величезна подяка Chainfire за увагу та допомогу!]