Forwarded from Android Good Reads (Egor Tolstoy)
Open-Obfuscator – новый обфускатор мобильных приложений
- Автор проекта увлекался поиском уязвимостей в существующих обфускаторах, но ему не были рады. Поэтому он решил написать свой, с упором на открытость к разработчикам и рисерчерам. Даже для первого релиза большую часть времени разработки автор вложил в понятную документацию.
- Open-Obfuscator поддерживает обфускацию нативного кода с помощью специального LLVM плагина, и обфускацию Kotlin/Java кода поверх ядра Proguard.
- Нативный обфускатор называется O-MVLL, обфускатор для Kotlin – dProtect.
- Автор проекта увлекался поиском уязвимостей в существующих обфускаторах, но ему не были рады. Поэтому он решил написать свой, с упором на открытость к разработчикам и рисерчерам. Даже для первого релиза большую часть времени разработки автор вложил в понятную документацию.
- Open-Obfuscator поддерживает обфускацию нативного кода с помощью специального LLVM плагина, и обфускацию Kotlin/Java кода поверх ядра Proguard.
- Нативный обфускатор называется O-MVLL, обфускатор для Kotlin – dProtect.
🔥4
Forwarded from Локалхост (Никита Куликов) (Nikita Kulikov)
Как неявная кодогенерация съела несколько часов в моей жизни
Сегодня во время разработки приложения я получаю очень странное падение приложения. Согласно ему мы крашимся во время чтения обычной строки. Место это происходит в многопоточном коде и мне пришлось потратить много времени чтобы высказать предположения а почему так может быть.
Спустя множество потраченных часов просмотра логов и кода я поменял стратегию - решил посмотреть генерируемый код. Для этого я взял собранное приложение и декомпилировал его с помощью JADX. И там я увидел что вместо моей красивой строки следующее:
В этот момент я стал что-то подозревать, так как в продакшене таких ошибок ни у кого не было.
Оказалось все это время у меня крашился внутренний механизм LiveLiterals. AndroidStudio самостоятельно подменяет все константы в коде на LiveLiterals. Это сделано чтобы можно было менять константы в коде без пересборки приложения. Удивительно сколько всего себе позволяет текстовый редактор
Сегодня во время разработки приложения я получаю очень странное падение приложения. Согласно ему мы крашимся во время чтения обычной строки. Место это происходит в многопоточном коде и мне пришлось потратить много времени чтобы высказать предположения а почему так может быть.
Спустя множество потраченных часов просмотра логов и кода я поменял стратегию - решил посмотреть генерируемый код. Для этого я взял собранное приложение и декомпилировал его с помощью JADX. И там я увидел что вместо моей красивой строки следующее:
LiveLiterals$FirmwareVersionBuilderApiImplKt.INSTANCE.m9856xc5cc7c0e(). Сама строка в коде выглядит так: " ".В этот момент я стал что-то подозревать, так как в продакшене таких ошибок ни у кого не было.
Оказалось все это время у меня крашился внутренний механизм LiveLiterals. AndroidStudio самостоятельно подменяет все константы в коде на LiveLiterals. Это сделано чтобы можно было менять константы в коде без пересборки приложения. Удивительно сколько всего себе позволяет текстовый редактор
🤯5🤔3
Forwarded from Android Broadcast (Кирилл Розов)
198839537-2794bac0-8075-470b-9c4d-aea9bc9d719c-Up to 4K.mov
24.4 MB
compose-animation-playground - репо с подборкой реализации разных анимаций на Jetpack Compose
#aniamtion #compose
#aniamtion #compose
👍2
Forwarded from Mobile Developer (Алексей Гладков)
Как Котлин собирается сделать вам хорошо в 2023
https://blog.jetbrains.com/kotlin/2022/11/how-kotlin-is-going-to-fix-your-pains-in-2023/?utm_source=dailykotlin_tl
Вышла статья, где ребята из Jetbrains расписали какие проблемы они выявили с Котлином путем опроса сообщества и как они их собираются исправлять
Приятного чтения!
https://blog.jetbrains.com/kotlin/2022/11/how-kotlin-is-going-to-fix-your-pains-in-2023/?utm_source=dailykotlin_tl
Вышла статья, где ребята из Jetbrains расписали какие проблемы они выявили с Котлином путем опроса сообщества и как они их собираются исправлять
Приятного чтения!
The JetBrains Blog
How Kotlin Is Going To Fix Your Pains in 2023 | The Kotlin Blog
This year, we ran the first Kotlin Developer Survey. We designed the survey to help us identify and prioritize the pain points that most significantly affect Kotlin users' satisfaction. The collected
👍3
Forwarded from Android Guards
Давайте поговорим про исследование приложений на ReactNative? Чтобы задать тон дискуссии я написал небольшую заметку о моих подходах к вопросу и буду рад послушать про ваш опыт. Как положительный так и отрицательный.
(не)Уникальный опыт
Непокорный ReactNative
По моему скромному мнению - ReactNative уже прошел свой пик популярности в разработке мобильных приложений и дальше будет постепенно покидать эту область. Зачем он нужен, если есть божественный …
👍4
Forwarded from Android Good Reads (Egor Tolstoy)
Multiplatform Paging
- Логика пагинации – идеальный кандидат для того, чтобы шарить между платформами.
- CashApp выпустили библиотеку Multiplatform Paging, полный аналог библиотеки из AndroidX, но с поддержкой мультиплатформы.
- Логика пагинации – идеальный кандидат для того, чтобы шарить между платформами.
- CashApp выпустили библиотеку Multiplatform Paging, полный аналог библиотеки из AndroidX, но с поддержкой мультиплатформы.
Cash App Code Blog
Announcing Multiplatform Paging
Multiplatform Paging is a library that packages AndroidX Paging for Kotlin/Multiplatform. It’s built to be a drop-in-replacement for AndroidX Paging, so extracting out shared pagination logic couldn’t be easier.
👍3🔥1
Forwarded from Android Good Reads (Egor Tolstoy)
Гайд по разработке библиотек
Большой набор рекомендаций по всем фазам жизненного цикла библиотеки: дизайну, разработке, релизу и поддержке. Вот некоторые из них:
👀 Используйте режим Explicit API для того, чтобы контролировать видимость ваших функций пользователям библиотеки.
✅ Binary Compatibility Validator позволяет следить за обратной совместимостью.
🌠 Настройте работу с ресурсами, добавив им префиксы с именем библиотеки и отключив транзитивность для R class.
Большой набор рекомендаций по всем фазам жизненного цикла библиотеки: дизайну, разработке, релизу и поддержке. Вот некоторые из них:
👀 Используйте режим Explicit API для того, чтобы контролировать видимость ваших функций пользователям библиотеки.
✅ Binary Compatibility Validator позволяет следить за обратной совместимостью.
🌠 Настройте работу с ресурсами, добавив им префиксы с именем библиотеки и отключив транзитивность для R class.
👍4
Forwarded from Android Broadcast (Кирилл Розов)
Combo Breaker - библиотека для Compose, которая позволяет огибать текстом элементы UI. например, сделать текст колонками как в газете/журнале.
#compose
#compose
👍4
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Kotlin Coroutines use cases for Data/Adapters Layer
Использование корутин в Data слое: адаптеры для callback подходов, библиотеки с поддержкой из коробки и блокирующие функции. Ну и как же без Flow
#ocorutines
Использование корутин в Data слое: адаптеры для callback подходов, библиотеки с поддержкой из коробки и блокирующие функции. Ну и как же без Flow
#ocorutines
👍4🤔1
Forwarded from Mobile Compose (Jetpack Compose Bot)
#Article #Medium #Animations
Making Jellyfish move in Compose: Animating ImageVectors and applying AGSL RenderEffects
Любопытная статья, в которой автор показывает как можно создать нетривиальную анимацию медузы (!!!), по пути охватывая такие темы как:
▫️Создание кастомных ImageVectors из SVG
▫️Частичная анимация ImageVector
▫️Применение эффекта шума к Composable при помощи AGSL RenderEffect
Making Jellyfish move in Compose: Animating ImageVectors and applying AGSL RenderEffects
Любопытная статья, в которой автор показывает как можно создать нетривиальную анимацию медузы (!!!), по пути охватывая такие темы как:
▫️Создание кастомных ImageVectors из SVG
▫️Частичная анимация ImageVector
▫️Применение эффекта шума к Composable при помощи AGSL RenderEffect
Medium
Making Jellyfish move in Compose: Animating ImageVectors and applying AGSL RenderEffects 🐠
Learn how to use ImageVectors in Compose
👍3
Forwarded from Android Good Reads (Egor Tolstoy)
Обновилась документация по управлению памятью
Google обновили документацию про то, как в Android организован memory management. Из интересного – рекомендации по тестированию работы приложений в условиях ограниченной памяти, в том числе с помощью использования Stressful Application Test.
Google обновили документацию про то, как в Android организован memory management. Из интересного – рекомендации по тестированию работы приложений в условиях ограниченной памяти, в том числе с помощью использования Stressful Application Test.
👍3
Forwarded from Mobile Native ️️
Android App Starter Template
Еще один проект-шаблон, который может стать отправной точкой для новых проектов с использованием best practices разработки и чистой архитектурой. Это интерпретация и адаптация официальных рекомендаций по архитектуре от Google.
👉 Modularization
👉 Gradle Version Catalog
👉 Ktor
👉 Coroutines
👉 Jetpack Compose
👉 Hilt
👉 DataStore
👉 Testing
Код на GitHub → Android App Starter Template
Еще один проект-шаблон, который может стать отправной точкой для новых проектов с использованием best practices разработки и чистой архитектурой. Это интерпретация и адаптация официальных рекомендаций по архитектуре от Google.
👉 Modularization
👉 Gradle Version Catalog
👉 Ktor
👉 Coroutines
👉 Jetpack Compose
👉 Hilt
👉 DataStore
👉 Testing
Код на GitHub → Android App Starter Template
👍5🤔2👎1🔥1
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Кодогенерация (а значит kapt) - это уже неотъемлемая часть современных Android проектов. Мы знаем что это медленно и затратно по ресурсам.
Вопрос "как глубоко днище потребления ресурсов kapt-ом" раскрывается в статье. На примере проекта автора - чуть меньше половины времени всей сборки - это генерация кода.
Молимся на Kotlin Symbol Processing (KSP)
Вопрос "как глубоко днище потребления ресурсов kapt-ом" раскрывается в статье. На примере проекта автора - чуть меньше половины времени всей сборки - это генерация кода.
Молимся на Kotlin Symbol Processing (KSP)
👍3
Forwarded from Голос из-под шторки | Миша Левченко
Когда то я написал пост про то что DI фреймворки не решают проблемы, а заменяют их новыми. На что многие мне ответили “а как же так? ты что, пишешь зависимости рУкАмИ? Ты что, Dagger пишет код за меня!”. Ну что ж, давайте я в новом посте покажу тебе, мой сомневающийся в силе фабрик читатель, как при помощи by-делегации в Kotlin можно писать кода не больше чем при использовании Dagger. Привет ребятам с Podlodka Android Crew, которые забайтили меня на это
👍6
Forwarded from Записки разработчицы (Anna Zharkova)
Интересная статья о настройке перформанса в Compose от IceRock:
https://habr.com/ru/post/701422/
https://habr.com/ru/post/701422/
Хабр
Оптимизируй или сдохни: профилирование и оптимизация Jetpack Compose
Привет! На связи Сергей Панов, разработчик мобильных приложений в IceRock. Сегодня я разберу на примере нашего приложения «Кампус», как делать профилирование и оптимизацию...
👍3
Forwarded from addmeto (Grigory Bakunov)
В мире андроида невероятная утечка — утекло несколько сертификатов, принадлежащих разработчикам нескольких аппаратных платформ (один из ключей точно Mediatek, еще один — Samsung). Как это произошло — непонятно, пока гугл не раскрывает причин, но подписав приложение таким сертификатом, злоумышленник может “представиться” системе другим приложением и как следствие получить доступ к файлам приложения, а также выполнить действия, которые разрешены этой программе. Т.е., например, я могу прикинуться приложением карт, предустановленным в вашем телефоне, и получать данные о вашем перемещении или приложением “галерея” и иметь полный доступ к вашим фоткам.
Звучит довольно мощно, надеюсь, что это утечка не из гугла, а из какой-то внешней компании, разрабатывающей аппаратную часть дешевых телефонов. Но все равно мощно, особенно зная, как недолго производители телефонов сопровождают апдейты.
https://bugs.chromium.org/p/apvi/issues/detail?id=100
Звучит довольно мощно, надеюсь, что это утечка не из гугла, а из какой-то внешней компании, разрабатывающей аппаратную часть дешевых телефонов. Но все равно мощно, особенно зная, как недолго производители телефонов сопровождают апдейты.
https://bugs.chromium.org/p/apvi/issues/detail?id=100
😢5👍2😱2
Forwarded from Android Broadcast (Кирилл Розов)
Jetpack Compose — When should I use derivedStateOf?
Разбор применения derivedStateOf в Compose - функции, которая предназначена когда ваше состояние или ключ меняются чаще чем надо обновлять UI
#compose
Разбор применения derivedStateOf в Compose - функции, которая предназначена когда ваше состояние или ключ меняются чаще чем надо обновлять UI
#compose
👍3
Forwarded from Android Broadcast (Кирилл Розов)
Как цветовая схема приложения может меняться в зависимости от контента
red_mad_robot делятся опытом работы с content-based color schemes. Это когда цвет вашего приложения меняется в зависимости не от системных цветов, а от контента внутри него. Ребята поверх всего это сделали свое решение (исходники тут) и делятся им.
#android12 #material
red_mad_robot делятся опытом работы с content-based color schemes. Это когда цвет вашего приложения меняется в зависимости не от системных цветов, а от контента внутри него. Ребята поверх всего это сделали свое решение (исходники тут) и делятся им.
#android12 #material
👍5
Forwarded from AppFiles - Mobile Development
Circuit — это простая, легкая и расширяемая платформа от Slack для создания приложений Kotlin, основанных на Compose.
Circuit на GitHub: https://github.com/slackhq/circuit
Описание: https://slackhq.github.io/circuit/
Платформа: Android
⭐️: 376
Circuit на GitHub: https://github.com/slackhq/circuit
Описание: https://slackhq.github.io/circuit/
Платформа: Android
⭐️: 376
GitHub
GitHub - slackhq/circuit: ⚡️ A Compose-driven architecture for Kotlin and Android applications.
⚡️ A Compose-driven architecture for Kotlin and Android applications. - slackhq/circuit
👍3