#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
#RecyclerView #Sticky
Для всех тех кто реализует секции и sticky header в списках на основе RecyclerView появился новый игрок среди библиотек - StickyDecorator.
Библиотека легковесна и некоторые из декораций делает на основе
Для всех тех кто реализует секции и sticky header в списках на основе RecyclerView появился новый игрок среди библиотек - StickyDecorator.
Библиотека легковесна и некоторые из декораций делает на основе
Drawable
, что позволяет достичь более высокой скорости работы по сравнению с View
.GitHub
GitHub - OsomePteLtd/StickyDecorator: Lightweight library for sticky header and simple sectioning in RecyclerView
Lightweight library for sticky header and simple sectioning in RecyclerView - OsomePteLtd/StickyDecorator
#AndroidStudio
Android Studio Design Tools UX Changes — Split View
До релиза Android Studio 3.6 осталось не так много времени.Одним из заметных нововведений для всех тех кто работает с UI станет изменение отображения
В статье рассказывается о преимуществах этого обновления (на мой взгляд очень спорных).
Android Studio Design Tools UX Changes — Split View
До релиза Android Studio 3.6 осталось не так много времени.Одним из заметных нововведений для всех тех кто работает с UI станет изменение отображения
Design Tool
. Новый режим, который назван Design Tools Split View
, заменивший старый Layout Preview, теперь позволяет на одном экране совмещать редактор UI в XML и визуальный редактор.В статье рассказывается о преимуществах этого обновления (на мой взгляд очень спорных).
Medium
Android Studio Design Tools UX changes — split view
In this article, we would like to introduce the new behavior of the Design Editor in Android Studio 3.6, dive into some of the details of…
Рады ли вы обнволению Design Tools?
Anonymous Poll
12%
Раньше было лучше (Layout Preview)
43%
Рад 😁
31%
Не использую Android Studio 3.6
2%
Не пишу UI
12%
Другой вариант
#MemoryLeak
Вышел Leak Canary 2.0
Вышла новая мажорная версия популярного инструмента для отслеживания утечек памяти во время работы приложения. В новой версии произошла уйма изменений:
👉 Библиотека полностью переписана на Kotlin
👉 Улучшен механизм сборки дампов памяти, что будет меньше блокировать работу с приложением
👉 Новый UI для просмотра информации о утечках памяти
👉 Новая библиотека LeakSentry, которая позволяет определить когда происходит утечка и вызывает LeakCanary для сбора информации. Это поможет понять какие объекты приводят к
👉 Новый парсер heap, который работает эффективнее и быстрее
👉 Упрощена настройка библиотеки - 0 строк кода для включения, только добавление зависимости
👉 Новая утилита Heap Explorer, которая позволяет делать анализ heap в LeakCanary прямо на устройства
👉 Из коробки поддерживает отслеживание за утечками
👉 Новая библиотека Shark, которая используется
В обновление произошли значительные изменения API, поэтому если вы активно его использовали (а не просто подключали библиотеку), то вам надо будет выполнить миграцию. Больше информации на официальном сайте.
Вышел Leak Canary 2.0
Вышла новая мажорная версия популярного инструмента для отслеживания утечек памяти во время работы приложения. В новой версии произошла уйма изменений:
👉 Библиотека полностью переписана на Kotlin
👉 Улучшен механизм сборки дампов памяти, что будет меньше блокировать работу с приложением
👉 Новый UI для просмотра информации о утечках памяти
👉 Новая библиотека LeakSentry, которая позволяет определить когда происходит утечка и вызывает LeakCanary для сбора информации. Это поможет понять какие объекты приводят к
OutOfMemoryError
👉 Новый парсер heap, который работает эффективнее и быстрее
👉 Упрощена настройка библиотеки - 0 строк кода для включения, только добавление зависимости
👉 Новая утилита Heap Explorer, которая позволяет делать анализ heap в LeakCanary прямо на устройства
👉 Из коробки поддерживает отслеживание за утечками
Fragment
👉 Новая библиотека Shark, которая используется
LeakCanary
для анализа и может запускать в любой Java VM. Также доступен CLI, который вы можете использовать с компьютера для сбора информации о расходе памяти с устройстваВ обновление произошли значительные изменения API, поэтому если вы активно его использовали (а не просто подключали библиотеку), то вам надо будет выполнить миграцию. Больше информации на официальном сайте.
square.github.io
Change Log - LeakCanary
A memory leak detection library for Android
#Java #Java14
Пробуем улучшенный оператор instanceof в Java 14
Пока Android разработчики сконцентрировались на Kotlin (да и Google не собирается никого разворачивать от этого пути), разработчик Java нагоняют по наличию фичей современные языки-хипстеров. В Java 14 нас ждет аналог Smart Cast из Kotlin - Pattern Matching.
Пробуем улучшенный оператор instanceof в Java 14
Пока Android разработчики сконцентрировались на Kotlin (да и Google не собирается никого разворачивать от этого пути), разработчик Java нагоняют по наличию фичей современные языки-хипстеров. В Java 14 нас ждет аналог Smart Cast из Kotlin - Pattern Matching.
Хабр
Пробуем улучшенный оператор instanceof в Java 14
Не за горами новая, 14-я версия Java, а значит самое время посмотреть, какие новые синтаксические возможности будет содержать эта версия Java. Одной из таких син...
#Conference #Quiz
Организаторы крупнейшей мобильной конференции Mobius проводят опрос с целью улучшения контента и формата проведения конференции. У вас есть шанс выиграть призы за прохождение опроса!
Купить билет на декабрьский Mobius в Москве со скидкой по промокоду mobius19mskAndroidBpc
Организаторы крупнейшей мобильной конференции Mobius проводят опрос с целью улучшения контента и формата проведения конференции. У вас есть шанс выиграть призы за прохождение опроса!
Купить билет на декабрьский Mobius в Москве со скидкой по промокоду mobius19mskAndroidBpc
#IDEA
IntelliJ IDEA 2019.3: Better Performance and Quality
Разработчики из JetBrains дали свой ответ Project Marble из Android Studio 3.5 и выпустили релиз своей IDE, направленный на улучшение производительности и фиксу багов. Улучшены различные аспекты: индексация проектов, анализ кода, скорость запуска IDE, улучшение работы многих функций IDE и др.
К сожалению, даже будущая Android Studio 4.0 базируется на IDEA 2019.2, поэтому высока вероятность что все эту стабильность мы сможем почувствовать только в Android Studio 4.1. Главное, чтобы код Google не сломал там все!
IntelliJ IDEA 2019.3: Better Performance and Quality
Разработчики из JetBrains дали свой ответ Project Marble из Android Studio 3.5 и выпустили релиз своей IDE, направленный на улучшение производительности и фиксу багов. Улучшены различные аспекты: индексация проектов, анализ кода, скорость запуска IDE, улучшение работы многих функций IDE и др.
К сожалению, даже будущая Android Studio 4.0 базируется на IDEA 2019.2, поэтому высока вероятность что все эту стабильность мы сможем почувствовать только в Android Studio 4.1. Главное, чтобы код Google не сломал там все!
#Intro
What to consider when starting a new app development
На что стоит обратить внимание когда стартуете разработку нового Android приложения? Конечно же архитектуре, но также важно не забывать про особенности платформы и ее возможности. Автор статьи предлагает уделить внимание:
👉 Работа с местоположением
👉 Push уведомления
👉 Сбор аналитики
👉 Сбор информации о трекинга
👉 Авторизация
👉 Стиль приложения (Тема)
👉 Фоновые сервисы
👉 Локализация (не только переводы но и адаптация под другие регионы)
👉 Возможность работы с приложением без сети
👉 Анимации
What to consider when starting a new app development
На что стоит обратить внимание когда стартуете разработку нового Android приложения? Конечно же архитектуре, но также важно не забывать про особенности платформы и ее возможности. Автор статьи предлагает уделить внимание:
👉 Работа с местоположением
👉 Push уведомления
👉 Сбор аналитики
👉 Сбор информации о трекинга
👉 Авторизация
👉 Стиль приложения (Тема)
👉 Фоновые сервисы
👉 Локализация (не только переводы но и адаптация под другие регионы)
👉 Возможность работы с приложением без сети
👉 Анимации
Medium
What to consider when starting a new app development
What to consider when starting a new app development
#Firebase #CloudMessaging #PushNotification
Особенности работы с Firebase Cloud Messaging
В каждом современном приложении есть Push уведомления, но так как встраивать их приходится нечасто, то каждый раз как в первый раз! 🤷♀️
Чтобы не ходить по одним и тем же граблям, разработчики Redmadrobot собрали вместе все найденные неявности и рассказали на митапе Redmadrobot. 🤖
Главное, что надо запомнить:
‼️ если вы в настройках вызвали Force Stop, то ваше приложение совсем перестанет получать пуши до следующего запуска!
‼️ если в данных пуша нет поля
‼️ если в данных есть поле
Вывод: лучше не используйте поле
Особенности работы с Firebase Cloud Messaging
В каждом современном приложении есть Push уведомления, но так как встраивать их приходится нечасто, то каждый раз как в первый раз! 🤷♀️
Чтобы не ходить по одним и тем же граблям, разработчики Redmadrobot собрали вместе все найденные неявности и рассказали на митапе Redmadrobot. 🤖
Главное, что надо запомнить:
‼️ если вы в настройках вызвали Force Stop, то ваше приложение совсем перестанет получать пуши до следующего запуска!
‼️ если в данных пуша нет поля
notification
, но есть поле data, то система ОБЯЗАТЕЛЬНО вызовет ваш сервис обработки пуша‼️ если в данных есть поле
notification
, то система покажет уведомление сама ТОЛЬКО если приложение не на экране у пользователя (например, свернуто)Вывод: лучше не используйте поле
notification
!YouTube
Push Notifications
В каждом современном приложении есть Push уведомления, но так как встраивать их приходится нечасто, то каждый раз как в первый раз! 🤷♀️
Чтобы не ходить по одним и тем же граблям, Руслан собрал вместе все найденные неявности и рассказал на нашем митапе. 🤖…
Чтобы не ходить по одним и тем же граблям, Руслан собрал вместе все найденные неявности и рассказал на нашем митапе. 🤖…
#DynamicFeature #GooglePlay
Exploring Dynamic Feature Modules at Swiggy
Google Play предоставляет хорошую возможность для ваших приложения - Dynamic Delivery. Эта функция, которая позволяет вам загрузить модуль вашего приложения, отложено. Когда это может быть полезно? Например в вашем приложение есть объемная по размеру функция, но пользуется ей небольшое количество пользователей или она специфична для определенных регионов.
Как сделать динамическую загрузку? Ваше приложение должно быть модулизировано (на основе Gradle модулей/проектов). дальше дело техники, которое описывается в статье
Exploring Dynamic Feature Modules at Swiggy
Google Play предоставляет хорошую возможность для ваших приложения - Dynamic Delivery. Эта функция, которая позволяет вам загрузить модуль вашего приложения, отложено. Когда это может быть полезно? Например в вашем приложение есть объемная по размеру функция, но пользуется ей небольшое количество пользователей или она специфична для определенных регионов.
Как сделать динамическую загрузку? Ваше приложение должно быть модулизировано (на основе Gradle модулей/проектов). дальше дело техники, которое описывается в статье
Medium
Exploring Dynamic Feature Modules at Swiggy
Implementation details of Android’s Dynamic Feature Modules
#Kotlin #BestPractices
Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.
Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.
Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
Medium
Effective Kotlin printed version
Lately, the most common question people ask me is not “How are you doing?” but instead, “When Effective Kotlin will be available in…
#Architecture #BestPractices
How to start writing reusable components for Android apps?
Для чего нужно переиспользовать код? Как минимум это уменьшение затрат на разработку других проектов и отсутствие расхождения в работе в разных проектах.
Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
How to start writing reusable components for Android apps?
Для чего нужно переиспользовать код? Как минимум это уменьшение затрат на разработку других проектов и отсутствие расхождения в работе в разных проектах.
Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные
View
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
Medium
How to start writing reusable components for Android apps?
A journey researching custom views on Android platform
#DependencyInjection #Dagger #AssistedInject #Square
Brave New Android World with AssistedInject
Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в
Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
Brave New Android World with AssistedInject
Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в
Presenter
. Раньше это решалось те, что создавался новый Dagger компонента, куда этот параметр передается.Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
Medium
Brave New Android World with AssistedInject
Assisted Inject is interesting feature of dependency injection, but looks very weird at a first grasp. Let me explain when it could be…
#Jetpack #AndroidX #ktx
Знаете ли вы все расширения для Kotlin из *-ktx библиотек? Где найти по ним документацию? Это можно сделать на сайте developers.android.com, если переключиться на формат документации в Kotlin.
Есть ли способ проще? Теперь да - полный список KTX расширений на официальном сайте. Рекомендую пройтись по списку, чтобы сделать ваш Kotlin код лучше и чище.
Знаете ли вы все расширения для Kotlin из *-ktx библиотек? Где найти по ним документацию? Это можно сделать на сайте developers.android.com, если переключиться на формат документации в Kotlin.
Есть ли способ проще? Теперь да - полный список KTX расширений на официальном сайте. Рекомендую пройтись по списку, чтобы сделать ваш Kotlin код лучше и чище.
Android Developers
List of KTX extensions | Android Developers
#ColorUtils
Contrasting text and icons over background
При реализации Material Design легко стоклнуться с тем что иконки, могут располагаться поверх других картинок. В этом случае вы сталкиваетесь с проблемой, что в зависимости от фона приходится менять картинку, или делать какой-то эффект чтобы на любой картинки ваше иконки не терялись.
Добиться это можно если перекрашивать иконки с зависимости от картинок. Как это сделать? Нужно рассчитывать яркость и динамически менять иконку. Рецепт в статье
Contrasting text and icons over background
При реализации Material Design легко стоклнуться с тем что иконки, могут располагаться поверх других картинок. В этом случае вы сталкиваетесь с проблемой, что в зависимости от фона приходится менять картинку, или делать какой-то эффект чтобы на любой картинки ваше иконки не терялись.
Добиться это можно если перекрашивать иконки с зависимости от картинок. Как это сделать? Нужно рассчитывать яркость и динамически менять иконку. Рецепт в статье
👨💻 Jorge Castillo
Contrasting text and icons over background
Detecting whether background is dark or light to pick the right foreground color for better contrast. Quite often we’ve needed to display icons or texts on top of colored backgrounds or images and we’ve fallen into contrasting problems. Let’s say we have…
#Coroutines
Suspending over Views
Kotlin Coroutines позволяют интегрировать их подход с любым принципом, основанным на Callback-ах. Где в Android можно найти много callback-ов? Это система View в Android. В статье рассказывается как это сделать и каким образом этом может быть эффективно применить.
Suspending over Views
Kotlin Coroutines позволяют интегрировать их подход с любым принципом, основанным на Callback-ах. Где в Android можно найти много callback-ов? Это система View в Android. В статье рассказывается как это сделать и каким образом этом может быть эффективно применить.
Medium
Suspending over Views
How coroutines can make UI programming easier
#DSL #Anko #Kotlin
Кладбище проектов пополнилось еще одним решением - Anko. Авторы написали прощальный MD, в котором объясняют причины закрытия проекта из-за сложностей развития отдельного функционала и появление хорошего аналога от Google в виде
Кладбище проектов пополнилось еще одним решением - Anko. Авторы написали прощальный MD, в котором объясняют причины закрытия проекта из-за сложностей развития отдельного функционала и появление хорошего аналога от Google в виде
*-ktx
. Создатели библиотеки предлагают мигрировать на другие решения, одним из которых является Jetpack Compose.GitHub
GitHub - Kotlin/anko: Pleasant Android application development
Pleasant Android application development. Contribute to Kotlin/anko development by creating an account on GitHub.
#CodeQuality #Kotlin
Вышел KtLint 0.36.0 в рамках которой вы найдете:
👉 новую возможность создания HTML отчетов
👉 Новые правила и улучшение старых
👉 Багфикс
Вышел KtLint 0.36.0 в рамках которой вы найдете:
👉 новую возможность создания HTML отчетов
👉 Новые правила и улучшение старых
👉 Багфикс
GitHub
Release 0.36.0 · pinterest/ktlint
Added
HTML reporter (#641)
Experimental rule to lint enum entry names (#638)
@Suppress("RemoveCurlyBracesFromTemplate") now respected (#263)
Upgraded
Gradle version to 5.6.2 (#616)
Kot...
HTML reporter (#641)
Experimental rule to lint enum entry names (#638)
@Suppress("RemoveCurlyBracesFromTemplate") now respected (#263)
Upgraded
Gradle version to 5.6.2 (#616)
Kot...
#DeepLink
От веба до приложения за один DeepLink
Deep Link - это популярная функция любого приложения. Она позволяет связывать между собой ссылку на страничку и окном в установленном приложении. Что делать если приложение не установлено? Открыть страницу в браузере? Предложить установить приложение? Также помимо Deep Link в Android есть еще и App Link.
Как все это связать между собой? Как решить проблемы с редиректом в разных браузеров на разных платформах. В статье рассматриваются решения OneLink и Firebase Dynamic Link: принципы работы, трудности с которыми столкнулся автор, особенности работы с Chrome Custom Tab.
От веба до приложения за один DeepLink
Deep Link - это популярная функция любого приложения. Она позволяет связывать между собой ссылку на страничку и окном в установленном приложении. Что делать если приложение не установлено? Открыть страницу в браузере? Предложить установить приложение? Также помимо Deep Link в Android есть еще и App Link.
Как все это связать между собой? Как решить проблемы с редиректом в разных браузеров на разных платформах. В статье рассматриваются решения OneLink и Firebase Dynamic Link: принципы работы, трудности с которыми столкнулся автор, особенности работы с Chrome Custom Tab.
Firebase Dynamic Link
оказалось лучшим решением так как его работа базируется на Google Play Services, что позволяет эффективнее обрабатывать случаи когда приложение не установлено.Хабр
От веба до приложения за один DeepLink
Android-приложения являются отражением сайта или сервиса и зачастую представляют собой сходный функционал в удобной оболочке. Из-за этого становится насущным в...