Size: a a a

Android Live 🤖

2021 November 10
Android Live 🤖
​​Изучаем папку .idea in Android
#android

При создании нового проекта, автоматически создаётся папка .idea, которая часто автоматически попадает в .gitignore.

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

Например, автор рекомендует включать в .gitignore папки caches, libraries и modules, но при этом оставить в проекте codeStyles, dictionaries, fileTemplates и парочку других.
источник
Android Live 🤖
🔥 Podlodka's Hot News: Второй сезон Soft Skills Crew стартует в новом формате однонедельной конференции.

Стартуют 15 ноября.

Сессии проводят дважды в день: утром и вечером.
В программе: крутые спикеры, сессии в лайве, ламповое общение и обмен кейсами в слаке, записи (для тех, кто не успевает на лайв).

Тема недели Общение с руководством:
– Поймете, как презентовать результаты работы руководителю
– Узнаете, как строить продуктивный диалог в сложных кейсах
– Научитесь договариваться о повышении или прибавке

Подробности и билеты уже на сайте!🤘

Промокод для скидки — android_live_soft_crew_2

#партнёрский
источник
2021 November 15
Android Live 🤖
​​Support Modern Emoji
#design

Emoji сегодня — довольно важная часть, которая используется повсеместно, будь то чаты или просто текстовые поля. Однако, не все emoji одинаково отображаются на всех устройствах.
Если мы говорим про более старые гаджеты, то вместо красивой иконки мы может получить просто квадрат. А ещё, мало кто задумывается, что комбинация из 2 и более emoji может давать новую.

Любопытная статья, которая рассказывает об отображении emoji в текстовых полях. На самом деле, есть целая библиотека, которая помогает отобразить emoji на старых устройствах, начиная с  API 19. Она интегрирована в AppCompat 1.4, поэтому вам не нужно ничего докручивать.

Но очень круто почитать, как это работает под капотом и о том, что происходит если вводить emoji в текстовые поля.
источник
2021 November 16
Android Live 🤖
​​Android CI/CD: GitLab + Slack bot
#cicd

Интересная связка для автоматизации сбора билдов, описанная в статье. Автор решил дать возможность выбрать любую ветку для сборки, собирая её на встроенной в GitLab CI/CD.

Получилось довольно круто: любой может выбрать при помощи бота Slack ветку для сборки, будь то тестировщик, который хочет посмотреть определённую фичу или разработчик, который просто делает ежедневные сборки. 🤘

Кстати, а нет ли похожего бота в Telegram? Если знаете, то поделитесь в комментариях.
источник
Android Live 🤖
​​Релиз Kotlin 1.6.0
#kotlin

Состоялся релиз Kotlin 1.6.0, в котором появилось несколько изменений:

1️⃣ exhaustive when — долгожданная фича, суть которой в подсветке новых enum и  sealed при их использовании в операторе when.
То есть теперь компилятор будет выдавать ошибку, если вы возвращаете тип, который не описали в when и пока что выдавать warning, если просто выполняете when в функции. С 1.7.0 там тоже будет ошибка.

2️⃣ Изменения в поддержке suspend-функций — стало ещё удобнее работать с suspend-функциями, их работа стала аналогична обычным функциям. Лучше посмотреть пример того, как эти штуки работают тут.

3️⃣ Можно попробовать новую версию менеджера памяти — больше деталей тут. Обещают заметно улучшить разработку проектов на KMM, ведь менеджер уберёт проблемы, связанные с доступом к объектам из разных потоков, и теперь не придётся управлять этими процессами вручную.

Ну и ещё пару мелких изменений с билдерами, операторами и Kotlin/JS. Обо всех изменениях читайте в релизе. 😉
источник
2021 November 19
Android Live 🤖
​​Тайный Санта 🎅
#android_live

Уже минул экватор ноября, а это значит – пора начинать готовиться к Новому Году!
В этом году захотелось попробовать на канале новую, но широко известную тему с Тайным Сантой.

Каждый из вас может поучаствовать в этой игре (где нет проигравших 🎁), условия очень просты:

1️⃣ Зарегистрироваться по ссылке на специальном ресурсе, который автоматически распределит участников

2️⃣ Быть готовым принять и отправить подарок: сумма подарка составляет ~800 рублей.

В целом, это всё. Приём участников начинается сегодня и заканчивается 30 ноября, после чего будет автоматическая жеребьёвка.

Подарки получать всегда приятно, да и новогоднее настроение само себя не создаст 😉 Поэтому, переходим по ссылке и участвуем вместе с нами.
Вопросы можете писать в комментариях, или мне в личку.🎄
источник
2021 November 25
Android Live 🤖
​​DI.kt — фреимворк для KMM
#kmm #library

Тут ребята из Wrike выложили один из первых DI-фреимворков для KMM — DI.kt.
Если вы не понимаете, зачем нужна ещё одна библиотека для DI (ведь есть Koin или Kodein), то ответ — отсутствие compile-time валидации, ведь текущие библиотеки представляют из себя service locators.

