#Картинки #Оптимизация
Measure and optimize bitmap size using Glide or Picasso
Инструкция по оптимизации расхода оперативной памяти изображениями в Glide и Picasso
Measure and optimize bitmap size using Glide or Picasso
Инструкция по оптимизации расхода оперативной памяти изображениями в Glide и Picasso
Использую Notion для хранения всей информации. Основная его проблема - мобильное приложение на Android является оберткой Web, что приносит медленную скорость работы и отсутствие оффлайн работы. 😢
Наткнулся на статью как команда проекта расскзаывает про ускорение старта Android приложения и как переносят функционал в Kotlin код из Web
#производительность #оптимизация
Наткнулся на статью как команда проекта расскзаывает про ускорение старта Android приложения и как переносят функционал в Kotlin код из Web
#производительность #оптимизация
👍38❤5
Один из способов оптимизации скорости сборки Gradle проектов - отказаться от плагинов. Автор статьи (9м) рассказывает как и когда превратить Android Gradle модуль в Java/Kotlin модуль, чтобы ускорить сборку
#gradle #оптимизация #agp
#gradle #оптимизация #agp
👎20👍9🤯5
Обновление Android Gradle Plugin 8.X зачастую не такое быстрое для крупных проектов с десятками/сотнями разработчиков. Вот и для команды автора статьи(10м) это было больно, но справились. Результат - ускорение инкреметных сборок до 10% и уменьшение размера сборок
Рассказывается про то что обновить мажорное AGP - это не только смена версии, но и
👉 Обновление версий Gradle, Java, Kotlin
👉 Мажорный Gradle требует переезда на новые фичи, а предупреждения из прошлой мажорной версии меняются на ошибки
👉 Замена Gradle API на актуальные для ускорения сборки
Автор делится своим опытом и даёт рекомендации по обновлению, но кажется что они уже самые последние кто это сделал. Так ведь?
#gradle #agp #производительность #оптимизация
Рассказывается про то что обновить мажорное AGP - это не только смена версии, но и
👉 Обновление версий Gradle, Java, Kotlin
👉 Мажорный Gradle требует переезда на новые фичи, а предупреждения из прошлой мажорной версии меняются на ошибки
👉 Замена Gradle API на актуальные для ускорения сборки
Автор делится своим опытом и даёт рекомендации по обновлению, но кажется что они уже самые последние кто это сделал. Так ведь?
#gradle #agp #производительность #оптимизация
🔥20👍12👎7
История(7м) оптимизация холодного старта приложения. Что сделали:
👉 Сделали анализ старта
👉 Подключили StrictMode
👉 Перевели I/O операции в фон
👉 Переехали на ленивую инциализацию в DI графе
👉 Убрали лишний мусор на старте
👉 Упростили иерархию UI первого экрана
#производительность #оптимизация
👉 Подключили StrictMode
👉 Перевели I/O операции в фон
👉 Переехали на ленивую инциализацию в DI графе
👉 Убрали лишний мусор на старте
👉 Упростили иерархию UI первого экрана
#производительность #оптимизация
👍38🔥10
Статья(12м) с изложением подхода как сделать трекинг скорости работы методов Room. Автор использует Trace и создание обертки на Dao через Java Dynamic Proxy.
#room #sqlite #оптимизация #производительность
#room #sqlite #оптимизация #производительность
👍16
Уже давно известно что Gradle модули c Java/Kotlin плагином собираются быстрее чем те что с AGP. Статья от разработчика огромного приложения про ускорение сборки. API и IMPL модули уже сделали, а вот теперь делают чистыми API модули
#архитектура #gradle #оптимизация #agp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🤯6🔥4 1
История(12м) как в Альфа-Банке сокращали размер JSON файла, который передается на устройство для работы SDUI. Решением стала шаблонизация для отказа от одинаковых блоков UI с разными данными
#оптимизация #json
#оптимизация #json
👎19👍8🤯3
Т-Банк активно использовал подход демоприложений для фичей (минимальные приложения для тестирования и быстрой сборки), что привело к 90 app-модулям в Gradle-проекте.
Разработчик из T-Банка рассказал, как они занялись оптимизацией этого подхода и упрощением его поддержки, а именно:
👉 как они ушли от кода интеграции в application-модулях
👉 придумали подход collector + initializer (плагинная архитектура для настройки модулей)
👉 перешли на библиотеку App Startup, избавились от нее и стали использовать стандартный Java ServiceLoader из-за увеличения времени сборки, так как Jetpack-библиотека требует Android-модули и создает много задач
#android #gradle #оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
Eliminating Array Bounds Checks (EN)
Статья как добавление проверки размера массива может сэкономить количество инструкций в ARM 64 коде количество инструкций в разы 🤯
#оптимизация
Статья как добавление проверки размера массива может сэкономить количество инструкций в ARM 64 коде количество инструкций в разы 🤯
#оптимизация
👍17🔥6🤔4❤1
Еще одна рекомендация - используйте минификацию кода через R8/ProGuard чтобы удалить весь код логирования. Ничего лишнего не уйдёт в логи, а также повысите скорость работы
Добавьте в правила следующие инструкции
# Удаляем Log.v()
-assumenosideeffects class android.util.Log {
public static int v(...);
}
# Удаляем Log.d()
-assumenosideeffects class android.util.Log {
public static int d(...);
}
# Удаляем Log.i()
-assumenosideeffects class android.util.Log {
public static int i(...);
}
Подробнее про инструкцию
assumenosideeffects
читайте в документации#android #proguard #r8 #оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54❤3🤔1
В Android можно включить resource shrinking, чтобы убрать из финального APK/Bundlа неиспользуемые ресурсы (строки, drawables, layouts и т.д.)
android {
buildTypes {
release {
shrinkResources true
minifyEnabled true
}
}
}
С недавних пор Google экспериментирует со strict режимом работы шринкера, который делает эту очистку более агрессивной, а именно:
👉 Удаляет все ресурсы, которые не удалось найти в коде или XML.
👉 Не делает допущений, что ресурс “вдруг используется где-то через reflection”. Нету явного использования или keep правила - удаление
👉 Режет всё под корень — даже если вы явно используете getIdentifier() или динамически загружаете ресурсы по имени, он может их не заметить и выкинуть.
📉 Эффект - меньший размер сборки, но есть риск крешей в рантайме, если ресурсы удалены, а были нужны
Как включается strict режим:
# В gradle.properties
android.experimental.enableStrictResourceShrinking=true
🛡 Как сохранить нужные ресурсы от удаления?
Если вы точно знаете, что ресурс используется, но shrinker может его не заметить:
# Правила для R8
-keepresources R.string.some_dynamic_string
-keepresources R.drawable.icon_loaded_by_name
res/raw/
и assets/
shrinker не трогает вообще.tools:keep
и tools:discard
в XML (подробнее тут):<resources xmlns:tools="https://schemas.android.com/tools"
tools:keep="@layout/landing,@drawable/logo"
tools:discard="@drawable/unused_image" />
Рекомендации:
👉 Не включайте strict-режим без хорошего UI-тест-покрытия.
👉 Проверьте, что не используете динамическое получение ресурсов getIdentifier() без крайней необходимости.
👉 Добавляйте
-keepresources
, если есть малейшие сомнения.Подробнее про оптимизацию ресурсов читайте в официальной документации
#android #r8 #оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43❤4🔥4