Kotlin на Android стукнуло 5 лет
Ровно пять лет назад на сцене Google I/O произошло то, о чем Google просила большая часть коммьюнити – Kotlin признали поддерживаемым языком на Android. К юбилею подготовили небольшую статью с воспоминаниями и будущими планами Google на Kotlin. Там еще и мои цитаты есть, так что обязательно читайте!
Ровно пять лет назад на сцене Google I/O произошло то, о чем Google просила большая часть коммьюнити – Kotlin признали поддерживаемым языком на Android. К юбилею подготовили небольшую статью с воспоминаниями и будущими планами Google на Kotlin. Там еще и мои цитаты есть, так что обязательно читайте!
Kevlar – библиотека с набором проверок безопасности
- Пакет antipiracy проверяет, нет ли на устройстве пользователя пиратского софта
- Пакет rooting определяет наличие root-доступа или других аномалий, связанных с системой
- Пакет integrity проверяет, не модифицировано ли как-то само приложение
- Пакет antipiracy проверяет, нет ли на устройстве пользователя пиратского софта
- Пакет rooting определяет наличие root-доступа или других аномалий, связанных с системой
- Пакет integrity проверяет, не модифицировано ли как-то само приложение
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение Appyx и Compose Navigation
Недавно команда Bumble выпустила многообещающий фреймворк для навигации – Appyx. В статье его сравнивают с Compose Navigation на нескольких сценариях:
1️⃣Простой переход с главного экрана на страницу поиска
2️⃣Реализация анимированных переходов
3️⃣ViewPager-like переходы вперед и назад
По результатам сравнения у Appyx довольно много серьезных плюсов как с архитектурной стороны, так и с точки зрения доступных фичей.
Недавно команда Bumble выпустила многообещающий фреймворк для навигации – Appyx. В статье его сравнивают с Compose Navigation на нескольких сценариях:
1️⃣Простой переход с главного экрана на страницу поиска
2️⃣Реализация анимированных переходов
3️⃣ViewPager-like переходы вперед и назад
По результатам сравнения у Appyx довольно много серьезных плюсов как с архитектурной стороны, так и с точки зрения доступных фичей.
Команды Почты и Облака Mail.ru ищут Android-разработчиков и запускают Weekend Offer
В команде Почты Mail.ru вам предстоит работать над умной организацией рассылок, решать задачи по сортировке писем, обеспечивать возможность отслеживать заказы из онлайн-магазинов и поддерживать платёжные системы прямо в приложении.
В команде Облака Mail.ru вы будете работать над редактором фото и документов, сервисом создания коллажей, заниматься интеграцией — например, работать над авторизацией из одного сервиса в другом в один клик, применять в работе CI/CD-практики, заниматься техническим мониторингом (Grafana) и аналитикой (MyTracker, Metida, Redash).
Успейте зарегистрироваться до 2 сентября!
В команде Почты Mail.ru вам предстоит работать над умной организацией рассылок, решать задачи по сортировке писем, обеспечивать возможность отслеживать заказы из онлайн-магазинов и поддерживать платёжные системы прямо в приложении.
В команде Облака Mail.ru вы будете работать над редактором фото и документов, сервисом создания коллажей, заниматься интеграцией — например, работать над авторизацией из одного сервиса в другом в один клик, применять в работе CI/CD-практики, заниматься техническим мониторингом (Grafana) и аналитикой (MyTracker, Metida, Redash).
Успейте зарегистрироваться до 2 сентября!
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Android 13 – основные изменения для разработчиков
Стабильный релиз Android 13 наконец-то вышел. Все основные фичи уже успели разобрать во время выхода Beta версий, но на всякий случай держите небольшой разбор из официального блога.
Стабильный релиз Android 13 наконец-то вышел. Все основные фичи уже успели разобрать во время выхода Beta версий, но на всякий случай держите небольшой разбор из официального блога.
Гайд по миграции на Android 13
- Изменения в Media и Notifications permission’ах
- Отдельный permission для использования Advertising ID
- Изменения в поведении BOOT_COMPLETED и LOCKED_BOOT_COMPLETED событий
- Пользователь может остановить ваш foreground service и само приложение
- Изменения в Media и Notifications permission’ах
- Отдельный permission для использования Advertising ID
- Изменения в поведении BOOT_COMPLETED и LOCKED_BOOT_COMPLETED событий
- Пользователь может остановить ваш foreground service и само приложение
Medium
Migrating My App To Android 13
Lessons Learned from updating my app to targetSdkVersion 33
Расследование загадочного креша
Автор статьи столкнулся с очень странным крешом на стыке Java и Kotlin кода. Расследование завело его в кишки того, как работают оптимизации R8 и компиляция Kotlin Extensions.
Автор статьи столкнулся с очень странным крешом на стыке Java и Kotlin кода. Расследование завело его в кишки того, как работают оптимизации R8 и компиляция Kotlin Extensions.
Первое продакшн приложение с Compose for iOS
Touchlab, авторы кучи библиотек и инструментов для КММ, выпустили первое приложение, UI которого полностью реализован на Compose для обеих платформ. Код приложения можно посмотреть здесь.
Touchlab, авторы кучи библиотек и инструментов для КММ, выпустили первое приложение, UI которого полностью реализован на Compose для обеих платформ. Код приложения можно посмотреть здесь.
touchlab.co
Droidcon NYC iOS app with Compose
Touchlab has been doing a lot of tooling work and research lately, mostly around iOS developer experience and KMP. We forked the Droidcon app into a private repo to dogfood some of that stuff an...
Micro – простой и удобный текстовый редактор для консоли
- Micro – идейный наследник редактора nano
- Редактор поставляется отдельным бинарником, не нужны никакие зависимости
- Поддержка множественных курсоров и удобных хоткеев
- Отличная работа с мышкой
- Написан на Go и полностью кроссплатформенный
- Есть автокомплишн и подсветка синтаксиса для 130 языков
- Поддерживает плагины
- Micro – идейный наследник редактора nano
- Редактор поставляется отдельным бинарником, не нужны никакие зависимости
- Поддержка множественных курсоров и удобных хоткеев
- Отличная работа с мышкой
- Написан на Go и полностью кроссплатформенный
- Есть автокомплишн и подсветка синтаксиса для 130 языков
- Поддерживает плагины
Недостатки Kotlin и способы их обойти
- Стандартная библиотека и языковые фичи подталкивают к злоупотреблению работой с nullable, из-за чего код становится плохо читаемым
- Использование nullable в качестве возвращаемого значения – не очень выразительно, так как сложно понять, что в конкретном случае означает null
- Отсутствие union-типов ведет к переусложненному коду
- Операции над коллекциями задизайнены так, что очень легко копировать всю коллекцию без реальной необходимости
- Стандартная библиотека и языковые фичи подталкивают к злоупотреблению работой с nullable, из-за чего код становится плохо читаемым
- Использование nullable в качестве возвращаемого значения – не очень выразительно, так как сложно понять, что в конкретном случае означает null
- Отсутствие union-типов ведет к переусложненному коду
- Операции над коллекциями задизайнены так, что очень легко копировать всю коллекцию без реальной необходимости
This media is not supported in your browser
VIEW IN TELEGRAM
Wolfia – сервис, который позволяет пошарить эмулятор с запущенным приложением
Заливаете в облако apk, он запускается на эмуляторе, ссылку на который можно пошарить коллегам. Удобно, чтобы быстро поделиться с кем-то результатом своей работы.
Заливаете в облако apk, он запускается на эмуляторе, ссылку на который можно пошарить коллегам. Удобно, чтобы быстро поделиться с кем-то результатом своей работы.
Релиз kotlinx-serialization 1.4.0
- Поддержка последней версии Kotlin 1.7.10
- Интеграция с библиотекой Okio для прямой работы с IO
- Поддержка сериализации inline классов вышла из экспериментального режима
- Улучшены сообщения об ошибках благодаря доработкам сабклассов SerializationException
- Переезд документации с GitHub на сайт Kotlin
- Поддержка последней версии Kotlin 1.7.10
- Интеграция с библиотекой Okio для прямой работы с IO
- Поддержка сериализации inline классов вышла из экспериментального режима
- Улучшены сообщения об ошибках благодаря доработкам сабклассов SerializationException
- Переезд документации с GitHub на сайт Kotlin
GitHub
Release 1.4.0 · Kotlin/kotlinx.serialization
This release contains all features and bugfixes from 1.4.0-RC plus some bugfixes on its own (see below).
Kotlin 1.7.10 is used as a default.
Bugfixes
Fixed decoding of huge JSON data for okio stre...
Kotlin 1.7.10 is used as a default.
Bugfixes
Fixed decoding of huge JSON data for okio stre...
Иерархия модулей в приложении Headhunter
- Четкие правила по классификации модулей упрощают жизнь в многомодульном проекте
- Имена модулей должны быть такими, чтобы было понятно, что делает модуль и где лежит его код
- Ограничения на количество зависимостей у модуля позволяют держать под контролем время сборки
- У HH три типа модулей: app-модули, feature-модули, core-модули
- Введенные правила для каждого из типов модулей позволяют растить иерархию вширь, а не вглубь
- Четкие правила по классификации модулей упрощают жизнь в многомодульном проекте
- Имена модулей должны быть такими, чтобы было понятно, что делает модуль и где лежит его код
- Ограничения на количество зависимостей у модуля позволяют держать под контролем время сборки
- У HH три типа модулей: app-модули, feature-модули, core-модули
- Введенные правила для каждого из типов модулей позволяют растить иерархию вширь, а не вглубь
Charty – библиотека для создания графиков для Compose
- Поддерживается много видов гистограмм, круговых диаграмм и линейных графиков
- Есть семпловое приложение, в котором можно поиграться со всеми графиками
- Поддерживается много видов гистограмм, круговых диаграмм и линейных графиков
- Есть семпловое приложение, в котором можно поиграться со всеми графиками
DivKit — в опенсорсе
Ребята из Яндекса опубликовали на гитхабе новый фреймворк DivKit, который ускоряет разработку приложений. Его особенности:
- DivKit позволяет интегрировать подход Server-Driven UI на уровне отдельных элементов
- Изменения UI могут раскатываться с сервера на все версии приложения одновременно
- Кроссплатформенность: пишем один код для Android, iOS и веба.
Ребята из Яндекса опубликовали на гитхабе новый фреймворк DivKit, который ускоряет разработку приложений. Его особенности:
- DivKit позволяет интегрировать подход Server-Driven UI на уровне отдельных элементов
- Изменения UI могут раскатываться с сервера на все версии приложения одновременно
- Кроссплатформенность: пишем один код для Android, iOS и веба.
Как расчитываются размеры Layout’ов в зависимости от их родительских элементов
- При реализации кастомного Layout вы получаете доступ к measurables, списку элементов для измерения, и constraints, списку ограничений, накладываемых родительскими элементами
- К constraints относятся ограничения не только родительских view, но и различных modifiers
- BoxWithConstraints – особенный вид Layout, в котором композиция элементов происходит уже на этапе measure/layout
- При реализации кастомного Layout вы получаете доступ к measurables, списку элементов для измерения, и constraints, списку ограничений, накладываемых родительскими элементами
- К constraints относятся ограничения не только родительских view, но и различных modifiers
- BoxWithConstraints – особенный вид Layout, в котором композиция элементов происходит уже на этапе measure/layout
Accompanist – что это за библиотеки и какая у них судьба
- Сейчас Accompanist включает в себя Pager, FlowLayouts, Navigation Transitions, Swipe Refresh и другие компоненты
- Основная цель Accompanist – тестировать пользу от фичей, пока не готовых к добавлению в Jetpack
- Эти фичи нельзя включать напрямую в AndroidX, так как использовать экспериментальный API между модулями запрещено
- 30% приложений, использующих Compose, используют и Accompanist
- Сейчас Accompanist включает в себя Pager, FlowLayouts, Navigation Transitions, Swipe Refresh и другие компоненты
- Основная цель Accompanist – тестировать пользу от фичей, пока не готовых к добавлению в Jetpack
- Эти фичи нельзя включать напрямую в AndroidX, так как использовать экспериментальный API между модулями запрещено
- 30% приложений, использующих Compose, используют и Accompanist
Medium
Jetpack Compose Accompanist — An FAQ.
Accompanist is a group of libraries that aim to supplement Jetpack Compose with features that are commonly required by developers but not…
Официальный гайд по архитектуре offline-first приложений
Основные требования к offline-first приложению: оставаться раьотоспособным без сетевого соединения, всегда показывать локальные данные, не дожидаясь ответа сервера, запрашивать обновления сервера с учетом ограничений сети и батареи. В гайде даются советы, как:
- Организовать слой данных с двумя репозиториями – для локального хранения и работы с удаленными данными
- Построить операции чтения и записи данных
- Обрабатывать ошибки
- Решать конфликты при синхронизации
Основные требования к offline-first приложению: оставаться раьотоспособным без сетевого соединения, всегда показывать локальные данные, не дожидаясь ответа сервера, запрашивать обновления сервера с учетом ограничений сети и батареи. В гайде даются советы, как:
- Организовать слой данных с двумя репозиториями – для локального хранения и работы с удаленными данными
- Построить операции чтения и записи данных
- Обрабатывать ошибки
- Решать конфликты при синхронизации
onBackPressed() deprecated
Начиная с Android 13, метод onBackPressed() депрекейтится. Причина в том, что обработка перехода назад переводится на ahead-of-time модель.
Начиная с Android 13, метод onBackPressed() депрекейтится. Причина в том, что обработка перехода назад переводится на ahead-of-time модель.
This media is not supported in your browser
VIEW IN TELEGRAM
v9 – библиотека для работы с векторными изображениями
- v9 позволяет динамически ресайзить Path-объекты, сохраняя изначальные размеры некоторых из их частей
- Аналогичным образом работают 9-patch bitmaps
- Автор библиотеки – Romain Guy, ключевой разработчик Compose и Android
- v9 позволяет динамически ресайзить Path-объекты, сохраняя изначальные размеры некоторых из их частей
- Аналогичным образом работают 9-patch bitmaps
- Автор библиотеки – Romain Guy, ключевой разработчик Compose и Android