В Android 13 появилась новая возможность – Photo Picker. Она позволяет получать доступ к отдельным пользовательским фото и видео без выдачи приложению полного доступа к фото/видео или вовсе всей памяти устройства. Хорошая функция для ограничения доступа приложения к личным данным пользователя. Сразу же было объявлено, что эта функция будет также работать на Android 11 и новее (с поддержкой Mainline обновлений), а еще позже её поддержку добавили на все устройства с Android 4.4 и выше через Google Play Services.
Я сразу задался вопросом, почему так не делали раньше? И ответ тут простой – Android не позволял такое реализовать, но благодаря тому, что Google боролась с фрагментацией и работала над возможностью независимого обновления Android, это стало реальностью.
В этой статье я буду рассказывать про большую боль Android – фрагментацию. Вы узнаете, что это такое, причины ее появления и почему она уже не так актуальна. Также расскажу про пути решения этой проблемы, которые Google делала на протяжении первых 10 лет существования Android и почему обновления устройств до свежих версий Android уже не будут так важны, как прежде.
Если вам интересно следить за самыми последними новостями Android разработки и получать подборку интересных статей по этой тематике, тогда вам стоит подписаться на Телеграм-канал Android Broadcast и мой YouTube канал "Android Broadcast"
Краткая история Android ОС
Чтобы понять проблемы, с которыми столкнулись разработчики ОС, нам надо погрузиться в прошлое. История Android начинается в 2004 году. Энди Рубен решил разработать операционную систему для цифровых камер, которые тогда были очень популярны. Но из-за проблем с финансированием и не таким уж и большим рынком цифровых камер систему переориентировали на смартфоны как конкурента Symbian и Windows Mobile.
В 2005 компанию покупает Google. Корпорация добра решила выйти на рынок мобильных телефонов, продавая свою операционку производителям устройств. В 2007 году был создан Open Handset Alliance, одновременно с которым анонсировали Android как открытую мобильную платформу.
Прототипы Android-устройств были похожи на смартфоны Blackberry: нет сенсорного дисплея, физическая QWERTY клавиатура. Одним словом – Blackberry. Наступает 2007 год, который ознаменовался выходом первого iPhone. Этот смартфон изменил рынок смартфонов, компьютеров и до сих пор задает тренды. Google участвовала в подготовке софта для первого смартфона Apple и поняла, куда дует ветер, поэтому в спешке стали переделывать Android.
Резко произошло изменение концепции Android-смартфона: сенсорный экран и минимум физических кнопок. Первый смартфон на Android – HTC Dream был гибридом изначального видения устройства Google и трендом, заданным Apple. Полная клавиатура пряталась под большим по меркам того времени сенсорным экраном.
Задача Android для первого релиза была проста – завестись на устройстве и как-то работать. Из-за ограниченности в ресурсах разработки на первых этапах брались уже готовые открытые, бесплатные и популярные технологии: ядро Linux, Java, OpenGL, FreeType, Skia. Ядро Linux не было взято в исходном виде, а переделано с особенностями мобильных устройств с малым количеством оперативной памяти и медленными процессорами, также разработали собственную JVM виртуальную машину – Dalvik, которая также отличалась от стандартной JVM машины с учетом малого количества оперативной памяти, одного ядра процессора и работе устройства от батарейки.
Также надо учитывать, что, в отличие от iOS, с самой первой версии Android был открыт инструментарий для разработчиков, а онлайн-магазин приложений Android Market (теперь известный как Google Play) запустили 22 октября 2008 года (на 4 месяца позже App Store для iOS).
Весь этот сложный и тернистый путь сказался на особенностях Android-системы и ее архитектуры. Я думаю у разработчиков так бывает часто: пилится MVP в простом варианте без закладывания масштабирования, потом еще прилетают новые требования, а сроки поджимают. Одно дело пилить приложение или бэкенд, но совсем другое, когда такие проблемы были заложены в операционную систему и софт так просто не обновишь.
Также нужно было понимать, что Google занималась лишь разработкой ОС, вендоры же брали систему, дорабатывали и обновляли независимо от корпорации. В развитии ОС, в первую очередь, Google сосредоточилась на развитии устройства с сенсорными экранами и поддержке актуальных технологий, нужно было увеличить скорость работы ОС, дать больше возможностей разработчикам и пользователям.
Фрагментация
Фрагментация – это проблема, связанная с тем, что на рынке существует огромное количество устройств, работающих на разных версиях операционной системы и с разными модификациями от производителей. Всё это не позволяло и до сих пор не дает гарантии того, что если приложение работает на эмуляторе или одном устройстве, то оно сможет работать корректно на всём спектре устройств.
Подобные проблемы приводят к тому, что разработчикам приходится тратить больше времени на разработку, адаптацию и тестирование приложений и делать это только под срез наиболее популярных устройств среди своих пользователей.
Вы можете увидеть визуализацию фрагментации Android-устройств на 2014 год, а на сегодняшний момент картинка будет только хуже. Адаптация свежих версий ОС также оставляет желать лучшего, но раньше все было хуже.
С одной стороны, фрагментации – это боль, но с другой – огромная возможность и простор для инноваций производителей устройств. Они могут реализовывать собственные функции, делать уникальный интерфейс и выделяться на фоне других. Благодаря этому мы увидели складные смартфоны, игровые, с E-inк дисплеями, слайдеры, модульные и другие форматы.
Если посмотреть смартфоны на Windows Mobile или Windows Phone, то все они были одинаковы в софте и во внешнем виде. Просто потому что Microsoft не дала возможности модификации ОС вендорам. У Nokia было такое право, но они решили им не пользоваться, чтобы не нарушать пользовательский опыт, который реализовали мелкомягкие. Что из этих решений хорошо или плохо, судить не мне, но рассудило время – ОС Android жива и процветает, являясь не только самой популярной мобильной ОС, но и даже среди десктопных ОС, а вся разработка мобильных версий WIndows закрыта в 2017, а поддержка в 2020.
Обновления вендоров
Также причиной фрагментации является и то, что каждый из производителей обновляет свои устройства независимо, что тоже является проблемой. Да и компаниям надо продавать новые устройства, чтобы зарабатывать.
Производители Android-устройств не могли делать это быстро из-за того, что их цикл обновления был последовательным: нужно получить исходники в AOSP и свежие драйвера для чипов в устройстве, затем смержить все полученные изменения со своей оболочкой, после этого надо адаптировать изменения из новой версии ОС в свою оболочку, а затем всё это отправить на устройства пользователей.
Этот процесс занимает время, очередь из моделей на обновление составляется по принципу “свежесть устройства и его цена”. Бюджетные модели и вовсе не обновлялись из-за того, что производитель не закладывал их поддержку. Были случаи, когда вендоры отправляли патчи пустышки – обновления по факту приходят, а в нем нет ничего. Такие обновления можно назвать “плацебо”, т.к. часть пользователей верит, что они делают их устройства быстрее и безопаснее.
Кажется, Google тут должна была что-то предпринять, но либо у нее не получалось это сделать, либо они боялись давить на производителей устройств на заре становления Android. Такие разборки делали с HTC, так как на старте они вообще не обновляли свои устройства, независимо от их цены.
Android Jetpack
Развитие новых версий Android SDK и медленное обновление устройств привело к тому, что рынок был наводнен множеством устройств со всеми возможными версиями Android. Бизнесу было важно, чтобы все эти устройства поддерживались, соответственно разработчикам ставилась задача. Код наводнялся простынями из конструкций `if…else` с проверкой версий Android.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// КОД для Android 5.0 Lollipop и выше
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// КОД для Android 4.X
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// КОД для Android 3.X
} else {
// КОД для всех остальных поддерживаемых в приложении версий Android
// (minSdk из AndroidManifest и выше)
}
Google решила все это сделать самостоятельно для наиболее популярных API из Android SDK, представив Android Support Library, а позже реформировала её в Android Jetpack или еще ее называют AndroidX.
Она содержала множество различных Compat API, которое позволяло вызвать API из новых версий Android на старых. На старых версиях ОС это зачастую приводило к простому игнорированию вызова, хотя для части API происходили вызовы аналогов из старой версии Android SDK.
Следующим большим этапом стало портирование новых API, аналогов которых не было в старых версиях SDK. Сообщество начало это делать раньше, например, одна из самых популярных библиотек, которая сделала Jake Wharton легендой – ActionBarSherlock. Библиотека являлась первым вариантом App Compat и перенесла Action Bar из Android 3.0 на Android 2.
Почему это сделал энтузиаст, а не Google? Выход Android 3.0 очень сильно изменил Android, т.к. это была первая ОС с официальной поддержкой планшетов, а также первый раз в истории, когда Google не открыла исходный код Android.
Произошло это из-за боязни портирования свежей планшетной версии Android на смартфоны. В Honeycomb представили первую версию Holo – фирменного дизайна Android, который закрепился до 2014 года. Когда был представлен Android 5.0 и Material дизайн, актуальный даже сегодня, также появилась его третья версия – Material You.
Google Play Services для распространения функционала
Android Open Source Project (AOSP) – эта пустая версия Android ОС, в которой вы не найдете множества привычных для вас приложений и сервисов.
То что вы найдете на устройствах Samsung, Google, Xiaomi и других популярных производителей Android-смартфонов, это версия Android, сертифицированная Google, с Google Mobile Services: магазином приложений Google Play, поиском Google, браузером Chrome, Google Play Services, а также другой гуглософт, предустановленный по умолчанию.
Google Play Services – это фреймворк, который позволяет разработчикам использовать различные функции и сервисы от Google в своих приложениях. Этот фреймворк включает в себя такие функции как авторизация Google, местоположение, Firebase сервисы, Push сообщения, аналитику и другие сервисы, которые могут использоваться разработчиками для улучшения своих приложений. Без Google Play сервисов у вас не будет работать Google WearOS, которая через фирменные сервисы обеспечивает передачу данных между устройствами, а также часть функций из Android SDK.
Фирменные сервисы компании позволяют распространять обновления или давать функционал сквозь все версии ОС. Например, если вы будете изучать, как получить местоположение пользователя, то в официальной документации вы найдете руководство, которое базируется на Fused Location Provider из Google Play Services, а не API по работе с локацией в Android SDK.
Google Play Services устанавливается на большинстве устройств на Android и обновляется автоматически через Google Play Store. Все обновления в сервисах доставляются независимо от производителя устройства, оператора и версии Android. Это важный момент, так как Google может доставлять исправления багов, новые фичи и другие улучшения самостоятельно, в отличие от прошивок и библиотек, подключаемых разработчиками приложений. И это тоже способ борьбы с фрагментацией, когда компания не привязана к производителям устройств и может контролировать процесс обновления API самостоятельно. Рабочее решение, только оно требует от разработчиков подключения библиотек с клиентским API для взаимодействия с сервисом из Google Play Services.
Звучит, что все хорошо, но гугл сервисы стали и злом. Для установки Google Play и одноименных сервисов любой вендор должен выполнить строгие правила компании Google, которые включают в себя предустановку приложения, папку с приложениями компании на главном экране дефолтного лаунчера, а также много других скрытых частей и специальных условий для вендоров. Почему все на это идут? Google Play – самый крупный каталог Android-приложений, содержащий топ 1000 самых популярных Android-приложений. Все гайды от Google пропитаны использованием этих сервисов и все разработчики целятся на работы с сервисами Google, даже если их софт распространяется через другие магазины приложений. Это связано с тем, что гугл сервисы есть практически на любом популярном устройстве за пределами Китая. Google сервисы – царь и бог на Android-устройствах, а разработчикам только остаётся делать функции на основе их. Не надо думать, что при наличии возможности сделать свои сервисы с такими же привилегиями у другой компании, она ей не воспользуется. Иметь гарантии работы своих приложений на устройстве – цель любого разработчика, как прошивок, так и сторонних.
Вы можете вспомнить про AOSP и почему вендоры не станут использовать его? Это же открытый вариант Android? Для начала у него есть своя лицензия, которую тоже надо изучать. Везде в документации вы найдете формулировку “Открытый исходный код”, которая не означает общую доступность. Вы когда-нибудь использовали устройства на AOSP? Голый Android на Nexus и Pixel – это не AOSP. AOSP – это билд Android без магазина приложений, без нормальных стандартных приложений для работы с почтой и SMS, там не будет пушей, а часть рекламируемых Google функций будут попросту отсутствовать. Вот вендорам и остаётся два варианта: принимай условия Google или делай все сервисы сам и надейся, что устройство будут покупать, а разработчики адаптировать софт. По второму пути вынужденно пошла Huawei и устройства вендоров в Китае, так как там никогда не было гугл сервисов.
Для обычных пользователей Google Services стали неотъемлемой частью понимания Android ОС, а Google получает контроль над всеми устройствами, которые даже не производит, хотя он и не полный. Это логично. Ведь компания тратит огромные суммы на развитие и поддержку операционной системы, когда другие компании практически все наработки делают только для себя.
A/B System Updates
A/B обновления – это функциональность, которая позволяет обновлять устройство, не прерывая работу приложений и не затрагивая данные пользователя. Они работают путем загрузки дополнительного образа системы, который устанавливается на неактивном разделе, а затем переключается на активный раздел после перезагрузки устройства. Это позволяет устройству быстро переключаться между различными версиями системы без необходимости полной перезагрузки.
Вроде причем тут это к фрагментации, но новая система позволила делать прозрачные для пользователя обновления системы, которые не заставляют его ждать обновления в процессе загрузки устройства, а происходит простая незаметная перезагрузка, которую пользователю система может произвести, пока он не пользуется устройством. Заметить такое явно можно, когда ваше устройство просит разблокировки по кодовому паролю и отпечаток пальца или сканер лица не подходят. Установка обновления происходит во время работы устройства в фоне. Это все также медленно, но какая разница, если можно посидеть в любимых приложения и играх.
Direct Boot
Если перезагрузка устройства может происходить незаметно для пользователя, то как останутся работать приложения? Для этого сделали механизм Direct Boot, который позволяет приложениям работать до ввода пароля на устройстве. Приложение сможет использовать часть хранилища, которая не требует разблокировки пользователем, а достаточно загрузить устройство. Так вы без проблем получите SMS, телефонные звонки, будильники, пуш уведомления и др. Эта функция позволяет критическому функционалу остаться рабочим и не заподозрить пользователю, что устройство перезагружалось. Ход со стороны Google прекрасный, так как подготавливало Android к будущим изменениям для отвязки обновлений от производителей устройств.
Project Treble (Android 8)
Процесс обновления Android был небыстрым до Android 9. Причина в том, что производители устройства должны были получить обновления драйверов для всех чипов в устройстве, исходный код новой ОС, а затем адаптировать свою оболочку и другие наработки. В Google решили разорвать зависимости между этими частями.
Project Treble – это масштабное изменение в архитектуре Android, реализованное в Android 8 Oreo, которое разделяет ОС на две части: Android-систему и низкоуровневый софт для работы устройства (их еще называют реализацией вендора). Между ними был добавлен новый слой – интерфейс вендора, нечто подобное интерфейсу в коде. Разработчикам устройств предоставляется прослойка, которая имеет гарантии обратной совместимости и проходит специальные тесты – Vendor Test Suite (VTS).
Благодаря Project Treble появились Generic System Images (GSI), который собирается из исходников Android и гарантирует обратную совместимость с 3 предыдущими версиями реализации вендора. Это значит, что GSI Android 13 можно будет установить на любое устройство с Android 12, 11 и 10.
Поддержка Project Treble является обязательной для всех устройств, которые сразу выходили на Android 8 и выше. Для тех, кто обновлялся с предыдущих версий, это требование было необязательно.
Рефакторинг архитектуры системы позволил производителям быстрее обновлять устройства до новых версий Android, так как им не нужно ждать обновления драйверов. Вместо этого они могут работать со стандартизированным интерфейсом и заниматься своей частью адаптации прошивки.
Treble оказал эффект на скорость обновления устройств, что можно видеть на графике, а значит напрямую влияет на уменьшение степени фрагментации устройств, но это все равно не решало проблем со старыми версиями операционной системы. Они зависли мёртвым грузом, но новые версии со временем успешно вытесняли.
Если посмотреть на сегодня, то версии Android 8 и ниже не растут в долях, а вот версии новее только набирают обороты, Android 10 и выше занимает более двух третьих всего рынка.
Модульная система компонентов ОС (Project Mainline)
Project Treble был хорошим решением, но все равно оставил для Google зависимость от вендоров и от их оперативности и желания обновления устройств. Нужно было найти решение, чтобы обновлять устройства независимо от производителей.
Решение лежало на поверхности – разделить систему на части, которые можно доставлять через системный сервис на устройстве с полными правами. Так и появился Project Mainline в Android 10, который отделил системные компоненты и позволил им обновляться независимо от обычного цикла обновлений операционной системы.
Теперь вопрос: у кого в Android может быть достаточно прав, чтобы обновить модули? Конечно же Google Play Services! Но они не единственные, способные сделать это. Подойдет любой сервис с теми же правами от производителя устройства.
Обновление модулей не может предоставить новых API в рамках него, но может изменить поведение. С новыми версиями API модулей может расшириться, но будет гарантировать обратную совместимость. Стабильность этого гарантируется Compatibility Test Suite (CTS) – специальным набором тестов, с помощью которых Google проверяет реализацию API вендорами устройств. Все модули обновляются или откатываются автоматически.
Например, такая система позволила получить обновления сетевого стека и тайм зон без необходимости ожидания, когда это сделает вендор или разработчик приложения затянет новую версию базы данных.
APEX
Для распространения модулей в Android SDK появился новый формат файлов – APEX и утилита для его установки во время загрузки устройства – APEX Manager (apexer
). APEX формат своей структурой напоминает APK, но APK не подходит, так как не может быть установлено на этапе загрузке операционной системы.
APEX файл является валидным APK файлом, потому что использует ту же схему подписи и содержит AndroidManifest, который обязателен для любого APK. Все это нужно, чтобы полностью использовать весь тулинг для APK файлов: установщик APK на устройстве, adb, утилиту для подписи, PackageManager API.
Android SDK Extensions
В Android 11 разработчики фреймворка пошли дальше и решили реализовать возможность добавления нового API для старых версий Android. Фактически эта возможность стала расширять Android SDK новыми API. Обновляемые модули теперь могут добавлять новые фичи, а Android SDK Extensions добавляют API для его использования разработчиками.
// Проверяем, что у нас Android 13
if (Build.VERSION.SDK_INT >= Build.VERSION_CODE.TIRAMISU) {
// Запускаем PhotoPicker
context.startActivity(Intent(MediaStore.ACTION_PICK_IMAGES))
}
// Код выполняется на Android 11 и выше
// Проверяем, что доступно расширение и оно нужной версии
if (SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2) {
// Запускаем PhotoPicker
context.startActivity(Intent(MediaStore.ACTION_PICK_IMAGES))
}
Результатом стало появление SDK Extensions модуля в ОС. SDK Extensions имеют версию, нечто подобную тому, как мы проверяем API с помощью Build.VERSION_CODE, но благодаря расширениям теперь в документации вы сможете увидеть, что описывается не только API level, где доступно API и набор SDK Extensions и его версия, которая будет содержать это API.
При настройке проекта нам нужно указывать теперь версию compileSdk, а также версию подключаемых расширений для SDK. Не забудьте предварительно его установить в SDK Manager из Android Studio. При использовании части фичей Android теперь проверяется не уровень Android SDK, а версию расширений, о чем вам напомнит Android Lint.
// build.gradle.kts
android {
compileSdk = 33 // Android 13 T
// Будет использоваться T Extentions
// Указываем версию расширений. По умолчанию не подключаются
compileSdkExtension = 5
}
Название расширения |
Константа |
Минимальная версия Android, на которой может быть доступно |
---|---|---|
R Extensions |
Android 11 R (API Level 30) |
|
S Extensions |
Android 12 S (API Level 31) и выше |
|
T Extensions |
Android 13 T (API level 33) и выше |
|
Ad Services Extensions |
Android 13 T (API level 33) и выше |
Смысл новых версий Android
Остался главный вопрос, стоит ли ждать новых версий ОС и когда обновление с ней придёт на ваш смартфон? Я считаю, что нет. Каждая версия Android приносит все меньше новых функций для пользователей, а множество новых API для разработчиков подключаются через библиотеки в рамках Jetpack и Google Play Services. Все усилия Google направлены на то, чтобы иметь возможность полного контроля обновлений ОС, независимо от производителей устройств. Последние соскочить с Android так просто не смогут, альтернативных ОС попросту нет. Разработать свою – долго и дорого. Менеджеры корпорации добра сделали все очень верно, дав много свободы и возможностей, чтобы заманить к себе производителей и разработчиков, но уже не один год работают над тем, чтобы вернуть полный контроль себе и, как я рассказал вам, у них всё это получается.
Каждый год я разбираю очередной релиз ОС Android и вижу, как много происходит изменений под капотом: выделение новых Mainline модулей, интеграции технологий из Jetpack на уровень Android-фреймворка, интеграция новых технологий, связанных с железом. Это показывает, что Google делает Android для себя, частично своих партнеров, преследуя свои бизнес-интересы.
Пишите в комментариях, что вы думаете о тенденциях развития Android ОС. Я буду рад обсудить их с вами и взглянуть на ситуации под иным углом.
Комментарии (46)
titbit
26.09.2023 09:42+20Гугл пытается бороться с фрагментацией путем закручивания гаек и переноса функционала из в целом открытой системы в свои сервисы с закрытыми исходниками кстати. И это мне кажется приводит к еще большей фрагментации. Логично было бы рассмотреть велосипеды, которые наплодили вендоры (как правило это недостающая функциональность, которой официально нет, но она нужна) и внедрить их в систему, но это делается удивительно медленно и неаккуратно, в результате имеем свои уже оформившиеся наборы костылей местами несовместимые между собой.
И похоже дальше фрагментация будет расти только по нарастающей, и приведет к "балканизации" андроида (собственно почти уже, Китай - хороший пример).
стоит ли ждать новых версий ОС и когда обновление с ней придёт на ваш смартфон? Я считаю, что нет.
Да каждый год почти выходит мажорная версия, но нового для пользователей там довольно мало, видимо гугл забил на масштабные улучшения и просто "доит" рынок, понимая что роста как прежде уже не будет, а вот лишнюю копеечку от вендоров можно и заработать.
Ndochp
26.09.2023 09:42+5Ну как же мало?
Зажали возможность установки приложений на карточку без танцев с бубном (на некоторых моделях — наглухо).
Улучшили песочницу — нерутовое приложение не может отличить занятое системой место от занятого соседними приложениям, о нормальном менеджменте использованного места можешь забыть.
Раскладывать приложения по папкам можно только на экране, в списке приложений — фигушки.Разрешения можно настраивать более подробно и можно отказывать почти на все не потеряв возможность установки приложения — это единственный плюс который я помню с точки зрения пользователя, но он очень старый.
Всякие окошко в окошке и неожиданно всплывший поверх игрушки ватсап — на планшетах не шупал, на телефоне все равно нифига не видно, только не знаешь как от него избавиться.
(хотя это конечно не отличие между последней и предпоследней версиями, это за большой период)
ColdPhoenix
26.09.2023 09:42Зажали возможность установки приложений на карточку без танцев с бубном (на некоторых моделях — наглухо).
а что за карточка?
Раскладывать приложения по папкам можно только на экране, в списке приложений — фигушки.
Список приложений? В настройках?
Ndochp
26.09.2023 09:42+3- На внешнюю SD карточку. Раньше можно было всегда, теперь только после спецформатирования, в части моделей пункт с таким форматированием отсутствует.
- В видели wizTree как выглядит? Вот это приличный интерфейс для поиска свободного места. Именно такой и нужен в т.ч. на смартфоне. При этом данные и приложения естественно должны быть вместе, чтобы я мог выбрать, снести фоточки в ватсапе или вайбер целиком. Ну и по опыту количество свободного места после сноса приложения и его объем в списке приложений связаны какой-то существенно нелинейной функцией, что опять же делает его использование затрудненным для поиска свободного места.
saege5b
26.09.2023 09:42+1Карта памяти.
Без твиков, что она есть, что её нет. Если только хранить "вручную" что-то типа книжек. А12-А13.
Сейчас в навигаторах этот момент закостылили - можно туда карты складывать.
Но "переселить" программу на карту памяти уже нельзя. Есть возможность расширить общее хранилище Андроид на карту памяти, но ну карточка нужна ультрабыстрая, и особого результата на аппарате незаметно (из 80 Гб занятого, освободился гиг-два).
inkelyad
26.09.2023 09:42+1Зажали возможность установки приложений на карточку без танцев с бубном (на некоторых моделях — наглухо).
Насколько я понимаю - не от хорошей жизни. Поставит человек тормозную карточку и/или контакты плохие будут - и все будет как минимум тормозно. Да еще требования защиты информации (как самих пользователей/их работодателей, так и со стороны защитников копирайта - снял карточку и инфа утекла). Да и запутывало оно порядком. Видишь две одинаковые иерархии - одну внутри телефона, другую на карточке - и гадай, что есть что.
Или переставили неформатированную карточку в другой телефон - и приложению достаются остатки данных с предыдущего телефона. Обработку чего как-то обрабатывать надо. Так что то что сделали на мой взгляд выглядит логичней.
transcengopher
26.09.2023 09:42Поставит человек тормозную карточку и/или контакты плохие будут — и все будет как минимум тормозно.
ССЗБ.
Да еще требования защиты информации (как самих пользователей/их работодателей, так и со стороны защитников копирайта — снял карточку и инфа утекла)
Для работодателей и копирастов это должно решаться политиками безопасности, а не лишением всех остальных полезного функционала.
Видишь две одинаковые иерархии — одну внутри телефона, другую на карточке — и гадай, что есть что.
Не видел ни разу чтобы это кого-то запутывало. Современные люди вполне способны понять, что такое "папка", и что означает надпись "карта памяти" где-то неподалёку. Да, даже бабушки. Разумеется, если разработчики/дизайнеры не стараются специально скрыть эти различия и накрутить какой-то "магии" (которая всё равно неизбежно ломается при любом шаге в сторону, и работает через раз).
Или переставили неформатированную карточку в другой телефон — и приложению достаются остатки данных с предыдущего телефона.
Это наоборот скорее плюс. Можно менять телефон и при этом переносить пользовательские данные между устройствами. А не как сейчас, либо ты хранишь всё в облаках (и делишься ими как минимум с Гуглом — просто идеал безопасности, да?), либо потеряешь все данные если вдруг уронил телефон в лужу.
В остатке, аргументы, как мне кажется, слабоватые.
inkelyad
26.09.2023 09:42+1Для работодателей и копирастов это должно решаться политиками безопасности,
В смысле? Приложение что-то кэшировать хочет? Хочет. Достать карту можно? Можно. Значит, то что достали - может утечь независимо от политик.
Вариант - либо никаких кэшей не создавать, либо все шифровать. Ну вот они на уровне системы все и зашифровали.
Не видел ни разу чтобы это кого-то запутывало.
Еще как запутывает. Хочешь файл достать - приходится в двух местах смотреть, потому что далеко не всегда было понятно, на карточку оно попало или в память телефона.
Можно менять телефон и при этом переносить пользовательские данные между устройствами.
Чтобы это работало - надо чтобы автор приложения это предусмотрел. Там же не только, собственно, пользовательские данные, но и всякие кэши и прочая служебная инфа, которая вовсе не обязана к новому экземпляру приложения подходить.
либо потеряешь все данные если вдруг уронил телефон в лужу.
Мобильное устройство - не место хранения информации в единственном экземпляре. Ожидать, что (еще) никуда не скопированные документы можно будет достать из устройства - это более-менее дурная привычка.
Cтавить в вину надо не выпиливание переноса приложений на карточку, а то, что все в облако тянут. Эквивалент Syncthing или хотя бы адекватный способ постоянного бакапа на личное хранилище (вплоть до соседнего телефона, лежащего в рюкзаке, для работы вне зоны мобильной связи) вполне могли предусмотреть, но, похоже, принципиально не хотят.
А так же то, что старательно пытаются отойти от подхода 'мои документы лежат вот тут' (а не неизвестно где внутри файловой системы, нарезанными на кусочки неизвестным способом).
transcengopher
26.09.2023 09:42+1В смысле? Приложение что-то кэшировать хочет? Хочет. Достать карту можно? Можно. Значит, то что достали — может утечь независимо от политик.
В смысле что политика должна запрещать конкретному приложению что-то кэшировать на карту памяти. Или запрещать всем приложениям, опять же, через политику.
Еще как запутывает. Хочешь файл достать — приходится в двух местах смотреть, потому что далеко не всегда было понятно
Вот именно — а почему непонятно, знаете? Потому, что пытались сделать "магию". У вас на десктопе такая проблема была хотя бы раз? Думаю, что нет — и это от того, что там "магию" никто делать не пытается. (UPD: вернее, когда-то раньше пытались, но не взлетело; история — это результат наступания на грабли, а её незнание — это прогулка по тем же маршрутам с закрытыми глазами).
Чтобы это работало — надо чтобы автор приложения это предусмотрел.
Вообще неважно, на самом деле. ЕМНИП, там со стороны приложения есть системный API, который указывает на папку, где данному приложению положено хранить свои пожитки. И это появилось задолго до того, как стали обрезать возможность переноса приложений на SSD. Опять же, разработчик обязан такой сценарий предусмотреть уже хотя бы для того, чтобы всё приложение не ломалось после обновления — сценарий там тот же самый почти целиком.
всякие кэши и прочая служебная инфа, которая вовсе не обязана к новому экземпляру приложения подходить.
Чем это принципиально отличается от обыкновенного протухания кэша?
Мобильное устройство — не место хранения информации в единственном экземпляре. Ожидать, что (еще) никуда не скопированные документы можно будет достать из устройства — это более-менее дурная привычка.
Это, как бы, ваши соображения, но не типичного пользователя. Они как раз ожидают, что если карту памяти вынуть и вставить в кардридер на ноутбуке — то у них получится переписать какие-нибудь фоточки. И это ожидание пользователей — как раз то, с чем я лично встречался при соприкосновении с экосистемой смартфонов, в отличие от постулированного запутывания из-за нескольких карт памяти, с которым я как раз не встречался ни разу.
А так же то, что старательно пытаются отойти от подхода 'мои документы лежат вот тут'
Да, я об этом уже говорил — они стараются выдумать какую-то магию/абстракцию. Которая регулярно протекает, потому что это в принципе закон для абстракций, а конкретно эта ещё и идёт в разрез уже усвоенным навыкам пользователей, которые берут начало ещё от физических картотек, и потому почти интуитивно понятны людям, хоть раз клавшим настоящий листок бумаги в какой-нибудь контейнер. Соображения про фрагментацию физического расположения файла в блоках файловой системы в данном вопросе вспоминать ни к чему, потому что эти детали своей реализации файловые системы от пользователя прятать научились уже лет двадцать как, и делают это теперь весьма хорошо.
Cтавить в вину надо не выпиливание переноса приложений на карточку, а то, что все в облако тянут.
Так это же части одного и того же процесса, зачем вы их пытаетесь разделять?
inkelyad
26.09.2023 09:42В смысле что политика должна запрещать конкретному приложению что-то кэшировать на карту памяти. Или запрещать всем приложениям, опять же, через политику.
Я не уверен что это возможно без создания совершенно невыносимых неудобств. У нас же приложения часто убиваются по разным причинам и им нужно помнить свое состояние.
Чем это принципиально отличается от обыкновенного протухания кэша?
Двойной историей. Есть у нас история состояния, за которой мы следим и можем выкинуть что-то слишком старое/ненужное. И тут внезапно прилетает еще одна история, с другого устройства (карточку вставили) Разгрести можно, но только если явно этот случай при разработке учитывать.
Это, как бы, ваши соображения, но не типичного пользователя. Они как раз ожидают, что если карту памяти вынуть и вставить в кардридер на ноутбуке — то у них получится переписать какие-нибудь фоточки.
Может быть. Хотя в любом случае есть же еще и 'булькнул устройство не в лужу, а в реку и ничего достать не удалось'. Если учитываешь этот вариант, то и то, что из тушки устройства/вынутой запчасти ничего достать нельзя - автоматически проблем не доставляет.
Соображения про фрагментацию физического расположения файла в блоках файловой системы в данном вопросе вспоминать ни к чему, потому что эти детали своей реализации файловые системы от пользователя прятать научились уже лет двадцать как, и делают это теперь весьма хорошо.
Не, я не про это. Я про условные 'один слой картинки - в одном файле, другой - в другом, описание - в третьем. Все смешано в одну базу и нормального контейнера, что является одной картинкой, не наблюдается'.
Так это же части одного и того же процесса, зачем вы их пытаетесь разделять?
Потому что считают, что оно ортогонально. Влияет друг на друга, но не так чтобы сильно. Вот эта шифрованная карточка, присоединенная к памяти, разве мешает приложения без привязки к облакам делать? Вроде бы нет. А сильно помогает? Немножко есть. Но на мой взгляд - не критично.
transcengopher
26.09.2023 09:42Я не уверен что это возможно без создания совершенно невыносимых неудобств. У нас же приложения часто убиваются по разным причинам и им нужно помнить свое состояние.
Те, кто не может хранить состояние на SSD по политике — хранят во внутренней памяти. Совершенно непонятно, что тут невыносимого.
Хотя в любом случае есть же еще и 'булькнул устройство не в лужу, а в реку и ничего достать не удалось'.
Есть, но это относится уже к разделу резервного копирования, а не к удобству работы с внешними накопителями. При шифровании карты памяти способов осуществить резервное копирование становится меньше, а не больше.
Я про условные 'один слой картинки — в одном файле, другой — в другом, описание — в третьем. Все смешано в одну базу и нормального контейнера, что является одной картинкой, не наблюдается'.
Ну я и говорю — было такое раньше, там части файлов в SQL-подобном хранилище пытались содержать. Не взлетело, оказалось слишком сложно. Поэтому и перешли обратно к модели, где все логические части файла лежат в общем контейнере, и с точки зрения всех, кроме драйвера ФС, этот контейнер является единым целым.
Вот эта шифрованная карточка, присоединенная к памяти, разве мешает приложения без привязки к облакам делать? Вроде бы нет. А сильно помогает? Немножко есть.
На практике не помогает ничуть, к слову. Вернее, это тоже очередной вопрос к "учёте при разработке"/"прямоте рук", про который вы выше пишете. Я видел значимо большое множество приложений, которым было плевать, что там есть карточка форматированная, и пользователь указал ОС, что данное приложение должно быть установлено именно на карте. Они всё равно складировали всё в основную память, а данных там было столько, что даже всё необходимое для одного такого приложения не помещалось параллельно с ОС на флэшку объёмом 16Гб.
kirich1409 Автор
26.09.2023 09:42Если вам не хватает возможностей лаунчера из коробки - поставьте другой!
Использования "Окно-в-окне" для приложения можно отключить в настройках системы
kirich1409 Автор
26.09.2023 09:42очень много изменений происходит невидимых для пользователей, а под капотом в ОС и улучшения API для разработчиков, а также ограничения как должны выполняться определенные задачи
MTyrz
26.09.2023 09:42+9новая возможность… позволяет получать доступ к пользовательским фото и видео без запроса специального разрешения. Хорошая функция для ограничения доступа приложения к личным данным пользователя.
Я не понял этой логики, можно попросить пояснений?immortal555
26.09.2023 09:42+20Коряво написано. Имеется в виду выдача приложению разрешения лишь на конкретные (указанные вами) медиафайлы, без надобности разрешать приложению полный доступ к медиатеке.
werwolflg
26.09.2023 09:42+7>Что из этих решений хорошо или плохо, судить не мне, но рассудило время – ОС Android жива и процветает, являясь не только самой популярной мобильной ОС, но и даже среди десктопных ОС, а вся разработка мобильных версий WIndows закрыта в 2017, а поддержка в 2020.
Так винфон похоронил менеджмент, а не технические решения. В некоторых странах винфон сходу отхватил около 10% рынка, но бездарный менеджмент всё похоронил.
kirich1409 Автор
26.09.2023 09:42Как мне кажется, это тоже вина. Такое чувство что кто-то специально так делал в Microsoft
saga111a
26.09.2023 09:42+5мне UI в WinMobile нравился больше чем в текущих системах. Оно было похоже на то с чем можно работать. А вот с андройдом получается только "тыкать", даже если цепануть клаву, мышь и нормальный монитор.
То что похороних менеджмент кажется разумным предположением. ОС была приятной и отзывчивой. Первые андройды это вообще был полнейший кошмар, как это могло выдавить WM кажется "загадкой". Одна адекватная работа системы при связи EDGE чего стоила, при ней нормально отправлялись и принимались сообщения в "аське".vindy123
26.09.2023 09:42Ну, справедливости ради, работающая на edge аська - это нормальная вещь, не какое-то достижение. на всяких java кнопочниках и древних symbian она и через 2g прекрасно работала.
AlexanderS
26.09.2023 09:42В Android 13 появилась новая возможность – Photo Picker. Она позволяет получать доступ к пользовательским фото и видео без запроса специального разрешения. Хорошая функция для ограничения доступа приложения к личным данным пользователя.
Как-то непонятно сформулировано. То есть доступ получается без разрешения. И это хорошая функция? Может наоборот - с точки зрения пользовательского контроля это плохо? Или я что-то не так понял...
AlexanderS
26.09.2023 09:42Выше по комментам нашел ответ. Предлагаю автору скорректировать этот абзац для более однозначного понимания.
Ritan
26.09.2023 09:42+2Эта функция позволяет критическому функционалу остаться рабочим и не заподозрить пользователю, что устройство перезагружалось
Если это перевод, то где источник. Если нет - то что люди так не пишут, если только это не перевод текста, полученного от GhatGPT
NickDoom
26.09.2023 09:42+1Вы можете вспомнить про AOSP и почему вендоры не станут использовать
его? Это же открытый вариант Android? Для начала у него есть своя
лицензия, которую тоже надо изучать. Везде в документации вы найдете
формулировку “Открытый исходный код”, которая не означает общую
доступность. Вы когда-нибудь использовали устройства на AOSP? Голый
Android на Nexus и Pixel – это не AOSP. AOSP – это билд Android без
магазина приложений, без нормальных стандартных приложений для работы с
почтой и SMS, там не будет пушей, а часть рекламируемых Google функций
будут попросту отсутствовать.И чем реально это грозит?
Допустим, мы возьмём не вот такой SoC, а что-то из ближайшего Чипдипа, с полной документацией (если что, проект x86 Android тоже существует и даже иногда почти работает). Да, это будет не самая мощная и компактная конструкция по сравнению с клоном «настоящего» телефона. Что ещё? Какие-нибудь банковские приложения откажутся ставиться? Или что-то ещё?
А если я, допустим, хочу «звонилку» с экранчиком три на четыре, клавиатурой Лапера для СМС и от «ведра» мне нужно только рабочий Ваззап, Сигнал и Османд (если бы не они, взял бы на Авито 3310-ю)?
Слышал про гиков, делающих ведрофоны в том числе и на «малинках». Там тоже что-то в итоге получается «не как у людей» или разница чисто во флопсах на грамм веса?
Veselyi_kot
26.09.2023 09:42+3Резюмируя все вышенаписанное: в ЛЮБОМ гуглофоне «с завода» встроен руткит и полтора RCE-бэкдора, позволяющих как угодно изнасиловать твой девайс по велению левой пятки гугла.
Мораль сей басни такова: сразу после покупки накатываем на девайс LineageOS и microG. А потом молимся, что ничего не встроено в загрузчик, который все равно вендорский и навсегда. Печальное, надо сказать, зрелище, особенно на фоне того, что ещё каких-то пару лет назад, в четвертом дроиде, все с безопасностью было цивильнее.
Javian
Интересно бы сравнить Android 2 и 13/14 по функционалу. И насколько новые функции востребованы пользователями.
kirich1409 Автор
Для этого. нужно комплексное исследование на пользователях
Javian
Что-то мне кажется, что ответы будут предсказуемо совпадать с теми запросами, что заявляют при покупке: "Мне телефон с WiFi для Youtube, ВК и мессенджеров, а то старый начал тормозить. И красивыми фотоснимками, как в инсте у моей подруги ".
А о поддержке, например, быстрых переключений, сплит они никогда не слышали.
auresio
Не в последнюю очередь потому что наворачивают интерфейс на интерфейс только потому что гугл завидует эпл и хочет монополизировать андроид.
c01nd01r
Тормозить оно может не только в ОС - выкатили новую версию любимой аппки, а оно тормозит. Юзер может не понимать границ между ОС и приложением, поэтому "мой телефон стал тормозить"
kirich1409 Автор
Да нет завести, а просто свои бизнес интересы
Sulerad
Реализовывать общие для всех 80% потребностей не очень сложно. Но тогда каждому будет не хватать каких-то 20% фич и все ваши пользователи будут слегка страдать. А вот эти оставшиеся недостающие фичи для каждого человека будут достаточно уникальны.
Если фича нужна далеко не всем, то это никак не означает, что она не нужна. Лишь бы ресурсы были её реализовать и при этом гармонично совместить со всем остальным функционалом.
showfear
Вот в чем они разнятся, так это в весовой категории для аппарата )
CBET_TbMbI
Я начал пользоваться сенсорными смартфонами, начиная с Samsung Galaxy S II. Там Андроид 2.3 был.
Пытаюсь вспомнить разницу и ничего принципиального не помню. Те же кнопочки приложений, разбросанных по экрану, смс, звонки, браузер, фото... Изменялись детали: способы оплаты, внешний вид, шторка, количество настроек...
mapnik
Интерфейсно — раньше было лучше™.
По крайней мере, были цветные иконки в строке уведомлений и разноцветный светодиодный индикатор уведомлений.
Ndochp
Раньше (на резистивных стилусах) плотность информации была на порядок больше. Сейчас чтобы столько же пунктов в тудушке на экране поместилось увеличения экрана в 4 раза (2*2) — не хватает. И кажется 16 раз тоже не хватит.
DrZlodberg
Сейчас вообще что-то загадочное творится. Использую два телефона. Старый компакт sony xperia go (4.3" вроде) и современный компакт (6.6" вроде). Старый в кармане не теряется как те, про которые недавно были статьи, но и не мешает. Даже в маленьком. Никаких проблем с размером экрана нет вообще. всё удобно. Новый влезает нормально только в рюкзак и в одежду с огромными карманами. При этом на столько "компактный", что даже с не маленькими руками не могу без перехватов полноценно использовать. Однако при этом, например, в некоторые кнопки (больше всего проблем с настройками из шторки) за пару лет использования так и не могу попасть с первой попытки. Такое впечатление, что там клипбокс 2х2 пиксела при относительно большой иконке.
Интерфейсы сейчас пошли каким-то странным путём...
kirich1409 Автор
Приложение стали сложнее, железо сильнее. У меня был Galaxy S10 - тормозил прилично
equeim
Моим первым смартфоном был Xperia S. До сих пор с ужасом как он тупил :) И это был флагман.
saege5b
Двойка - унылое... это всё, что помню от работы с ней.
Самсунговская четвёрка (N-8000) умела в произвольные окна. Вот чего до сих пор нехватает :( С рутом и соответствующим софтом рулилось всё.
У А12/13 и по прогнозам - далее, много моделей без рута в принципе. Он как бы есть, но "с ограниченными возможностями".
Про А2 помню геморой с картой памяти. Но это отдельная история пожара в борделе.