Android 11 — достаточно крупное обновление. Google планирует показать его уже в мае этого года, а само обновление начнет распространяться уже в сентябре. Главными нововведениями станут улучшенная темная тема, упрощенная передача файлов по аналогии с AirDrop, а также новый способ организации памяти приложений ScopedStorage. Но давайте ближе к делу. Voice Aloud Reader имеет более 5 миллионов скачиваний в Google Play, однако будущее приложения теперь под вопросом из-за Scoped Storage. В чём проблема? Давайте разбираться.
В описании к очередному обновлению он заявил, что в случае, если очередная попытка внедрить Scoped Storage не увенчается успехом, он попросту удалит приложение из Google Play и оставит разработку под Android. Это серьезное заявление, и с чем именно связаны проблемы по интеграции приложения, пока остается загадкой. Voice Aloud Reader — это программа, способная читать текст вслух, достаточно полезная кстати. И его исчезновение с Google Play может стать эдаким звоночком для Google. Что же стало причиной: недостаточно профессиональный разработчик или плохое API для работы со Scoped Storage?
Изначально Scoped Storage должна была появиться в Android Q, однако, вероятно, разработчики не успели адаптировать свои приложения, поэтому Google решила перенести выход на год. Scoped Storage — это изолированные куски памяти, выделяемые каждому приложению, впрочем, это даже можно понять по названию. В настоящее время в Android приложения работают с памятью по аналогии с Windows — они получают доступ ко всей файловой системе. Scoped Storage позволит изолировать определенные ячейки памяти под конкретные приложения.
Подобный принцип работы наблюдается в iOS. И примерно также работают вкладки Chrome, правда в этом случае они изолируются на процессы. Такая изоляция позволит улучшить безопасность системы, и приложения не смогут получать доступ к важным данным на смартфоне. Для взаимодействия с файловой системой Google предлагает использовать API Storage Access Framework. И разработчикам оно не очень нравится за счет медленной работы и плохой документации. По скриншоту ниже видно, насколько медленно работает новое API. В среднем SAF в 25-50 раз дольше работает с файлами.
Но проблема не только в этом. В Scoped Storage разработчикам приложений необходимо при работе с каким-либо файлом сначала копировать его в собственную изолированную (scoped) область памяти, и уже затем производить с ней манипуляции. Представьте какой-нибудь редактор видео. Вы открываете видеоролик размером в 5 гигабайт, и приложению нужно будет сделать его копию в своей области памяти, чтобы иметь возможность изменять его. К тому же судьба тысячи файловых менеджеров в Google Play теперь под вопросом. Как они будут работать со всей памятью телефона, если будут иметь ограниченный доступ к ней? Это пока загадка.
С приходом Scoped Storage несомненно система станет более защищенной. Одни приложения не смогут получить доступ к данным других приложений. Теперь приложению для доступа к данным вне собственного Scoped Storage нужно будет получить подтверждение от пользователя. Это несомненно удобно. К тому же разработчики Android обещали к выходу Android 11 исправить проблемы с производительностью. А относительно необходимости копировать файлы в собственный Scoped Storage я задал вопрос одному из разработчиков Android-приложений, который ответил, что это удобно, а для работы с большими файлами лучше использовать InputStream.
К тому же некоторые разработчики уже давно работают с SAF и не испытывают каких-либо проблем. Возможно, проблемы возникнут лишь у разработчиков файловых менеджеров, где необходим доступ ко всем файлам системы.
Читайте также: Представлены 117 новых emoji: матрешка и трансгендеры
Я пошёл еще дальше, и изучил подкаст разработчиков Android (с 24:42 минуты), которые объяснили, зачем нужен Scoped Storage.
Попытаюсь вкратце пересказать о чём шла речь в подкасте. В Scoped Storage каждое приложение имеет отдельную папку, к которой можно получить доступ без всяких разрешений. Без Scoped Storage приложение с доступом к файловой системе может просмотреть личные данные пользователя, и это плохо. Как уже мы писали выше, разработчики отметили, что одни приложения не могут видеть файлы других приложений и имеют доступ лишь к тем файлам системы, к которым дал доступ сам пользователь с помощью диалогового окна. Таким образом, Scoped Storage — это, вероятно, самое крупное обновление за последнее время, которое случалось с Android. Но при этом разработчикам теперь нужно будет дольше возиться с разработкой, что не нравится, конечно же, кодерам, но для пользователей это, конечно, плюс.