Telegram Web
​​Как работает Crashlytics?
#android

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

Но мало кто знает, как работает этот распространённый компонент под капотом. Автор статьи решил посмотреть, как же всё таки он устроен и детально описал, для чего каждый класс нужен. 👍🏻
​​Уменьшение размера 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. Если в вашем приложении есть функциональность, которая не нужна всем пользователям или же её можно загрузить позже, то есть смысл динамически подгружать её во время использования приложения.

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

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

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

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

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

Штука весьма полезная, особенно если вы хотите писать свои собственные composable-функции и корректно с ними взаимодействать. Так что пример, который описывается в статье будет весьма кстати.
​​Jetpack Glance Alpha для виджетов
#jetpack #compose

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

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

Звучит интересно, посмотрим, получится ли воскресить виджеты на Android. Я как-то пока не сильно в это верю: мне кажется, что виджеты не добавляют в приложение именно потому что ими почти не пользуются. А что думаете вы?
👍2
​​Android App Bundles. Как уменьшить размер приложения?
#android

Уже с августа 2021 года при загрузке новых приложений в Google Play необходимо использовать формать aab вместо стандартного apk.
По сути, это крутая возможность уменьшить размер загружаемых файлов на устройство пользователя при установке приложения.

Ведь теперь Google берёт на себя генерацию отдельных apk-файлов для каждого типа устройства в зависимости от его характеристик и подгружает только нужные этому устройству ресурсы и код.

Чаще всего вам не очень сильно надо заморачиваться настройкой проекта, чтобы перейти на aab, но всё же есть некоторые нюансы, которые стоит проверить. Например, если у вас есть выбор языка внутри приложения, то теперь надо обработать динамическую подгрузку языков в приложение, да и настроить её в build.gradle.

Чуть больше информации о том, что стоит проверить можно найти тут.
👍2
​​Kotlin Flows in Android summary
#android #flow

Тут есть отличная статья, которая рассказывает об использовании Flow в Android. Некий краткий summary о том, что нужно знать с самого начала их использования.

Тут и про то, как их создавать, какие типы есть, о различных типах Dispatcher, всевозможных операторах, исключениях и т.д.

В общем, крайне рекомендую, можно сохранить в закладки.
👍6
​​Проверка Firebase Push уведомлений
#android

Небольшой лайфхак о том, как можно удобно тестировать пуш-уведомления в вашем приложении.

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

Но мало кто знает о возможности тестирования уведомлений через запросы. Для этого надо сформировать следующий запрос:

POST https://fcm.googleapis.com/fcm/send

Параметры для Body описаны тут.

И не забудьте в Headers добавить авторизацию:
Content-Type -> application/json
Authorization -> key=server_key.

Сам ключ можно взять в настройках проекта Firebase.
В целом, всё.
Этот способ позволяет более гибко настраивать уведомления, что особенно полезно при работе с уведомлениями на сервере. 🤞🏻
👍5
​​Советы по debug
#android

Отличная статья, где автор делится опытом дебага приложений в Android Studio и даёт кучу полезных советов для более быстрой работы.

Для себя узнал парочку новых штук.

1️⃣ Disable until hitting the following breakpoint — позволяет включать нужный breakpoint только в том случае, когда выполнился определённый вами breakpoint. Очень удобно, если надо отдебажить код, который выполняется только при определённом условии.

2️⃣ Evaluate and log — крутой пункт, если нужно вместо остановки на нужном breakpoint просто вывести сообщение в лог без повторной сборки приложения.

3️⃣ Drop Frame — штука, которая позволяет повторно перейти к выбранному breakpoint, если вы его случайно пропустили. Этакий второй шанс, если что-то пошло не так.

4️⃣ Analyzing stack trace — можно анализировать stack trace прям в студии, что гораздо удобнее, чем смотреть его в блокноте или браузере.

Полный список советов можно найти тут.
👍9
Реакции в Telegram
#android_live

О, теперь в Telegram поддерживаются реакции к сообщениям.
Включил их и на канале: обновите приложение и можете пользоваться. Правда мне кажется, что сообщения более важная штука, ведь общение с аудиторией — это круто. Но реакцию поставить быстрее, может быть ими будут пользоваться активнее.😄

А как вам нововведение?
👍90🔥48😱14💩8👎54
2️⃣0️⃣2️⃣2️⃣

