#R8 #Optimization #Kotlin
"R8 Optimization: Staticization" by Jake Wharton|Google
Новая часть статей о компиляции Java кода в Android. В новой статье рассматривается R8 - замена ProGuard от Google. R8 - это не отдельная утилита, а расширение D8, либо более простая формула R8 = D8 + оптимизации.
В статье рассматривается первая оптимизация, которую выполняет R8 - конвертация обычных методов в статические. Вы можете узнать о том, как это выполняется для Companion Object классов в Kotlin.
"R8 Optimization: Staticization" by Jake Wharton|Google
Новая часть статей о компиляции Java кода в Android. В новой статье рассматривается R8 - замена ProGuard от Google. R8 - это не отдельная утилита, а расширение D8, либо более простая формула R8 = D8 + оптимизации.
В статье рассматривается первая оптимизация, которую выполняет R8 - конвертация обычных методов в статические. Вы можете узнать о том, как это выполняется для Companion Object классов в Kotlin.
Jake Wharton
R8 Optimization: Staticization – Jake Wharton
#R8 #Optimization #Kotlin
"R8 Optimization: Null Data Flow Analysis" by Jake Warton|Google
Продолжение статей о том какие оптимизации выполняются в R8. В новой статье вы узнаете о том как оптимизируется работа с null.
"R8 Optimization: Null Data Flow Analysis" by Jake Warton|Google
Продолжение статей о том какие оптимизации выполняются в R8. В новой статье вы узнаете о том как оптимизируется работа с null.
Jake Wharton
R8 Optimization: Null Data Flow Analysis (Part 1) – Jake Wharton
#R8 #Optimization #Kotlin
R8 Optimization: Null Data Flow Analysis (Part 2)
R8 Optimization: Null Data Flow Analysis (Part 1)
Продолжение серии статей от Jake Wharton про оптимизации, которые выполняет R8 в Kotlin коде. В статье рассматривает о том как R8 избавляется от сервисного кода по проверки Java объектов на null.
R8 Optimization: Null Data Flow Analysis (Part 2)
R8 Optimization: Null Data Flow Analysis (Part 1)
Продолжение серии статей от Jake Wharton про оптимизации, которые выполняет R8 в Kotlin коде. В статье рассматривает о том как R8 избавляется от сервисного кода по проверки Java объектов на null.
Jake Wharton
R8 Optimization: Null Data Flow Analysis (Part 2) – Jake Wharton
#GooglePlay #AppBundle #Optimization
16 reasons to publish your apps and games with the Android App Bundle
Еще не начали публиковать свои приложения с помощью Android App Bundle в Google Play? Тогда изучите 16 причин почему это стоит сделать уже сегодня!
16 reasons to publish your apps and games with the Android App Bundle
Еще не начали публиковать свои приложения с помощью Android App Bundle в Google Play? Тогда изучите 16 причин почему это стоит сделать уже сегодня!
Medium
16 reasons to publish your apps and games with the Android App Bundle
Why you should switch to Android’s official publishing format
#Kotlin #Optimization
Kotlin: cleaning Java bytecode before release
Многие говорят о том, что Kotlin генерирует много дополнительного Java байткода и результат не оптимальный. Это незначительно влияет на производительность и объем кода. Это не мешает Java сторонникам на этом факте говорить, что их язык лучше.
В статье разбирается как можно избавиться от дополнительно генерированного Java байткода Kotlin компилятором и не платить цену за удобные фичи языка от JetBrains.
Kotlin: cleaning Java bytecode before release
Многие говорят о том, что Kotlin генерирует много дополнительного Java байткода и результат не оптимальный. Это незначительно влияет на производительность и объем кода. Это не мешает Java сторонникам на этом факте говорить, что их язык лучше.
В статье разбирается как можно избавиться от дополнительно генерированного Java байткода Kotlin компилятором и не платить цену за удобные фичи языка от JetBrains.
Medium
Kotlin: cleaning Java bytecode before release
What’s is price of Kotlin null safety and how to remove additional bytecode
#R8 #Optimization #jakeWharton
R8 Optimization: Class Reflection and Forced Inlining
В новой серии статей Jake Wharton рассказывает о том как R8 умеет оптимизировать некоторые вызовы рефлексии и принудительный inline методов с помощью
Бойся ProGuard - R8 все качает мышцы и наращивает фичи
R8 Optimization: Class Reflection and Forced Inlining
В новой серии статей Jake Wharton рассказывает о том как R8 умеет оптимизировать некоторые вызовы рефлексии и принудительный inline методов с помощью
-alwaysinline
.Бойся ProGuard - R8 все качает мышцы и наращивает фичи
Jake Wharton
R8 Optimization: Class Reflection and Forced Inlining – Jake Wharton
#R8 #JakeWharton #Optimization
R8 Optimization: Enum Ordinals and Names
Продолжение серии статей об оптимизациях, который выполняют R8. В этот раз разбираются Enum:
👉 inline вызовов функции ordinal()
👉 замена вызова функции name() на соответствующую строковую константу
R8 Optimization: Enum Ordinals and Names
Продолжение серии статей об оптимизациях, который выполняют R8. В этот раз разбираются Enum:
👉 inline вызовов функции ordinal()
👉 замена вызова функции name() на соответствующую строковую константу
#Obfuscation #Resources #Optimization
AabResGuard - A tool used to obfuscate aab resources
Чтоба защитить свой код от злоумышленников и оптимизировать его исполнение в Android разработке применяют
Энтузиасты решили исправить это и сделать тулзу, которая сможет выполнять с ресурсами:
🔥 Убрать дублирующиеся значения
🔥 Удалять ненужные файлы из папок
🔥 Обфусцировать названия ресурсов
🔥 Удалять заданные строки из конечной билда
Проект пока находится в стадии разработке, но я с нетерпением жду стабильного релиза!
AabResGuard - A tool used to obfuscate aab resources
Чтоба защитить свой код от злоумышленников и оптимизировать его исполнение в Android разработке применяют
R8
/ProGuard
. Но эти утилиты оптимизируют только Java byte code. А что с остальными файлами в AAB/APK? Ответ - ничего. Google не предоставляет каких либо инструментов для оптимизации ресурсов.Энтузиасты решили исправить это и сделать тулзу, которая сможет выполнять с ресурсами:
🔥 Убрать дублирующиеся значения
🔥 Удалять ненужные файлы из папок
META-INFO/
и lib/
🔥 Обфусцировать названия ресурсов
🔥 Удалять заданные строки из конечной билда
Проект пока находится в стадии разработке, но я с нетерпением жду стабильного релиза!
GitHub
GitHub - bytedance/AabResGuard: The tool of obfuscated aab resources.(Android app bundle资源混淆工具)
The tool of obfuscated aab resources.(Android app bundle资源混淆工具) - bytedance/AabResGuard
#Optimization
App size reduction at Microsoft SwiftKey
История того как в Microsoft оптимизировали размер SwiftKey на Android.
В статье разбирают:
👉 Зачем оптимизировать размер APK
👉 Оптимизация кода
👉 Оптимизация ресурсов
👉 Оптимизация нативного кода
App size reduction at Microsoft SwiftKey
История того как в Microsoft оптимизировали размер SwiftKey на Android.
В статье разбирают:
👉 Зачем оптимизировать размер APK
👉 Оптимизация кода
👉 Оптимизация ресурсов
👉 Оптимизация нативного кода
Medium
App size reduction at Microsoft SwiftKey
Our journey of making our Android app smaller, from when we started analysing our app to the changes we made and the improvements we got.
#OkHttp #Networking #Optimization
Maximizing OkHttp connection reuse
Разработчики из Booking закопались в оптимизации OkHttp чтобы получить больше скорости для своих сетевых запросов. Узкое место было найдено в том, что переиспользование socket соединений не работает так эффективно, как хотелось бы разработчикам библиотеки.
К сожалению, библиотека OKHttp не содержит callback, который бы позволил бы перехватить управление созданием RealConnection, не вам стоит обратить на рекомендацию от создателей:
Maximizing OkHttp connection reuse
Разработчики из Booking закопались в оптимизации OkHttp чтобы получить больше скорости для своих сетевых запросов. Узкое место было найдено в том, что переиспользование socket соединений не работает так эффективно, как хотелось бы разработчикам библиотеки.
К сожалению, библиотека OKHttp не содержит callback, который бы позволил бы перехватить управление созданием RealConnection, не вам стоит обратить на рекомендацию от создателей:
Security.insertProviderAt(Conscrypt.newProvider(), 1);
Medium
Maximizing OkHttp connection reuse
debugging a 3rd party library
#optimization #performance
Improving App Startup: Lessons from the Facebook App
История оптимизации времени запуска Android приложения Facebook. Кода и конкретных советов не приводится, но рассказывается про том как замеряли время запуска по метрикам Time-To-Initial-Display (отписывался фон) и Time-To-Full-Display (полная отрисовка). Статья содержит советы как делать и откуда начинать, а также на что обратить внимание во время оптимизации
Improving App Startup: Lessons from the Facebook App
История оптимизации времени запуска Android приложения Facebook. Кода и конкретных советов не приводится, но рассказывается про том как замеряли время запуска по метрикам Time-To-Initial-Display (отписывался фон) и Time-To-Full-Display (полная отрисовка). Статья содержит советы как делать и откуда начинать, а также на что обратить внимание во время оптимизации
#optimization
Reducing Android app size in practice at LinkedIn (7 мин)
LinkedIn делится своим практиками для снижения размера приложения: App Bundle, Dynamic Delivery, использование R8 и Resource Shrinking и др. Ничего нового для себя не узнал, но вот если мы не занимались вопросом оптимизации - рекомендую почитать
Reducing Android app size in practice at LinkedIn (7 мин)
LinkedIn делится своим практиками для снижения размера приложения: App Bundle, Dynamic Delivery, использование R8 и Resource Shrinking и др. Ничего нового для себя не узнал, но вот если мы не занимались вопросом оптимизации - рекомендую почитать
#compose #optimization
Jetpack Compose — Optimize list performance with Key (4 мин)
Статья об оптимизации построения вертикальных списков на основе Column
Jetpack Compose — Optimize list performance with Key (4 мин)
Статья об оптимизации построения вертикальных списков на основе Column
#gradle #optimization
New year, faster builds (6 мин)
Набор рекомендаций как ускорить сборку вашего приложения. Ничего экстраординарного тут не найти, но вот тем кто вообще никак не задумывался об оптимизациях будет полезно изучить:
👉 Проверяйте настройку с помощью Gradle Doctor
👉 Следите за зависимостями
👉 Делайте анализ сборок, чтобы знать про проблемные места
New year, faster builds (6 мин)
Набор рекомендаций как ускорить сборку вашего приложения. Ничего экстраординарного тут не найти, но вот тем кто вообще никак не задумывался об оптимизациях будет полезно изучить:
👉 Проверяйте настройку с помощью Gradle Doctor
👉 Следите за зависимостями
👉 Делайте анализ сборок, чтобы знать про проблемные места
👎15👍10
Если вы не занимались оптимизаций размера приложения и хотите этим заняться - почитайте статью (12 мин). Хороший старт чтобы понять как изучить составные части и как найти места сокращения веса APK/AppBundle
#optimization
#optimization
😐23👍19🤔1