Для имногих подобная валидация является критически важной, поэтому можно рассмотреть эту библиотеку в будущих проектах.
Да, пока она alpha, поэтому стоит пользоваться ей только в своих проектах.

Ссылка на то, как её использовать тут, API выглядит простым. 🤞🏻
источник
2021 November 26
Android Live 🤖
​​Удобный Permissions Manager
#library

Почти все сегодняшние приложения под Android запрашивают и обрабатывают Permissions.

На мой взгляд, первая имплементация для запроса разрешений была не самая удачная. Ведь надо было прописывать onActivityResult для получения результата и полная реализация получения была громоздкой. Тогда и стали активно появляться различные обёртки библиотеки, которые заметно упрощают получение разрешений.

Но на днях решил посмотреть, а насколько тяжело сейчас реализовать получение «пермишенов» и что изменилось. И к счастью, нашёлся крутой вариант, позволяющий добавить реализацию буквально в несколько строк кода.

Для запроса нам надо зарегистрировать requestPermissionLauncher и вызвать: requestPermissionLauncher.launch(Manifest.permission.REQUESTED_PERMISSION) с нужным разрешением. В итоге получаем:

val requestPermissionLauncher =
   registerForActivityResult(RequestPermission()
   ) { isGranted: Boolean ->
       if (isGranted) {
           // Permission is granted.
       } else {
           // Permission is denied.
       }
   }


Я тут добавил немного «магии» Kotlin, причесав всё делегатами и получилось ещё удобнее, можете ознакомиться тут.
Так что теперь смело можно выкинуть ещё одну либу из проекта.
источник
2021 December 01
Android Live 🤖
​​Общение между Fragments
#fragment

Довольно частой задачей в приложении, которое использует Fragments является передача данных из одного фрагмента в другой.
Можно встретить множество подходов для решения этой задачи, начиная от создания интерфейса для передачи, использования классов-хелперов до создания общей ViewModel. Но на самом деле, не так давно появился куда более простой и удобный способ. Если вы его ещё не используете, то настало то самое время.

1️⃣ Добавьте setFragmentResultListener() в том фрагменте, где вы хотите слушать результат.
2️⃣ Вызовите setFragmentResult("requestKey", bundleOf("bundleKey" to result)) в том фрагменте, где хотите отправить результат.

И на этом всё. Главное следите за FragmentManager, и если вам не пришёл результат, то проверьте, правильно ли вы вызываете показ этого фрагмента.
Чуть больше кода можно найти тут.
источник
Android Live 🤖
​​Postman capture feature
#tests

Интересная статья для настройки слушателя реальных запросов с Android-устройства на Postman.

Для подобных вещей часто используют Charles, но я уже использую Postman для тестирования запросов, поэтому можно не ставить себе ещё одну программу для тестирования.
источник
2021 December 03
Android Live 🤖
​​Релиз Compose Multiplatform
#compose

Отличная новость от ребят из JetBrains — Compose Multiplatform, который позволяет писать UI на десктоп и web, готов к production коду! Или же просто зарелизился.

Хорошая новость заключается в том, что по большей части он совместим с Jetpack Compose, поэтому можно делать свой код сразу на три платформы.
Подробнее можно почитать тут.
источник
Android Live 🤖
А уже завтра 4 декабря состоится крутая онлайн-конференция — DevFest Russia 2021, которую организуют сообщества GDG из разных городов России.

Планируется три потока: Web, Mobile и Cloud, а спикерами будут опытные Google Developer Experts, которые поделятся докладами на различные, актуальные темы.

Конференция на русском языке. ✌🏻Обязательно присоединяйтесь на Mobile-поток, где я буду модерировать.

Ссылка на трансляции тут, а сам список докладов — тут. 💪

#conference
источник
2021 December 04
Android Live 🤖
Ребята, а мы уже начали. Присоединяйтесь к первому докладу. 😉
источник
2021 December 05
Android Live 🤖
Android Meetup СберМаркет Tech 9 декабря в 18:00📱

На митапе вы узнаете:
— Как интегрировать Swift в React Native? Что такое нативный компомент и как его написать с shadow view и yoga?
— Как организовать структуру пайплайнов и внедрить Continuous Integration в React Native проект?
— Зачем использовать JetpackCompose внутри React Native?
— Как эволюционировали архитектурные подходы в мобильной разработке?

Регистрация и подробности программы: https://sbermarket.timepad.ru/event/1851300/

#партнёрский
источник
2021 December 07
Android Live 🤖
​​Как работает Crashlytics?
#android

Кажется, что все разработчики под Android пользовались инструментом под названием Crashlytics. Ведь это одна их самых распространённых библиотек для того, чтобы «поймать» краши, ошибки и некорректное поведение и потом их исправить.

Но мало кто знает, как работает этот распространённый компонент под капотом. Автор статьи решил посмотреть, как же всё таки он устроен и детально описал, для чего каждый класс нужен. 👍🏻
источник
2021 December 11
Android Live 🤖
​​Уменьшение размера apk-файла
#android

Тема уменьшения размера apk-файла очень важна для любого приложения, несмотря на то, что Интернет дешевеет, а памяти становится больше (хоть и не всегда).

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