Быть может для многих 2021 год был не самым успешным и столько неопределённости в мире ещё остаётся 🤪

Но в мире Android произошло много крутых событий, о которых вам рассказывал канал @android_live.
За этот год вышло несколько сотен постов, где каждый находил то, что полезно ему: будь то новичок или senior с годами опыта. 🤟🏻

Пусть следующий год принесёт ещё больше позитивных новостей и в разы меньше негатива. Друзья, всем крутых проектов, лучших людей рядом и крепчайшего здоровья 💫

С Новым годом от автора Android Live! 🎄
🎉73👍10🔥108
​​Kotlin Multiplatform Wizard
#kmm

Тут обновился Kotlin Multiplatform Wizard, и теперь тут стало ещё больше плюшек: можно выбрать нужные для проекта таргеты, настроить основные библиотеки для проекта, package name и прочее. Очень удобная штука, поэтому если начинаете свои проекты на KMM, то самое время сохранить страничку в закладки.

Кстати, авторы не против новых изменений от вас, так что если чего-то нет, то создавайте свои PR.🤘
🔥9👍42👎2
​​Jetpack Compose в существующий проект
#jetpack #compose

Статья, где автор делится своим опытом внедрения Jetpack Compose в текущий проект.
Для начала этого пути, он выбрал смену одной из главных кнопок в проекте и заменил её на Composable-функцию.

Думаю, что статья будет полезна новичкам в Compose, которые только-только стоят на пути изучения этой крутой технологии и внедрения её в свои проекты.
👍3
​​ShapeableImageView
#android #view

При разработке приложений, довольно часто нужно придавать различную форму ImageView. Самая распространённая — это круглая, которая зачастую используется для аватарок или в профилях.

Путей решения много: например, кастомная View или же библиотеки, но я только недавно узнал, что есть нативное решение из компонентов Material.

Все что нужно — это использовать com.google.android.material.imageview.ShapeableImageView и применить нужные атрибуты: это и форма, и обводка, и радиус для углов. В общем, крутая штука прям из коробки. Чуть больше деталей можно посмотреть тут.
🔥26👍2🤩1
Немного оффтопа на канале. Я сейчас в небольшом и уютном турецком городке Каш, где очень много русскоговорящих ребят с IT.

Вдруг кто-то из подписчиков тоже тут: буду рад встретиться и пообщаться за чашечкой вкусного кофе ☕️.

Пишите в личку, если надумаете.
👍9
​​Kermit and Crashlytics
#kmm

Полезная статья, которая рассказывает о том, как собирать краши на iOS и Android в KMM-приложениях при помощи Kermit.

На практике, сохранение стектрейса при падении приложения на iOS — не самая простая задача, если вы хотите также видеть место в Kotlin-коде, которое связано с падением. При помощи описанного логгера получается сохранить стектрейс, но только в качестве отдельного non-fatal краша.

Лучше, чем ничего: тем более, что каких-то других минусов в библиотеке не обнаружено.
👍7
​​Jetnews на каждом экране
#jetpack #compose

Интересная статья, которая будет полезна всем, кто работает с Compose и хочет адаптировать своё приложение под разные размеры экрана.

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

В целом, адаптация приложения под большие экраны — не выглядит чем-то сильно сложным и критичным. Но если у вас есть отличный опыт, то делитесь в комментариях.
👍1
​​GDG Minsk — Meetup
#meetup

Тут ребята из GDG Minsk делают онлайн Android Meetup. Вот темы и спикеры:

1️⃣ Анна Жаркова, Lead mobile developer, Kotlin GDE, Usetech — расскажет о том как использовать WorkManager API для эффективной фоновой работы, как заменить Foreground Service Expedited Jobs и настроить миграцию с учетом нюансов. Актуально, ведь устройств на последнем Android всё больше.

2️⃣ Павел Стрельченко, Android-разработчик core-команды в hh.ru — расскажет о переходе кодовой базы hh на ViewBinding с помощью плагина для Android Studio.

Зарегистрироваться можно тут, а можно сразу сохранить ссылку на трансляцию.

Мероприятие пройдёт 31 января в 19:00 GMT+3, оно бесплатное и на русском языке. Готовьте ваши вопросы спикерам, ещё есть время 😉.
👍9
2025/08/26 19:21:45
Back to Top
HTML Embed Code: