Как оптимизировать размер приложения?
#tools
Размер конечного файла приложения — одна из его главных характеристик. Для нас она может казаться не такой важной: Интернет довольно дешёвый (ну, по крайней мере в России), места на устройствах становится всё больше, и тп.
Однако есть и те пользователи, которые принимают решение об установке приложения в том числе на основании размера установочного файла.
Да и нам, как людям, которые заботятся о качестве выпускаемого продукта стоит думать об этой характеристике.
Отличный гайд, который рассказывает о том, как по шагам уменьшить размер вашего приложения тут. Автор рассматривает все аспекты уменьшения приложения: удаление неиспользуемых библиотек и ресурсов, proguard, dynamic feature и т.д.
#tools
Размер конечного файла приложения — одна из его главных характеристик. Для нас она может казаться не такой важной: Интернет довольно дешёвый (ну, по крайней мере в России), места на устройствах становится всё больше, и тп.
Однако есть и те пользователи, которые принимают решение об установке приложения в том числе на основании размера установочного файла.
Да и нам, как людям, которые заботятся о качестве выпускаемого продукта стоит думать об этой характеристике.
Отличный гайд, который рассказывает о том, как по шагам уменьшить размер вашего приложения тут. Автор рассматривает все аспекты уменьшения приложения: удаление неиспользуемых библиотек и ресурсов, proguard, dynamic feature и т.д.
👍1
Изменения виджетов для Android 12
#api #view #question
Виджеты существуют уже долгое время, и, думаю, каждый пользователь смартфона на Android использует хотя бы один на своём рабочем столе. Но не так много приложений включает их в свой арсенал: нет подходящих фич для того, чтобы их использовать, или же текущее API не позволяет добавить то, что хочется.
С появлением Android 12 у нас есть изменения в API виджетов, вероятно это вдохнёт новую жизнь в этот элемент. 🤞🏻
Обязательно почитайте эту статью, где описываются все изменения: ведь теперь нужно учитывать скругления, переключения тем и превью при добавлении.
А тут уже больше измений, связанных с кодом. Рассказывается о новом API и поддержки их в виджетах, что также может помочь вам в использовании виджетов на последнем Android.
А у вас в приложении есть виджеты?
#api #view #question
Виджеты существуют уже долгое время, и, думаю, каждый пользователь смартфона на Android использует хотя бы один на своём рабочем столе. Но не так много приложений включает их в свой арсенал: нет подходящих фич для того, чтобы их использовать, или же текущее API не позволяет добавить то, что хочется.
С появлением Android 12 у нас есть изменения в API виджетов, вероятно это вдохнёт новую жизнь в этот элемент. 🤞🏻
Обязательно почитайте эту статью, где описываются все изменения: ведь теперь нужно учитывать скругления, переключения тем и превью при добавлении.
А тут уже больше измений, связанных с кодом. Рассказывается о новом API и поддержки их в виджетах, что также может помочь вам в использовании виджетов на последнем Android.
А у вас в приложении есть виджеты?
Как тестировать Jetpack Compose UI
#compose #jetpack #tests
Думаю, что многие из вас знакомы с инструментами для тестирования UI, написанного в традиционном xml-подходе. Однако, элементы созданные при помощи Compose не имеют
Для этого уже существует библиотека, которая полностью позволяет протестировать UI на Compose.
А чтобы вам проще было разобраться с написанием своего первого теста, есть отличная статья, где детально разбираются все аспекты UI-тестирования.
#compose #jetpack #tests
Думаю, что многие из вас знакомы с инструментами для тестирования UI, написанного в традиционном xml-подходе. Однако, элементы созданные при помощи Compose не имеют
Views, и, следовательно, должны быть протестированы другим способом. Для этого уже существует библиотека, которая полностью позволяет протестировать UI на Compose.
А чтобы вам проще было разобраться с написанием своего первого теста, есть отличная статья, где детально разбираются все аспекты UI-тестирования.
👍1
Новая модель управления памятью в Kotlin/Native
#kotlin
Вчера вышел анонс новой модели управления памяти в Kotlin/Native. На практике это позволит сделать процесс «шэринга» кода между iOS и Android более приятным. 🙌🏻
При использовании KMM чаще всего нам нужно думать о некоторых специфичных вещах, которые есть в каждой операционной системе, а за все общие элементы будет ответственнен KMM. Однако, существует ограничение в модели памяти, которое не очень совместимо с параллельными задачами на iOS и Android. 🙄
Ребята из JetBrains уже делали анонс того, что хотят поменять модель управления памятью, и теперь появилась возможность попробовать её на своих проектах.
Новые версии coroutines и ktor уже испольуют этот подход. Теперь не нужно вызывать
Гайд о том, как мигрировать можно найти тут, а вот пример приложения. 🤟
#kotlin
Вчера вышел анонс новой модели управления памяти в Kotlin/Native. На практике это позволит сделать процесс «шэринга» кода между iOS и Android более приятным. 🙌🏻
При использовании KMM чаще всего нам нужно думать о некоторых специфичных вещах, которые есть в каждой операционной системе, а за все общие элементы будет ответственнен KMM. Однако, существует ограничение в модели памяти, которое не очень совместимо с параллельными задачами на iOS и Android. 🙄
Ребята из JetBrains уже делали анонс того, что хотят поменять модель управления памятью, и теперь появилась возможность попробовать её на своих проектах.
Новые версии coroutines и ktor уже испольуют этот подход. Теперь не нужно вызывать
freeze(), если вы хотите «пошарить» объекты между разными потоками (кроме AtomicReference). Гайд о том, как мигрировать можно найти тут, а вот пример приложения. 🤟
Наверняка для вас не секрет, что Android — это свободный проект, поэтому каждый пользователь имея определённые знания может создать свою версию операционной системы. 🤓 Однако, классический Android, установленный на большинстве устройств пользователей, во многом принадлежит Google: без их сервисов не работают многие приложения, есть сильная завязка на предустановленные приложения.
Любопытно посмотреть на аналоги, которые уже есть. Один из них — CalyxOS, цель которой максимально убрать из себя продукты и сервисы Google.
Тут можно почитать о том, как эта система заменяет сервисы Google, что там вместо Play Market, геосервисов и YouTube, а также на какие устройства её можно установить.
По мне так подобные проекты довольно интересны, их любопытно изучать с точки зрения разработчика. Но все же, мне кажется, что они так и останутся нишевой историей, потому что большинство приложений будут поддерживать Google Services, а большинство пользователей не очень-то и думают о своей приватности в Интернет.
Любопытно посмотреть на аналоги, которые уже есть. Один из них — CalyxOS, цель которой максимально убрать из себя продукты и сервисы Google.
Тут можно почитать о том, как эта система заменяет сервисы Google, что там вместо Play Market, геосервисов и YouTube, а также на какие устройства её можно установить.
По мне так подобные проекты довольно интересны, их любопытно изучать с точки зрения разработчика. Но все же, мне кажется, что они так и останутся нишевой историей, потому что большинство приложений будут поддерживать Google Services, а большинство пользователей не очень-то и думают о своей приватности в Интернет.
Как создать востребованное приложение?
#process
Со мной поделились крутой статьёй, которая рассказывает о том, что отличает популярные продукты от невостребованных.
Если спросить вас, «Что отличает хорошее приложение от плохого?», то ответы чаще будут связаны непосредственно с приложением: качество дизайна, отзывчивость интерфейса, быстрая поддержка и т.д.
Однако в любой нише есть продукты, которые сделаны «на коленке», при этом имеющие положительные оценки и приличное количество пользователей, любящих это приложение. В чём же секрет? 👀
Автор статьи рассказывает, что такие продукты конкурируют не среди приложений, пытаясь стать лучше при помощи дизайна, поддержки и т.д., а за счёт пользователей – делая их лучше.
Цель любого продукта, по мнению автора, заставить пользователя быть лучше не только в вашем приложении, но и в какой-то не связанной непосредственно с вашим приложением области.
Ну и кроме этого в статье много годных мыслей о мастерстве, практике, борьбе с когнитивными утечками и т.д., об улучшении навыков людей. Крайне рекомендую! 👍
Ну и не стесняйтесь делиться своими мыслями в комментариях.
#process
Со мной поделились крутой статьёй, которая рассказывает о том, что отличает популярные продукты от невостребованных.
Если спросить вас, «Что отличает хорошее приложение от плохого?», то ответы чаще будут связаны непосредственно с приложением: качество дизайна, отзывчивость интерфейса, быстрая поддержка и т.д.
Однако в любой нише есть продукты, которые сделаны «на коленке», при этом имеющие положительные оценки и приличное количество пользователей, любящих это приложение. В чём же секрет? 👀
Автор статьи рассказывает, что такие продукты конкурируют не среди приложений, пытаясь стать лучше при помощи дизайна, поддержки и т.д., а за счёт пользователей – делая их лучше.
Цель любого продукта, по мнению автора, заставить пользователя быть лучше не только в вашем приложении, но и в какой-то не связанной непосредственно с вашим приложением области.
Ну и кроме этого в статье много годных мыслей о мастерстве, практике, борьбе с когнитивными утечками и т.д., об улучшении навыков людей. Крайне рекомендую! 👍
Ну и не стесняйтесь делиться своими мыслями в комментариях.
Многопоточность и Kotlin в Яндекс.Картах на iOS
#kotlin #kmm
Тут ребята из Яндекс рассказали о своём опыте работы с Kotlin Multiplatform на примере Яндекс.Карт. Основные проблемы были связаны именно с поддержкой многопоточности на iOS, а с простыми фичами не было никаких проблем.
Узнать о том, как в итоге получилось подружить многопоточность KMM с iOS можно в этой статье.
#kotlin #kmm
Тут ребята из Яндекс рассказали о своём опыте работы с Kotlin Multiplatform на примере Яндекс.Карт. Основные проблемы были связаны именно с поддержкой многопоточности на iOS, а с простыми фичами не было никаких проблем.
Узнать о том, как в итоге получилось подружить многопоточность KMM с iOS можно в этой статье.
👍1
Принципы и методы эффективной локализации
#view #tools
Интересная статья, которая рассказывает о техниках локализации вашего приложения, которые лежат чуть дальше, чем просто перевод на язык.
Речь идёт больше о том как сделать, чтобы людям из разных культур, наций и стран было комфортно пользоваться вашим приложением.
Например, любопытный момент с большими текстами на разных языках: нужно иметь ввиду, что шрифт может менять свой размер в зависимости от выбранного языка. Или вот еще, пользовательское соглашение на английском языке будет занимать гораздо меньше места, чем сообщение с иероглифами.
Ну и интересный пункт про аватарки пользователй: если вы используете какие-то предустановленные аватарки, то стоит избегать аватарок только одного пола, расы или демографической характеристики. ☝️
В общем, будет полезно проверить своё приложение, если оно работает в нескольких странах, вероятно так вы сделаете его ещё лучше.
#view #tools
Интересная статья, которая рассказывает о техниках локализации вашего приложения, которые лежат чуть дальше, чем просто перевод на язык.
Речь идёт больше о том как сделать, чтобы людям из разных культур, наций и стран было комфортно пользоваться вашим приложением.
Например, любопытный момент с большими текстами на разных языках: нужно иметь ввиду, что шрифт может менять свой размер в зависимости от выбранного языка. Или вот еще, пользовательское соглашение на английском языке будет занимать гораздо меньше места, чем сообщение с иероглифами.
Ну и интересный пункт про аватарки пользователй: если вы используете какие-то предустановленные аватарки, то стоит избегать аватарок только одного пола, расы или демографической характеристики. ☝️
В общем, будет полезно проверить своё приложение, если оно работает в нескольких странах, вероятно так вы сделаете его ещё лучше.
Убираем лишние файлы Android Studio
#tools #tips
Не многие разработчики знают, что при обновлении Android Studio или версии gradle, на компьютере может оставаться довольно много лишнего мусора.
Это могут быть уже не используемые кэши, дополнительные настройки и неиспользуемые эмуляторы. Все эти файлы могут занимать десятки гигабайт, что критично, если у вас небольшой SSD.
Вот вам небольшой чеклист, который позволит убрать лишние файлы с вашего ПК, а детально можно почитать тут:
🔹очищаем директорию проекта — для начала это “Build -> Clean Project”, потом “File -> Invalidate Caches / Restart”. Далее заходим в директорию и удаляем каталог
🔹очищаем gradle — заходим в директорию
🔹очищаем Android Studio — заходим в директорию
В директории
🔹очищаем Android SDK — заходим в SDK Manager и удаляем те версии Android, которые уже давно не используем в проекте в качестве targetSdkVersion. Здесь всё зависит от того, сколько ненужных штук вы удалите.
Обратите внимание также и на NDK-версии, вдруг вашим проектам они совсем не нужны.
🔹удаляем неиспользуемые эмуляторы — заходим в AVD Manager и удаляем те эмуляторы, которые никогда не используем. Каждый эмулятор может потреблять около 10 gb места, поэтому не раздумывая удаляем их.
🔹подчищаем неиспользуемые git-ветки — просто, чтобы был порядок 😉.
Если у вас есть что ещё добавить к этому списку, то welcome в комментарии.
#tools #tips
Не многие разработчики знают, что при обновлении Android Studio или версии gradle, на компьютере может оставаться довольно много лишнего мусора.
Это могут быть уже не используемые кэши, дополнительные настройки и неиспользуемые эмуляторы. Все эти файлы могут занимать десятки гигабайт, что критично, если у вас небольшой SSD.
Вот вам небольшой чеклист, который позволит убрать лишние файлы с вашего ПК, а детально можно почитать тут:
🔹очищаем директорию проекта — для начала это “Build -> Clean Project”, потом “File -> Invalidate Caches / Restart”. Далее заходим в директорию и удаляем каталог
.gradle и .idea. На всякий случай сделайте бэкап этих папок. Это даст нам лишние ~500mb.🔹очищаем gradle — заходим в директорию
~/.gradle. Это домашняя директория Gradle, которая занимает особенно много места. Осторожно удаляем те версии gradle, которые уже не используются. В целом, можете убрать и текущую, просто при первой сборке проекта надо будет подождать дольше. Тут мы можем получить аж до 15 gb.🔹очищаем Android Studio — заходим в директорию
~/.android. Там могут быть настройки от старых версий IDE, так что их точно можно убрать. Последние версии Studio делают это за вас, но проверить всё равно стоит. Получаем около 100mb. В директории
~/Library/{Preferences, Caches, Logs, Application Support} можете тоже поискать старые версии вашей среды разработки.🔹очищаем Android SDK — заходим в SDK Manager и удаляем те версии Android, которые уже давно не используем в проекте в качестве targetSdkVersion. Здесь всё зависит от того, сколько ненужных штук вы удалите.
Обратите внимание также и на NDK-версии, вдруг вашим проектам они совсем не нужны.
🔹удаляем неиспользуемые эмуляторы — заходим в AVD Manager и удаляем те эмуляторы, которые никогда не используем. Каждый эмулятор может потреблять около 10 gb места, поэтому не раздумывая удаляем их.
🔹подчищаем неиспользуемые git-ветки — просто, чтобы был порядок 😉.
Если у вас есть что ещё добавить к этому списку, то welcome в комментарии.
Hilt MAD Skills series
#tools #library
Тут вышла свежая статья про Hilt в серии статей про современные практики Android — MAD Skills.
Если вы пропустили, то в первой статье рассматривается общая информация о том, почему DI важен в современных приложениях. Ну и также упоминается, почему Hilt — хорошее и рекомендуемое решение от Google для dependency injection.
Во второй статье упор делается на тестирование, используя Hilt и на те аннотации, которые стоит использовать для этого.
Ну и в самой последней, третьей статье, рассказывается о том, как библиотека работает под капотом, как работают описанные в ней аннотации, как работает Hilt Gradle Plugin.
В общем, очень крутая серия статей, крайне рекомендую, если вы ещё не использовали Hilt в своих проектах.
#tools #library
Тут вышла свежая статья про Hilt в серии статей про современные практики Android — MAD Skills.
Если вы пропустили, то в первой статье рассматривается общая информация о том, почему DI важен в современных приложениях. Ну и также упоминается, почему Hilt — хорошее и рекомендуемое решение от Google для dependency injection.
Во второй статье упор делается на тестирование, используя Hilt и на те аннотации, которые стоит использовать для этого.
Ну и в самой последней, третьей статье, рассказывается о том, как библиотека работает под капотом, как работают описанные в ней аннотации, как работает Hilt Gradle Plugin.
В общем, очень крутая серия статей, крайне рекомендую, если вы ещё не использовали Hilt в своих проектах.
День программиста
#android_live
Сегодня наш профессиональный праздник — 256 день в году или день программиста.
Желаю всем кодящим мало багов, шикарных проектов, постоянного роста и развития🎉.
А сегодня не сидите слишком много за IDE, а насладитесь тёплыми деньками, которые позволяют отлично прогуляться по улице.
#android_live
Сегодня наш профессиональный праздник — 256 день в году или день программиста.
Желаю всем кодящим мало багов, шикарных проектов, постоянного роста и развития🎉.
А сегодня не сидите слишком много за IDE, а насладитесь тёплыми деньками, которые позволяют отлично прогуляться по улице.
Опрос от JetBrains
#kotlin #library
Ребята из JetBrains интересуются вашим мнением, связанным с написанием библиотек. Если вы когда-то писали библиотеки на Kotlin для внутреннего или публичного использования, то пройдите небольшой опрос, связанный с этим по ссылке.
Кстати, заполнившие отчёт могут выиграть одну из подписок на JetBrains All Products Pack или сертификат Amazon.🤫
#kotlin #library
Ребята из JetBrains интересуются вашим мнением, связанным с написанием библиотек. Если вы когда-то писали библиотеки на Kotlin для внутреннего или публичного использования, то пройдите небольшой опрос, связанный с этим по ссылке.
Кстати, заполнившие отчёт могут выиграть одну из подписок на JetBrains All Products Pack или сертификат Amazon.🤫
Превью ссылок в Android
#security #library
Сегодня «шэринг» ссылок — одна из самых важных частей любого мессенджера или приложения, которое связано с лентами сообщений. И приложения, для того, чтобы повысить желание пользователя открыть ссылку и повзаимодействовать с сообщением, добавляют превью этих ссылок. 🤟
Если вы делаете подобные приложения, то есть отличная статья, которая расскажет, как реализовать подобную фичу. Однако, не всё так просто, и спасибо за это бдительному подписчику. 🤝
Дело в том, что при создании этого превью вы в любом случае в фоне открываете эту ссылку за пользователя.
Представим сценарий, что какой-то недоброжелатель отправил в чат ссылку, которую по умолчанию открыли все те, кто увидел ленту этих сообщений. При этом недоброжелатель может зашить в ссылку всё что угодно, начиная от получения детальной информации о пользователе и заканчивая каким-то запрещённым контентом.
Решение — сделать прослойку между пользователем и ресурсом в виде своего сервера. Это гораздо безопаснее, и защитит ваших пользователей от недоброжелательного контента. Telegram, кстати, именно так и делает, а, например Viber — грузит без прослойки. 😞
Так что будьте внимательны к этой фиче, ведь она не такая простая, как может показаться на первый взгляд. Да и к сообщениям со ссылками, тоже, будьте внимательны. 🤞
#security #library
Сегодня «шэринг» ссылок — одна из самых важных частей любого мессенджера или приложения, которое связано с лентами сообщений. И приложения, для того, чтобы повысить желание пользователя открыть ссылку и повзаимодействовать с сообщением, добавляют превью этих ссылок. 🤟
Если вы делаете подобные приложения, то есть отличная статья, которая расскажет, как реализовать подобную фичу. Однако, не всё так просто, и спасибо за это бдительному подписчику. 🤝
Дело в том, что при создании этого превью вы в любом случае в фоне открываете эту ссылку за пользователя.
Представим сценарий, что какой-то недоброжелатель отправил в чат ссылку, которую по умолчанию открыли все те, кто увидел ленту этих сообщений. При этом недоброжелатель может зашить в ссылку всё что угодно, начиная от получения детальной информации о пользователе и заканчивая каким-то запрещённым контентом.
Решение — сделать прослойку между пользователем и ресурсом в виде своего сервера. Это гораздо безопаснее, и защитит ваших пользователей от недоброжелательного контента. Telegram, кстати, именно так и делает, а, например Viber — грузит без прослойки. 😞
Так что будьте внимательны к этой фиче, ведь она не такая простая, как может показаться на первый взгляд. Да и к сообщениям со ссылками, тоже, будьте внимательны. 🤞
Измерение производительности Jetpack Compose
#compose #performance
Интересная статья, где автор перед добавлением Jetpack Compose в проект решил проверить, насколько хорошо у него с производительностью, тестированием и временем сборки.
Было протестировано 4 варианта:
• вариант с одним Compose;
• xml-файл с базовым
• xml-файл с RecyclerView и адаптером;
• вариант с одним xml.
А прочитать результаты всех измерений и тестирования можно в этой статье.
#compose #performance
Интересная статья, где автор перед добавлением Jetpack Compose в проект решил проверить, насколько хорошо у него с производительностью, тестированием и временем сборки.
Было протестировано 4 варианта:
• вариант с одним Compose;
• xml-файл с базовым
ComposeView;• xml-файл с RecyclerView и адаптером;
• вариант с одним xml.
А прочитать результаты всех измерений и тестирования можно в этой статье.
Background Task Inspector
#tools #performance #beginners
Попался отличный гайд, который расскажет о том, что из себя представляет Background Task Inspector и как им пользоваться.
Вообще в Android Studio есть несколько полезных инструментов, и Background Task Inspector — второй по популярности (после Database Inspector), которым я пользуюсь. Его суть заключается в показе текущего статуса выполнения работ из
Сама статья и примеры приложения тут.
#tools #performance #beginners
Попался отличный гайд, который расскажет о том, что из себя представляет Background Task Inspector и как им пользоваться.
Вообще в Android Studio есть несколько полезных инструментов, и Background Task Inspector — второй по популярности (после Database Inspector), которым я пользуюсь. Его суть заключается в показе текущего статуса выполнения работ из
WorkManager, а также связи, которые имеются между этими работами. Это заметно облегчает отладку, ведь фоновые операции протестировать не всегда просто.Сама статья и примеры приложения тут.
Немного про Navigation Component
#jetpack #navigation #comments
Думаю, что многие из вас знакомы с библиотекой Jetpack Navigation Component, которая сейчас является рекомендованным решением для навигации от Google.
Я пробовал эту библиотеку как только она появилась, но в самом начале было довольно много багов, которые не позволили использовать её в проде. Сейчас решил снова вернуться к ней, и поговорить о плюсах и минусах этой библиотеки.
Начнём с хорошего:
🔹 рекомендованное решение от Google — библиотека входит в комплект Jetpack-библиотек, а это теоретически значит, что она будет поддерживаться, баги будут исправляться, а также будет интеграция с текущими компонентами.
🔹 удобный и красивый граф навигации — наверное, это одна из фич библиотеки, которая вызывает «вау-эффект»: все экраны и отношения между ними видны в одном месте в виде красивых превью;
🔹 хорошая документация — в целом, с компонентом разберётся любой разработчик за достаточно короткий промежуток времени, ведь документация хорошая. Правда, хотелось бы больше примеров кода и приложений;
А теперь поговорим о минусах, которые не позволили мне использовать её у себя в проекте.
⭕ отсутсвие кастомизации — у вас мало возможностей для настройки этой библиотеки. Например, я не нашёл как без костылей запретить пересоздавать фрагменты в
⭕ навигация возможна только из Fragment — вы должны делать переходы между экранами только через
Я склоняюсь к тому, чтобы слой
⭕ сложность настройки backstack — у вас есть возможность настроить multiple back stack, однако если мы говорим про stack
Поэтому, пока я остаюсь на Cicerone, которая не имеет подобных минусов и полностью кастомизируется под мои требования.
Поделитесь своим мнением про Navigation Component, буду рад поменять своё мнение. 😉
#jetpack #navigation #comments
Думаю, что многие из вас знакомы с библиотекой Jetpack Navigation Component, которая сейчас является рекомендованным решением для навигации от Google.
Я пробовал эту библиотеку как только она появилась, но в самом начале было довольно много багов, которые не позволили использовать её в проде. Сейчас решил снова вернуться к ней, и поговорить о плюсах и минусах этой библиотеки.
Начнём с хорошего:
🔹 рекомендованное решение от Google — библиотека входит в комплект Jetpack-библиотек, а это теоретически значит, что она будет поддерживаться, баги будут исправляться, а также будет интеграция с текущими компонентами.
🔹 удобный и красивый граф навигации — наверное, это одна из фич библиотеки, которая вызывает «вау-эффект»: все экраны и отношения между ними видны в одном месте в виде красивых превью;
🔹 хорошая документация — в целом, с компонентом разберётся любой разработчик за достаточно короткий промежуток времени, ведь документация хорошая. Правда, хотелось бы больше примеров кода и приложений;
А теперь поговорим о минусах, которые не позволили мне использовать её у себя в проекте.
⭕ отсутсвие кастомизации — у вас мало возможностей для настройки этой библиотеки. Например, я не нашёл как без костылей запретить пересоздавать фрагменты в
BottomNavigationView, а ведь если у вас есть экран с картой, то его повторная инициализация занимает много времени;⭕ навигация возможна только из Fragment — вы должны делать переходы между экранами только через
Fragment. С одной стороны, это удобно, ведь, например, можно сразу, при клике на кнопку, вызвать нужный элемент навигации. Но с другой стороны — мы возлагает на Fragment больше ответственности, чем должно с точки зрения архитектуры. Я склоняюсь к тому, чтобы слой
View был максимально «глупым» и в нём было минимальное количество логики. А вызвать навигацию с ViewModel проблематично.⭕ сложность настройки backstack — у вас есть возможность настроить multiple back stack, однако если мы говорим про stack
Activity, то фрагменты при нажатии кнопки «назад» также пересоздаются. Возможно, я не нашёл в документации, как поправить это поведение, но мне кажется, что это должно быть кастомизируемым для каждого экрана.Поэтому, пока я остаюсь на Cicerone, которая не имеет подобных минусов и полностью кастомизируется под мои требования.
Поделитесь своим мнением про Navigation Component, буду рад поменять своё мнение. 😉
Очищаем build.gradle
#gradle
Отличная статья, которая расскажет об очистке конфигурации
В итоге всё сводится к удалению уже не нужной информации, которая просто так захламляет этот файл. У меня, кстати, обнаружились почти все пункты. 🤫
Ссылка на статью тут.
#gradle
Отличная статья, которая расскажет об очистке конфигурации
build.gradle, делая её максимально простой. В итоге всё сводится к удалению уже не нужной информации, которая просто так захламляет этот файл. У меня, кстати, обнаружились почти все пункты. 🤫
Ссылка на статью тут.
👍1
Как измерить время старта приложения?
#library #performance
Для большинства приложений время старта — очень важная характеристика, которая влияет на удовлетворённость пользователя этим приложением.
Конечно, это не будет решающей метрикой, благодаря которой пользователь выставит вам негативную оценку в Google Play, но всё же важно, чтобы приложение запускалось как можно быстрее. А измерение этой метрики — довольно нетривиальная задача, и важно сделать это правильно.
Вот вам отличная статья, которая рассматривает различные способы для измерения времени запуска приложения. Это и анализ на собственном устройстве, и аналитика, которая собирается при помощи Google Play и Firebase, и кастомные решения.
#library #performance
Для большинства приложений время старта — очень важная характеристика, которая влияет на удовлетворённость пользователя этим приложением.
Конечно, это не будет решающей метрикой, благодаря которой пользователь выставит вам негативную оценку в Google Play, но всё же важно, чтобы приложение запускалось как можно быстрее. А измерение этой метрики — довольно нетривиальная задача, и важно сделать это правильно.
Вот вам отличная статья, которая рассматривает различные способы для измерения времени запуска приложения. Это и анализ на собственном устройстве, и аналитика, которая собирается при помощи Google Play и Firebase, и кастомные решения.
System Design Interview
#interview
Отличная статья, которая будет интересна тем, кто подготавливается к собеседованиям в компании, где одним из шагов является — System Design Interview. По сути, вас просят описать, как разработать какой-то сервис (например приложение Twitter).
Решение не должно быть идеальным: никто не ожидает, что вы сможете сделать совершенную систему за полчаса. Важна коммуникация с интервьюером и те мысли, уточняющие вопросы, которые вы задаёте.
В статье отлично показан сам процесс собеседования как раз на примере приложения Twitter.
#interview
Отличная статья, которая будет интересна тем, кто подготавливается к собеседованиям в компании, где одним из шагов является — System Design Interview. По сути, вас просят описать, как разработать какой-то сервис (например приложение Twitter).
Решение не должно быть идеальным: никто не ожидает, что вы сможете сделать совершенную систему за полчаса. Важна коммуникация с интервьюером и те мысли, уточняющие вопросы, которые вы задаёте.
В статье отлично показан сам процесс собеседования как раз на примере приложения Twitter.
Создание доступного приложения
#tools #view
Отличная статья, которая рассказывает о том, как сделать ваше приложение комфортным для использования людьми с разными видами инвалидности.
На самом деле, меня радует, что в последнее время появляется много материалов, которые связаны с адаптацией приложений: ведь таких людей очень много, и не адаптируя своё приложение вы заранее вычёркиваете многих пользователей из своего списка.
В статье есть примеры кода, связанного с адаптацией View, шрифтов, описания компонентов и т.д.
А вот ещё хорошая книга, хотя и из мира iOS, но полезная всем, кто занимается адаптацией интерфейсов, где дано множество полезных и практических советов.
#tools #view
Отличная статья, которая рассказывает о том, как сделать ваше приложение комфортным для использования людьми с разными видами инвалидности.
На самом деле, меня радует, что в последнее время появляется много материалов, которые связаны с адаптацией приложений: ведь таких людей очень много, и не адаптируя своё приложение вы заранее вычёркиваете многих пользователей из своего списка.
В статье есть примеры кода, связанного с адаптацией View, шрифтов, описания компонентов и т.д.
А вот ещё хорошая книга, хотя и из мира iOS, но полезная всем, кто занимается адаптацией интерфейсов, где дано множество полезных и практических советов.