Давайте сделаем небольшой чек-лист, где опишем, что надо сделать, чтобы apk-файл занимал минимальное количество памяти.

1️⃣ Запускаем Analyze APK tool, которая встроена в Android Studio. Найти её можно в меню Analyze -> Analyze APK… После выбора файла, мы получим описание того, что занимает большую часть памяти.

2️⃣ Удаляем неиспользуемые библиотеки. Первое, довольно затратное по времени дело — это анализ тех библиотек, которые есть у вас в проекте, но не используются. Ещё обратите внимание на большие библиотеки из которых вы используете всего пару компонентов. Быть может, их можно вынести отдельно в ваш код и удалить лишнюю зависимость. Приятный бонус — у вас просто станет меньше зависимостей, а меньше кода = меньше багов 😀

3️⃣ Включаем Proguard и R8. У этих инструментов есть возможность удаления неиспользуемого кода в приложении, а также обфускация. И то, и другое — крутая фича, которую мы получим, если включим minifyEnabled true в build.gradle. Обязательно настройте правила и проверьте, чтобы итоговый apk корректно собирался и не падал.

4️⃣ Удаляем неиспользуемые ресурсы. Очищаем неиспользуемые строки и ресурсы при помощи Refactor -> Remove unused resources.

5️⃣ Используем vector drawable и webp. При использовании изображений отдавайте предпочтение этим форматам вместо png или jpeg.
Кстати, не стоит делать копии векторных ресурсов, если они отличаются только цветом, ведь цвет легко поменять при помощи свойства tint.

6️⃣ Убираем неиспользуемые языки. Вы удивитесь, насколько много лишних строк скрывается в приложении от библиотек. Если ваше приложение переведено на один или два языка, то есть смысл оставить только их и выкинуть неиспользуемое. Сделать это можно при помощи resConfigs "en", который прописываем также в build.gradle.

7️⃣ Включаем Dynamic Feature. Если в вашем приложении есть функциональность, которая не нужна всем пользователям или же её можно загрузить позже, то есть смысл динамически подгружать её во время использования приложения.

Уверен, что всегда есть, куда расти и сделать приложение меньше. Поделитесь своими рекомендациями, если их наберётся больше, то сделаем вторую часть, сделав наши приложения максимально оптимизированными.✌️
источник
2021 December 13
Android Live 🤖
​​Делаем свою библиотеку под KMM
#kmm

Хороший доклад с прошедшего droidcon, где автор Kodein делится опытом для создания своей библиотеки под KMM.

На самом деле, сейчас есть потребность в библиотеках для KMM. И хотя их число растёт, но всё же, есть огромный пласт всяких штук, которые все еще не покрыты созданными библиотеками.

Возможно, этот доклад будет хорошим стартом для того, чтобы начать писать свою библиотеку и заработать кучу звёзд в GitHub. 🤞
источник
2021 December 14
Android Live 🤖
​​Slot API паттерн в Compose UI
#compose

Интересная статья от Chris Banes, где рассказывается о том, что такое паттерн Slot API и как его использовать внутри Compose.

Штука весьма полезная, особенно если вы хотите писать свои собственные composable-функции и корректно с ними взаимодействать. Так что пример, который описывается в статье будет весьма кстати.
источник
Android Live 🤖
Skyeng приглашает Android-разработчиков Middle+ и Senior уровня попасть в свою команду за 2 дня

Кому подойдёт:
Опытным Android-разработчикам уровня Senior и Middle+, которые не фанатеют от монотонных собеседований, общения с эйчарами и утомительных тестовых.

Как проходит:
До 28 декабря оставляете заявку, с вами связываются и назначают дату двух собеседований по 1.5 часа: одно с техлидом, второе с руководителем команды. После даём обратную связь, даже если вы не подойдете команде.

Будет очень круто заранее увидеть пример вашего кода, например репозиторий на GitHub или в другом формате

Узнать подробнее и откликнуться 👈🏻

#партнёрский
источник
2021 December 17
Android Live 🤖
​​Jetpack Glance Alpha для виджетов
#jetpack #compose

Наверняка вы знаете о том, что в Android 12 обновили виджеты, сделав их более используемыми и красивыми.
По статистике Google, 84% пользователей используют хотя бы один виджет. ☝🏼
Однако, на мой взгляд, если убрать из этой выборки часы и погоду, то останется совсем небольшой процент людей, которые устанавливают какие-то другие виджеты.

Но ребята из Google пытаются улучшить эту статистику и анонсировали новый способ создания виджетов — Jetpack Glance.
По сути, теперь мы можем писать виджеты в декларативном стиле с использованием Jetpack Compose. Пока что всё в aplpha, и обещают добавить ещё больше элементов для создания красивых виджетов. Чуть больше деталей тут.

Звучит интересно, посмотрим, получится ли воскресить виджеты на Android. Я как-то пока не сильно в это верю: мне кажется, что виджеты не добавляют в приложение именно потому что ими почти не пользуются. А что думаете вы?
источник