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

Связь с автором @android_broadcast_bot
Реклама @android_broadcast_bot

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#ProGuard #R8

ProGuard and R8: a comparison of optimizers

ProGuard приобрел значительную долю популярности, если не большую, за счет Android разработки. Каково же их разочарование когда Google начала разрабатывать R8 как замену ProGuard и уже в следующем релизе Android Studio 3.4 R8 по умолчанию заменит ProGuard.

В статье вы найдете сравнение ProGuard и R8. Сразу скажу что R8 не срывает оваций т.к. часть оптимизаций, которые уже давно есть в ProGuard еще не реализованы в новой утилите от Google, но она содержит другие и активно наращивает обороты. Также R8 сфокусировано на Android разработке: исправление багов с интерпретаций байткода на различных версиях Android, удаление сервисного кода от Kotlin и прочие.
#ProGuard #Security #HowItWork

Как работает ProGuard от @miproblema

Если вы делаете качественные Android приложение с высоким уровнем безопасности и маленьким размер, то вы наверняка знаете, что такое ProGuard. Много написано о том как настроить эту утилиту, но как она работает? Что происходит для того чтобы оптимизировать ваше приложение и оставить его рабочим? Статья раскрывает как работает ProGuard
#Podcast #Redex #Proguard

Inside Facebook Mobile‏: Android Bytecode Optimisation with Emma

Я уверен что большинство разработчиков знакомы с ProGuard, но слышали ли вы о решение для оптимизации dex файлов от Facebook - Redex? В подкасте обсуждается о необходимости оптимизации байткода и базовых принципах работы Redex.
#ProGuard #Kotlin #Coroutines

-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepclassmembernames class kotlinx.** { volatile <fields>; }
#R8 #Proguard

Важно: R8 на моем проекте в этом релизе AS завелся сразу, но при включение full режима требуется дополнительная настройка. Самый безопасный режим включения R8 сейчас это добавить в gradle.properties вашего проекта следующее:
android.enableR8=true
android.enableR8.fullMode=false

Если вы столкнетесь с проблемами при переходе, то в первую очередь попробуйте перенастроить правила для обфускации и оптимизации кода.
Если это не помогает - откатитесь на Proguard (пока есть возможность) и сообщите о баге.
👍1
#ProGuard #Gson #Java8

Вышел ProGuard 6.1

Пока Google активно разрабатывает R8 и готовиться заменить им #ProGuard в Android, разработчики последнего трудятся над новыми функциями:
👉 Поддержка Java 10, 11 и 12
👉 Бекпорт кода, использующего Java 8 Collection Stream API и Date Time API. Использование этого API автоматически заменяется на библиотеки, потрирующие этот функционал. Особенно актуально для Android проектов
👉 Оптимизация для Gson
👉 Добавлена опция -assumevalues, которая позволяет указать, что метод или поле возвращают определенное значение. Это полезно для #AndroidX библиотек, которые содержат код для старых версий ОС, неподдериживаемые вашим приложением. Укажите Build.VERSION.SDK_INT = minSdk вашего проекта и код удалиться.
👍1
#R8 #ProGuard

Comparison of ProGuard vs. R8: October 2019 edition

Proguard уходит из Android. Уже начиная с Android Gradle Plugin 3.4.0 по умолчанию используется R8. Смогла ли Google сделать продукт лучше? Однозначно сказать нельзя. Что-то лучше в R8, что-то в ProGuard, а что-то ProGuard уже скопировал у R8 😁

Разработчики ProGuard уже проводили сравнение, но решили это сделать повторно т.к. R8 развивается быстро. Новое сравнение предназначено для продвижение, но позволяет понять отдельные детали.
#ProGuard #R8 #Navigation

How to generate Proguard/R8 rules for Navigation component arguments

Navigation Architecture Component не имеет поддержки работы с ProGuard/R8, точнее параметры, которые вы указываете в XML графе не добавляет в исключения типы, которые указываются как аргументы.

Исправляется это добавлением всех этих типов в proguard-rules.pro вашего проекта, но будет правильнее автоматизировать этот процесс, что и приводится в статье.
#R8 #Proguard

How to break your Android App with ProGuard / R8

Такие оптимизаторы кода как ProGuard и R8 весьма полезны. Они помогают сократить не используемый код и ресурсы, произвести оптимизацию и обфускацию байт-кода.

Однако не аккуратно настроенная конфигурация может приводить к неявным ошибкам. Нужно следить как за собственными настройками, так и за настройками в подключаемых библиотеках.

