Android Broadcast
14.2K subscribers
3.53K photos
345 videos
11 files
5.92K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab
加入频道
#R8 #Optimizations

R8 Optimization Part 3: Value Assumption

Jake Wharton не снижает обороты и радует нас новой статьей из серии об оптимизациях R8 с кодом. В последней части раскрывается анализ использования переменных.

Оптимизация которые стоит применять в таких случаях довольно логичны:
👉 удаление неиспользуемых переменных
👉 удаление веток кода в которых условия постоянны

В статье вы найдете подробности того, как такой анализ выполняется новым оптимизатором кода от Google, как можно избавиться от кучи кода из AndroidX если ваш minSdk выше 14 (спойлер R8 имеет возможность задания ограничения на возвращаемые значения методов).
#AppBundle #Optimizations

Google Santa Tracker — Moving to an Android App Bundle

Кто слышал о приложение Google Santa Tracker? Это приложение, который каждый год позволяет миллионам пользователям следить за передвижением Санты, и чтобы сделать его лучше "Корпорация Добра" обновляет его, уже в 2017 году приложение весело 60 Мб 😢 (универсальное APK), что довольно много и является проблемой чтобы быстро насладиться главным функционалом приложения - трекером.

Чтобы решить эту проблем разработчики решили воспользоваться Android App Bundle (AAB). С помощью этого формата поставки приложения можно организовать динамическую загрузку функционала, который пользователь использует редко или вовсе не используется и не загружать ресурсы графики, строки и нативные библиотеки, которые не нужны на устройстве.

В результате проведенных оптимизаций с помощью AAB удалось сократить размер загружаемого APK при начальной установки до 9.21 MB (85% сокращение).

В статье описывается:
👉 Первые шаги с AAB
👉 Dynamic Delivery
👉 Реализация Feature модулей и как это изменило UI/UX
👉 Результаты оптимизации
#Lite #Architecture #Optimizations

Expanding Access: Engineering Uber Lite

История того как в Uber пришли к тому что им надо разрабатывать Lite версию приложения из-за того что множество устройств, на которых используется приложения - это модели 2015 года и более раненого выпуска

Основные принципы которыми руководствовались разработчики:
👉 Компактный размер
👉 Минимизация расхода трафика и запросов на сервер
👉 Высокая отзывчивость UI (< 300 мс при переходе между экранами)
👉 1 DEX

Какие вопросы пришлось решать:
Поиск компактных библиотек
Выбор архитектуры приложения
ProGuard, ReDex и Android App Bundle
Настройка CI для проверок соблюдения ограничений
#R8 #Optimizations #String

R8 Optimization: String Constant Operations

Продолжение серии статей от Jake Wharton о оптимизациях в R8. В новой статье рассказывает о оптимизация строковых констант:
👉 Операции со строками
👉 Встраивание
👉 Оценка эффективности оптимизаций
#JakeWharton #R8 #Optimizations

R8 Optimization: Class Constant Operations

Продолжение серии статей о оптимизация кода, которые реализованы в R8 от Jake Wharton. В новой статье рассказывается о оптимизации констант классов.

Рассмотрим частый пример классов в константах:
private static final String TAG = "MyClass";
// or
private static final String TAG =
MyClass.class.getSimpleName();

Такие константы очень часто используются для логирования. Если рассмотреть после компиляции кода, то MyClass.class.getSimpleName() всегда будет возвращать одно и тоже значение - "MyClass". Фактически в оптимизированном байткоде можно делать подмену выполнения метода на простую строку. Важно понимать что это не работает для случая getClass().getSimpleName(), т.е. когда класс получается динамически.

R8 получила такую оптимизацию кода и теперь неважно как вы будете создать LOG_TAG для ваших логов 🎉

Android Studio 3.4 уже на подходе и R8 становится инструментом по умолчанию для оптимизации кода в ней.
#R8 #Optimizations #JackWharton

R8 Optimization: Method Outlining

Продолжение серии статей от Jake Wharton об оптимизациях, выполняемых R8.

R8 умеет избавляться от констант, коротких методов, или методов, которые вызываются в одном месте, вставкой этого кода в место вызова. Это называется method inlining.

R8 также умеет избавляться от дублирующегося кода выделением его в новый метод и заменой оригинального кода на новый метод 🔥. Это называется method outlining.
👍1
#Optimizations #AndroidGo #Memory #Yandex

Приложение в памяти на практике: наш опыт оптимизации Яндекс.Лончер
Продолжительность: 21:28 + 6:16 (QA)

В докладе рассматриваются следующие вопросы:
👉 Яндекс.Лончер: особенности приложения и почему необходимо его оптимизировать по потреблению памяти. 👉 Особенности работы на Android Go edition
👉 Как измерять расход памяти приложением? Android Studio Profiler, Memory Analyzer (MAT), dumpsys meminfo
👉 Уменьшение потребления памяти приложением: от простых (отказ от Enum-ов) к сложным (lazy inflate и программное создание View)
👉 Мониторинг расхода памяти: Android Lint, тестирование расхода на устройствах/эмуляторах

Также доклад доступен в виде статьи.
👍1
#APK #Optimizations

Сжимаем APK, стараясь сохранить его работоспособность

Размер APK - важный показатель для вашего приложения. Более меньший размер позволяет доставить приложении быстрее, использовать Instant Run. Что стоит сделать чтобы убрать неиспользуемый файлы:
👉 Примените рекомендации от Google
👉 Используйте оптимизаторы/обфускаторы кода - ProGuard/R8
👉 Удаляйте лишние файлы из конечной APK
👉 На используйте библиотеки (зависимости) которые вам не нужны или которые вы используете минимально
👉 Удаляйте зависимости для отладки из релизных сборок. Например, Stetho, LeakCanary и пр.
👉 Удаляйте неиспользуемый ресурсы (Refactor -> Remove unused resources...)
👉 Правильно настраивайте ваш DI
#Gradle #Optimizations

Советы по оптимизации Gradle в Android проектах. Ревизия 2019 года

Советы по следам Google I/O 2019:
👉В многомодульных проектах предпочитайте Java/Kotlin модули вместо Android модулей. Они собираются быстрее и лучше работает инкрементальная сборка
👉Применяйте только необходимые плагины
👉Избегайте непонятных плагинов
👉Мигрируйте на Kotlin 1.3.30 и включайте инкрементальный kapt
👉Запускайте Android Lint только на App модулях
👉Правильно настраивайте зависимости (api и implementation)
👉Описывайте версии зависимостей в одном месте в проекте
👉Используйте папку buildSrc для описания зависимостей
👉Кастомные плагины позволят сократить размер gradle файлов в проекте и ускорить сборку
👉Применяйте последние возможности Gradle API, например Lazy конфигурацию для тасков
👉Используйте Gradle Worker API
👉Создавайте таски кастомных типов
👉Не делайте длительных операций во время фазы конфигурации
👉Измеряйте скорость вашей сборки, чтобы искать узкие места. В этом вам помогут Build Scans, Gradle Profiler, Talaoit
​​#Resources #Optimizations #JakeWharton

Smaller APKs with resource optimization

В Android Gradle плагине 4.2 появится новая возможность.- оптимизация ресурсов. В статье Jake разбирает основы ее работы и результаты ее применения в популярных приложениях