adblock check

Scoped Storage сделает Android 11 безопаснее и быстрее: что это такое

Спорная фишка была запланирована для Android 10, и разработчики уже обязаны использовать ее даже в данной версии ОС

Когда Android 10 находился на раннем этапе тестирования, у компании Google были планы на большие изменения в способе доступа приложений к файлам и папкам во внешнем хранилище вашего мобильного устройства. Речь не про SD-карту, которая используется во многих смартфонах на базе операционной системы Android, а об общей папке /data/media, которую могут считывать многие установленные программы и игры.

Беспрецедентное изменение получило название Scoped Storage. Его целью стало предотвращение злоупотребления разрешениями на чтение внешнего хранилища, которые так любят запрашивать разработчики многих приложений.

Нововведение изначально планировалось применить ко всем приложениям на смартфонах под управлением Android 10 и выше. Тем не менее, из-за крайне негативной реакции разработчиков Google была вынуждена изменить курс. Компания потребовала использовать Scoped Storage только для приложений, которые используют Android API 29 уровня (Android 10). Но вместе с Android 11 разговор про Scoped Storage снова становится актуальным, и на этот раз в Google вряд ли передумают.

Что собой представляет Scoped Storage и откуда у него растут ноги

Scoped Storage сделает Android 11 безопаснее и быстрее: что это такое

Когда-то работа Android слабо отличалась от любой из настольных операционных систем. Когда дело касалось доступа к вашим файлам, таким как документы, фотографии, музыка или еще что-то, его получали любые установленные на гаджет приложения. Во время инсталляции программы и игры часто запрашивают соответствующее разрешение, и обычно вы соглашаетесь на подобное условие их работы, поэтому в этом нет ничего криминального. Это дает возможность просматривать общую структуру внешнего хранилища, о котором уже шла речь выше, прямо из интерфейса конкретного приложения.

После выхода Android 4.4 KitKat разработчики из Google начали вносить изменения в операционную систему и добавлять ограничения на доступ к сторонним файлам для приложений, которые ими не владеют. А в Android 5.1 даже был реализован соответствующий фреймворк — Storage Access. Это дало приложениям возможность получать доступ к любым файлам с помощью специального API вместо стандартных операций с данными. Жаль, он оказался слишком медленным, поэтому далеко не все разработчики решили его использовать даже после длительного тестирования.

С одной стороны, Scoped Storage сильно ограничивает доступ к данным. С другой стороны, эта система ощутимо упрощает взаимодействие с ними. Собственно, для каждого отдельного приложения она создает собственную папку для информации, которая доступна пользователю. У программ или игр и без нее есть собственный каталог для хранения необходимых файлов, и он недоступен для других приложений. Scoped Storage дает возможность использовать еще одну папку для пользовательских файлов — к примеру, если говорить про «Диктофон», то в ней он будет хранить все ваши записи.

Разработчики крайне привыкли использовать традиционные методы для доступа к файлам со времен Lollipop, поэтому нововведение точно не станет популярным в их кругах.

Приложениям не требуется разрешение на запись или чтение любых файлов конкретно в данной папке, поэтому при их первом запуске пользователю не будет предложено давать им для этого какие-либо разрешения. Если же речь заходить о других каталогах, для них программы и игры должны получить соответсвующее добро от владельца мобильного устройства.

В общем, в приложениях, которым требуется доступ к общим папкам, должен использовать фреймворк Storage Access. Это говорит о том, что ему нужно будет запросить использование соответствующего API, чтобы попросить у пользователя специальное разрешение. Эта практика является рекомендацией для создателей софта со времен Android Lollipop, поэтому назвать ее новой язык не поворачивается. Тем не менее, с запуском Scoped Storage это правило становится строгим и более не является необязательным.

Словом, новый принцип работы с файловой системой Android по имени Scoped Storage заставит большинство разработчиков ограничить свои приложения одной папкой с данными, а всех остальных — использовать специальное API для взаимодействия с общими папками.

Зачем Google потребовалось вносить данное изменение именно сейчас

Scoped Storage сделает Android 11 безопаснее и быстрее: что это такое

У Google есть пара ключевых причин, чтобы ввести подобное нововведение. С одной стороны, компания хочет сделать использование ее устройств более безопасным. С другой стороны, она нуждается в том, чтобы навести порядок в файловой системе.

Причины для изменений вполне оправданы, но из-за их внедрения у разработчиков появится дополнительная работа.

Если говорить про безопасность, новая особенность системы повлияет на несколько факторов. Прежде всего, она даст каждому разработчику собственное пространство в хранилище гаджета, и для этого ему не нужны будут какие-либо разрешения от пользователя — ни одно из других приложений не сможет получить доступ к этим данным без ведома владельца устройства.