Автор статьи рассказывает, как он встретил одну из таких ошибок у себя в приложении, пытался найти источник ее возникновения и в итоге нашел причину в правиле для оптимизации кода. В статье описано, как так получилось, что методы wait, nofify и nofifyAll класса Object были неявно помечены как не имеющие side-эффектов и были удалены при оптимизации.

Также в статье упомянуто issue, по результатам которого в новых версиях решили вызывать ошибку компиляции при наличии такого правила.
#ProGuard #Kotlin

Full Kotlin Support in ProGuard

В новой версии Proguard (7.0) добавили полную поддержку Kotlin. Например, он умеет обрабатывать метадату Kotlin, которую R8 боится трогать.
#Security #ProGuard #R8

Оптимизация сборок Android приложений: ProGuard, D8, R8. Тайны обфускации

Оптимизация и обфускация кода, который уходит в Production, - очень важный этап поставки клиентских приложений. Это уменьшает размер приложения, ускоряет его работы и обеспечивает дополнительную безопасность.

Статья охватывает все важные аспекты оптимизации сборки:
👉 Зачем использовать эти инструменты
👉 Как работает ProGuard/R8
👉 Оптимизация ресурсов Android приложения
👉 D8/R8

Статья очень толковая, подробно разбирает все аспекты. Рекомендую к прочтению. Автору респект!
#Безопасность #Debug #ProGuard

Debugging Proguard configuration issues

Все те кто использует R8/ProGuard для обфускации и минификации своего кода как минимум раз сталкивались с тем, что приложение в релизе падает.

Автор приводит алгоритм по которому стоит искать ошибку:
1️⃣ Убедитесь что проблема связана именно с минификацией
2️⃣ Убедитесь не связана ли проблема с shrinkResources
3️⃣ Убедитесь не связана ли проблема с обфускацией кода

Автор также демонстрирует пример и как работает его рекомендация на практике
#ProGuard

ProGuard Playground - онлайн песочница для проверки ваших keep правил

ProGuard представила бета версию своей песочницы для проверки ваших keep правил. Утилита сразу подсвечивает какие классы у вас будут сохранены в вашем JAR или APK.

Вы можете интерактивно настроить все что вам необходимо оставить без изменений в release сборке. Также результата можно шарить по ссылке. Например, я сделал пример для приложения Muzei.
#ProGuard

Using ProGuard with the Android Gradle Plugin

В Android Gradle Plugin 7.0.0 будет изменено как ProGuard заинтегрирован в плагин. Если хотите использовать ProGuard вместо R8, тогда это руководство по настройке самой последний и актуальной версии плагина для вас
#proguard

ProGuard Playground достиг Beta

ProGuard Playground позволяет вам проверять эффект вашей конфигурации ProGuard в реальном времени. С выходом в Beta появляются новые фичи
👉 Присваивание название вашему playground
👉 Поддержка Kotlin Metadata
👉 Интеграция с AppSweep, инструментом для проверки безопасности ваших Android приложений
Неофициальная документация по Android R8 с описанием возможностей, опций настройки и сравнение с тем что недоступно по сравнению с ProGuard

#r8 #proguard
👍19🔥6
Android Gradle Plugin 8.X уже по умолчанию использует fullMode R8 - полный набор всех оптимизаций кода, которые более агрессивно изменяют код по сравнению с запуском R8 в режиме совместимости с ProGuard. Например одна из таких оптимизаций - удаление классов со схожим набором свойств и использование первых из них. Подробности тут

Последняя строка кода из картинки выведет Audi: BMW@2351584

#r8 #proguard #оптимизации
🔥329👍3
Разработчик для максимального уменьшения размера Android приложения модифировал R8, чтобы обойти ограничение на использование символов из разных регистров. На небольшом приложение вышел незначительный выигрыш. Подробности в статье

#anroid #proguard #r8
22👎6👍3🤯1
🤖 Прячем код по-настоящему: тёмные уголки обфускации R8 и ProGuard (4м)

🤯 Знаете ли вы, что стандартная настройка ProGuard/R8 сделана для уменьшения размера сборки, а не защите приложения от реверс инжениринга?

Написал статью, где рассказал про то как усилить защиту, если вашему приложению это важно, а также почему даже для стандартной настройки можно сделать защиту сильнее.

🙏 Буду очень благодарен если зайдёте и поддержите голосом мою статью!

#AndroidBroadcast #proguard #r8 #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍488🔥5🤯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
👍543🤔1