Создаём игру для Android через Unity за 45 минут!
Это видео — пошаговая инструкция по созданию игры, смотрите и повторяйте! Вместе с автором видео вы начнёте с пустого проекта, а закончите полноценным приложением (apk-файлом), которое сможете опубликовать в Google Play.
Перейти к просмотру
#unity#apk#android
Мы с вами говорили про отличия между платформами, но что говорить о мультиплатформе, если даже на разных Android-устройствах могут быть отличия в поведении, и явным рекордсменом по количеству особенностей являются устройства Xiaomi 🧡
Сегодня поговорим про регулярные выражения и букву ё. Кто ее только не отменял, но Xiaomi пошли дальше всех.
К нам прилетел баг, что при введении ФИО буква ё не проходит валидацию по регулярному выражению. Первое, что приходит в голову, это, что мы написали кривой regex, ведь на самом деле, если использовать такое регулярное выражение ^[а-яА-Я]*$ то буква ё не попадает в этот диапазон и нужно определять ее отдельно, но нет, дело было не в этом.
Дальше мы подумали, а что если клавиатура на Xiaomi использует какой-то другой символ ё и мы оказались правы. Действительно стандартная клавиатура использовала \u00eb символ юникода вместо \u0401
Все дело в клавиатуре, которая выбрана по умолчанию, если поменять клавиатуру на Gboard, то все будет окей. Так что перед проверкой данных нам пришлось делать замену данного символа, чтобы пройти валидацию и на бекенде
👍
Давайте порадуемся за Семëна с Xiaomi, теперь у него все будет хорошо
🫡
#Android#Regex#Xiaomi
Qualcomm продлевают поддержку Android до 8 лет!
Новая инициатива Qualcomm и Google позволит устройствам на Snapdragon 8 Elite и будущих чипах получать обновления Android и патчи безопасности в течение 8 лет. Это огромный шаг вперёд для Android-экосистемы, повышая долговечность устройств и снижая затраты для OEM-производителей.
Какие устройства получат поддержку?
👉 Смартфоны на Snapdragon 8 Elite с Android 15
👉 Будущие устройства на новых Snapdragon 8 и 7-й серии
👉 Включает 2 обновления ядра Android Common Kernel
Однако финальное решение остаётся за производителями. Будут ли OEM-ы действительно поддерживать свои устройства так долго? Samsung уже делает 7 лет, Google столько же, но у них свои чипы.
#Android#Qualcomm#Snapdragon
Chrome на Android получит поддержку сторонних менеджеров паролей
Ранее стало известно, что в Beta-версии все менеджеры паролей для Android начнут работать с Chrome. Google на основе обратной связи добавила полезные возможности:
1️⃣Узнать любому приложению, используется ли в Chrome сторонний менеджер паролей
2️⃣Добавили Deep Link для открытия настройки выбора сервиса автозаполнения в Chrome
val autofillSettingsIntent = Intent(Intent.ACTION_APPLICATION_PREFERENCES).apply {
addCategory(Intent.CATEGORY_DEFAULT)
addCategory(Intent.CATEGORY_APP_BROWSER)
addCategory(Intent.CATEGORY_PREFERENCE)
}
val chooser = Intent.createChooser(autofillSettingsIntent, "Pick Chrome Channel")
startActivity(chooser)
Chrome 135 выйдет в релиз 1 апреля 2025
#android#autofill#chrome
🤖AndroidX Tracing 2.0 — поддержка Desktop JVM и Kotlin Coroutines
AndroidX Tracing — это библиотека для добавления данных в код, которая позволяет видеть что происходит внутри приложения в профилировщиках вроде Perfetto и Android Studio.
До версии 2.0 она была завязана исключительно на android.os.Trace — то есть работала только на Android. Теперь всё изменилось.
Версия 2.0 полностью пересматривает подход:
👉Поддержка Desktop JVM — трейсинг теперь работает не только на Android, но и на обычной JVM. Это открывает возможность профилировать host-инструменты, Gradle-таски и shared-код в KMP-проектах.
👉Propagation для корутин — классическая проблема: suspend-функции разрывали трейс на несвязанные куски и было непонятно что к чему относится. Теперь traceCoroutine() прокидывает контекст трейса через корутины автоматически.
👉Метаданные в слайсах — к каждому трейс-событию можно прикрепить аргументы. Видишь слайс в Perfetto и сразу понимаешь с какими параметрами он вызван.
👉Новый формат — Perfetto trace — трейсы совместимы с Android Studio и Perfetto UI из коробки.
Новый API выглядит так:
val driver = TraceDriver(sink = TraceSink(
sequenceId = 1,
directory = File("/tmp/perfetto")
), isEnabled = true)
driver.use {
driver.tracer.trace(category = CATEGORY_MAIN, name = "my_operation") {
// твой код
}
}
⚠️ Пока это только alpha и многих привычных возможностей нету, но будут к релизу Stable версии.
#Android#AndroidDev#KMP#AndroidX#Производительность
📹Переезжаем с фрагментов на (De)compose (35м)
В процессе перевода проекта на Jetpack Compose рано или поздно появляются вопросы: зачем нам вообще фрагменты, активити и вьюмодели, ведь можно реализовать навигацию прямо между Composable-функциями.
В приложении Мой Beeline разработчики двигаются в сторону компонентного подхода с помощью Decompose, так как он показался нам самым надёжным и стройным в своей красоте.
Своим докладом Павел Королев хочет показать, что жизнь за пределами стека Google существует. А также поделиться опытом, учитывая количество существующего кода, модульность проекта и стремление остаться в балансе с простотой решения.
#android#compose#навигация#decompose