Более того, разработчики перестанут злоупотреблять запросами на разрешение использования внешнего хранилища гаджета. Если вы отвечаете положительно хотя бы на один подобный запрос, у программы появляется доступ ко всем возможным данным, среди которых фотографии, личные документы, видео и другие потенциально конфиденциальные файлы. При использовании Scoped Storage приложения могут видеть только свои собственные папки с данными, а также узкий круг мультимедийный файлов, определяемый API.

Новый API был спланирован с учетом получения «специального доступа» для разработчиков файловых менеджеров.

У нового API есть возможность предоставлять приложениям доступ для просмотра, записи, удаления и даже массовых действий с данными — все это реализуется через встроенный в систему запрос, на который получится ответить либо утвердительно, либо отрицательно. При этом разработчики музыкальных плееров или фоторедакторов из-за внедрения Scoped Storage никак не пострадают.

Если говорить про уменьшение беспорядка в файловой системе, то в данном случае все еще более очевидно. Если у приложения есть доступ к любым данным, после его удаления Android не сможет адекватно подчистить все его хвосты — информацию во внешнем хранилище используют все программы, поэтому ее нельзя трогать. Чем больше хвостов остается, тем хуже начинает работать мобильное устройство. Очевидно, куда проще удалить заданный каталог конкретного приложения и забыть про него. В это же время приложения со свободным доступом только к фотографиям или музыкальным записям не делают ничего плохого — от них не будет хвостов.

Что после внедрения Scoped Storage будет с файловыми менеджерами

Scoped Storage сделает Android 11 безопаснее и быстрее: что это такое

Разработчики приложений, которые можно отнести к категории файловых менеджеров, могут запросить у пользователя разрешение на доступ к общему внешнему хранилищу через все тот же фреймворк Storage Access. Чтобы использовать его, им будет достаточно лишь получить доступ к API через подтверждение своей благонадежности у Google. В этом нет ничего сложного.

Если файловый менеджер благонадежен, ему останется лишь получить разрешение на доступ к информации у владельца мобильного устройства.

У пользователя будет возможность разрешить файловому менеджеру доступ к каталогу верхнего уровня со всеми необходимыми папками из внешнего хранилища. Это даст приложению полноценно работать, и именно для этого Scoped Storage, в большей степени, был создан. Единственное, чтобы обезопасить пользователя, в Google будут проверять такие программы на отсутствие вредоносного кода, чтобы не доставлять лишних проблем владельцу мобильного устройства на базе Android.

Сопротивляться нет никакого смысла: Scoped Storage неизбежно настанет

Scoped Storage сделает Android 11 безопаснее и быстрее: что это такое

Ранние отзывы разработчиков о Scoped Storage не были достаточно позитивными. В сети даже появлялась петиция, в которой они просили Google пересмотреть реализацию данной возможности.

В Google сделали это и показали финальную версию Scoped Storage вместе с релизом Android 10. Сначала от разработчиков не требовали обязательного использования данной фишки, но с выходом новой версии операционной системы это сильно изменится. Вот информация для разработчиков с официального сайта:

Чтобы дать разработчикам дополнительное время для тестирования своих приложений в рамках Android 10 (29 уровень API), они по-прежнему смогут запрашивать атрибут requestLegacyExternalStorage. Он даст возможность временно отказаться от изменений, которые связаны с ограниченным хранилищем, вроде необходимости предоставления доступа к отдельным каталогам с данными или мультимедийным файлам.

Любое приложение, которое предназначено для Android 11 или более поздней версии операционной системы, должно использовать новый API для работы с хранилищем — в том числе, использовать ограничения. Более того, изменения в соглашении с разработчиками Google Play гласят, что с 1 августа 2020 года все новые программы и игры, представленные в магазине приложений, должны поддерживать Scoped Storage, а с 1 ноября 2020 года это же будет касаться обновлений существующих приложений.

В общем, если разработчик не хочет, чтобы его приложение умерло на свалке истории, он должен реализовать в нем поддержку Scoped Storage уже в самое ближайшее время. Хорошо, что на этот раз в Google решили прислушаться к отзывам разработчиков и упростить взаимодействие с Scoped Storage для программ, которым требуется полный или специальный доступ к данным. Что касается пользователей, на них все это скажется только в позитивном ключе: они получат более быстрый и безопасный Android.

Это перевод статьи Android Central.

nickgric
Пользователь
Android Android
21,6K участников
Вступить
3 комментария по лайкам по дате
Оставьте комментарий...
Оставьте комментарий...
ZZZ
Так все-таки стоит покупать Apple Watch или нет?
Автор
Стоит
Спасибо вам гугл что лишили полного доступа к папкам data и obb. Гореть вам в аду черти. Ненавижу андроид 12. Придеться вообще покупать аппарат с андроид 7.