Forwarded from Android Broadcast (Кирилл Розов)
Media is too big
VIEW IN TELEGRAM
📺 Что нового в Android 14 для разработчиков (35 мин)
Свежая версия Android уже вышла, а я собрал все самые важные изменения для разработчиков и менеджеров продуктов
❗ Часть изменений повлияет на все приложения, независимо от targetSdk ❗
01:01 Predictive Back Gesture
02:20 Ограничение на установку старых приложений
04:26 Обновление локализации
05:43 Нелинейное масштабирование размера текста
07:51 ShareSheet
09:32 AlarmManager
10:31 Foreground Service
15:06 Intent
16:13 BroadcastReciever
17:26 JobScheduler
19:54 Частичный доступ к медиа
22:37 PackageManager
25:36 Обнаружение скриншотов
26:46 Уведомления
28:14 Data Safety в системе
29:47 Унификация работы Foreground Service
30:29 Другие изменения
34:35 Заключение
#AndroidBroadcast #разбор
Свежая версия Android уже вышла, а я собрал все самые важные изменения для разработчиков и менеджеров продуктов
❗ Часть изменений повлияет на все приложения, независимо от targetSdk ❗
01:01 Predictive Back Gesture
02:20 Ограничение на установку старых приложений
04:26 Обновление локализации
05:43 Нелинейное масштабирование размера текста
07:51 ShareSheet
09:32 AlarmManager
10:31 Foreground Service
15:06 Intent
16:13 BroadcastReciever
17:26 JobScheduler
19:54 Частичный доступ к медиа
22:37 PackageManager
25:36 Обнаружение скриншотов
26:46 Уведомления
28:14 Data Safety в системе
29:47 Унификация работы Foreground Service
30:29 Другие изменения
34:35 Заключение
#AndroidBroadcast #разбор
👍1🔥1🤓1
Forwarded from Mobile Native ️️
Exploring Canvas in Jetpack Compose — Crafting Graphics, Animations, and Game Experiences
Неплохая статья с примерами про работу с Canvas в Jetpack Compose.
👉 Getting Started with Canvas
👉 Drawing Shapes and Paths
👉 Custom Data Visualizations
👉 Animating with Canvas
👉 Advanced Techniques — Particles and Effects
👉 Performance Considerations
👉 Near to Real World Example
Читать (En)
Неплохая статья с примерами про работу с Canvas в Jetpack Compose.
👉 Getting Started with Canvas
👉 Drawing Shapes and Paths
👉 Custom Data Visualizations
👉 Animating with Canvas
👉 Advanced Techniques — Particles and Effects
👉 Performance Considerations
👉 Near to Real World Example
Читать (En)
❤4👍1
Forwarded from Mobile Compose
#Article #Medium #Compose
Unleashing Compose on the Terminal: Building Pikslate
Чуть более 2 лет назад небезызвестный Jake Wharton представил Mosaic — библиотеку для создания консольных интерфейсов поверх Compose compiler/runtime.
Автор сегодняшней статьи пошел дальше, и при помощи Mosaic сделал Pikslate — софт для рендера картинок и видео в терминале (да, это кому-то необходимо).
Зеркало статьи 👉 тут
Unleashing Compose on the Terminal: Building Pikslate
Чуть более 2 лет назад небезызвестный Jake Wharton представил Mosaic — библиотеку для создания консольных интерфейсов поверх Compose compiler/runtime.
Автор сегодняшней статьи пошел дальше, и при помощи Mosaic сделал Pikslate — софт для рендера картинок и видео в терминале (да, это кому-то необходимо).
Зеркало статьи 👉 тут
Medium
Unleashing Compose on the Terminal: Building Pikslate
About a week or so ago, Fraol Lemecha prepared a contest that was all about cli-apps and TUI. I had the privilege of participating in this…
Forwarded from Android Live 🤖
SDK Upgrade Assistant
#android
Оказывается, пару месяцев назад появилась утилита, которая помогает быстро обновить targetSdkVersion в проекте.
Правда, нет свежего 34 SDK (но вручную уже можно обновиться), уверен, что со временем и он там появится.
Для использования надо выбрать Tools > Android SDK Upgrade Assistant, и Google советует обновлять по 1 уровню за раз.
Больше деталей можно почитать тут.
#android
Оказывается, пару месяцев назад появилась утилита, которая помогает быстро обновить targetSdkVersion в проекте.
Правда, нет свежего 34 SDK (но вручную уже можно обновиться), уверен, что со временем и он там появится.
Для использования надо выбрать Tools > Android SDK Upgrade Assistant, и Google советует обновлять по 1 уровню за раз.
Больше деталей можно почитать тут.
❤2👍2
Forwarded from Разработка ждёт балета
Тут в блоге http toolkit хороший разбор того, что происходит с TLS сертификатами в Android 14. Пока всё выглядит так, что свои подсунуть больше не выйдет. Но может ещё найдётся решение.
#certificate #network #tls
#certificate #network #tls
🤔4👍3🔥1
Forwarded from Surf Mobile Team
Что нового в Kotlin 1.9 📱
JetBrains продолжает развивать Kotlin, и сегодня мы подробнее рассмотрим обновления в самом языке. Листай карточки и задавай вопросы по изменениям в комментариях⬆️
#экспертный
JetBrains продолжает развивать Kotlin, и сегодня мы подробнее рассмотрим обновления в самом языке. Листай карточки и задавай вопросы по изменениям в комментариях
#экспертный
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2🤔1
Forwarded from Mobile Native ️️
Intro to Polymorphism with Kotlinx.Serialization
Статья с примером, как заложить структуру данных для полиморфных типов с использованием Kotlinx.Serialization.
Читать (En)
Статья с примером, как заложить структуру данных для полиморфных типов с использованием Kotlinx.Serialization.
Читать (En)
👍2🔥2🤓1
Forwarded from Mobile AppSec World (Yury Shabalin)
Пишем Android-приложение практически полностью в NDK
Привет любителям прятать строки в .so файлах, что бы их сложнее было найти!
Тут есть крайне занятный пример, как практически полностью написать приложение, используя NDK для того, чтобы усложнить анализ такого приложения, помешать захукать системные вызовы и прочие приколы.
На самом деле, что-то в этом есть, особенно мне понравилась часть про вызов Binder напрямую из нативного кода через reflection, и вызов соответствующих сервисов далее:
Доклад интересен глубиной погружения и способом подачи, то есть после того, как разбирается очередной пример "скрытия" чего-либо, идет небольшой блок демо, как это выглядит в коде, как переписать привычные нам действия с Java на натив. Ну и в конце пара выводов, как еще можно усилить подобное, да и надо ли оно такое вообще?
В общем спорная штука, как доклад вполне, как перенос части вещей для усложнения тоже может быть интересно (ну и защититься немного от перехвата штатными скриптами тоже прикольно в ряде случаев).
В общем, весьма смешанные чувства после просмотра =)
#android #ndk #obfuscation
Привет любителям прятать строки в .so файлах, что бы их сложнее было найти!
Тут есть крайне занятный пример, как практически полностью написать приложение, используя NDK для того, чтобы усложнить анализ такого приложения, помешать захукать системные вызовы и прочие приколы.
На самом деле, что-то в этом есть, особенно мне понравилась часть про вызов Binder напрямую из нативного кода через reflection, и вызов соответствующих сервисов далее:
class.forName("android.os.ServiceManager").getMethod("getService", String.class);
Это тебе уже не просто ключ шифрования в сошку положить, тут поинтереснее. Доклад интересен глубиной погружения и способом подачи, то есть после того, как разбирается очередной пример "скрытия" чего-либо, идет небольшой блок демо, как это выглядит в коде, как переписать привычные нам действия с Java на натив. Ну и в конце пара выводов, как еще можно усилить подобное, да и надо ли оно такое вообще?
В общем спорная штука, как доклад вполне, как перенос части вещей для усложнения тоже может быть интересно (ну и защититься немного от перехвата штатными скриптами тоже прикольно в ряде случаев).
В общем, весьма смешанные чувства после просмотра =)
#android #ndk #obfuscation
YouTube
TROOPERS23: Beyond Java: Obfuscating Android Apps with Purely Native Code
This is a live recording of a talk I gave at TROOPERS23 in Heidelburg, Germany. The presentation explores writing Android applications in purely native code to obfuscate app flow-of-control. It also uses direct communication with the Android Binder to bypass…
👍2🔥2
Forwarded from Mobile Developer (Алексей Гладков)
Внутренности ANR [EN]
https://blog.p-y.wtf/anr-internals-touch-dispatching-through-the-view-hierarchy
Как же я люблю такие статьи, где не просто поверхностно прошлись, а прям объяснили как это работает
👉 Как устроен механизм touch dispatch
👉 Сравнение механизмов View и Compose
👉 Как это все связано с ANR
https://blog.p-y.wtf/anr-internals-touch-dispatching-through-the-view-hierarchy
Как же я люблю такие статьи, где не просто поверхностно прошлись, а прям объяснили как это работает
👉 Как устроен механизм touch dispatch
👉 Сравнение механизмов View и Compose
👉 Как это все связано с ANR
P-Y's blog
ANR internals: touch dispatching through the view hierarchy
I'm writing a blog series on ANR internals, where I'll use ANRs as an excuse to learn more about how various parts of Android work. This first article is focused on touch dispatching through the view hierarchy.
ANR triggers
How is an "Application No...
ANR triggers
How is an "Application No...
👍2🔥2🤔1
Forwarded from Java: fill the gaps
Сегодня релиз Java 21🥳
Главные фичи новой версии:
🔸 Виртуальные потоки
В чём суть: для многих задач производительность ограничивается количеством потоков в ОС. Чтобы обойти это ограничение и использовать потоки на максимум, придумали множество способов — асинхронные библиотеки, реактивное программирование и тд. Вариант рабочий, но код усложняется.
Виртуальные потоки позволяют писать простой код и не упираться в ограничения ОС.
Ближайший аналог виртуальных потоков — горутины в Go. Собственно, горутины — основная причина, почему многие сервисы написаны на Go.
Более дальний аналог — корутины в Kotlin. Они имитируют виртуальные потоки на уровне библиотеки и несут большие накладные расходы. В java виртуальные потоки реализованы на уровне JVM, поэтому их производительность гораздо выше.
В теории виртуальные потоки принесут пользу большинству приложений. Посмотрим, что будет на практике.
🔸 Pattern matching
В этих постах (один, два) я подробно расписала, зачем нужен pattern matching в целом, и как он реализован в java. Вкратце: нужен не всем, реализация в джаве так себе
🔸 Sequenced collections
Новые методы в коллекциях:
Интересные preview фичи:
🔹 String templates — интерполяция строк, возможность писать
🔹 Scoped Values — аналог ThreadLocal c ограниченной областью действия
🔹 Structured Concurrency — способ организации подзадач в многопоточной среде
Остальные фичи очень специфичные и вряд ли пригодятся большинству разработчиков:
▫️ Generational ZGC — в сборщик добавили поколения, как следует из названия. Молодые объекты будут собираться чаще, и сборщик будет работать эффективнее
▫️ Record Patterns — records можно использовать внутри case
▫️ Foreign Function & Memory API (Third Preview) — методы для работы с нативным кодом и управлению памятью за пределами JVM. Это нужно для приложений, которые хотят сами управлять размещением объектов в памяти и не зависеть от сборщика мусора.
▫️ Unnamed Patterns and Variables (Preview) — можно не указывать имя переменной, если оно не нужно. Вместо него ставить
▫️ Deprecate the Windows 32-bit x86 Port for Removal — перестать работать с Windows 32-bit x86, в будущем удалить
▫️ Prepare to Disallow the Dynamic Loading of Agents
Агент — компонент, который изменяет классы при загрузке или меняет уже загруженные классы в JVM. Используется для мониторинга, профайлинга и других служебных целей
▫️ Key Encapsulation Mechanism API — методы для защиты ключей симметричного шифрования
▫️ Unnamed Classes and Instance Main Methods (Preview)
Видимо чтобы короче писать Hello World:
Главные фичи новой версии:
🔸 Виртуальные потоки
В чём суть: для многих задач производительность ограничивается количеством потоков в ОС. Чтобы обойти это ограничение и использовать потоки на максимум, придумали множество способов — асинхронные библиотеки, реактивное программирование и тд. Вариант рабочий, но код усложняется.
Виртуальные потоки позволяют писать простой код и не упираться в ограничения ОС.
Ближайший аналог виртуальных потоков — горутины в Go. Собственно, горутины — основная причина, почему многие сервисы написаны на Go.
Более дальний аналог — корутины в Kotlin. Они имитируют виртуальные потоки на уровне библиотеки и несут большие накладные расходы. В java виртуальные потоки реализованы на уровне JVM, поэтому их производительность гораздо выше.
В теории виртуальные потоки принесут пользу большинству приложений. Посмотрим, что будет на практике.
🔸 Pattern matching
В этих постах (один, два) я подробно расписала, зачем нужен pattern matching в целом, и как он реализован в java. Вкратце: нужен не всем, реализация в джаве так себе
🔸 Sequenced collections
Новые методы в коллекциях:
getFirst(), getLast(), reversed() и другие. Подробный пост тутИнтересные preview фичи:
🔹 String templates — интерполяция строк, возможность писать
String str = "Hello, ${name}!";
Подробнее в этом посте🔹 Scoped Values — аналог ThreadLocal c ограниченной областью действия
🔹 Structured Concurrency — способ организации подзадач в многопоточной среде
Остальные фичи очень специфичные и вряд ли пригодятся большинству разработчиков:
▫️ Generational ZGC — в сборщик добавили поколения, как следует из названия. Молодые объекты будут собираться чаще, и сборщик будет работать эффективнее
▫️ Record Patterns — records можно использовать внутри case
▫️ Foreign Function & Memory API (Third Preview) — методы для работы с нативным кодом и управлению памятью за пределами JVM. Это нужно для приложений, которые хотят сами управлять размещением объектов в памяти и не зависеть от сборщика мусора.
▫️ Unnamed Patterns and Variables (Preview) — можно не указывать имя переменной, если оно не нужно. Вместо него ставить
_
Например, в case:case Point(int x, _) → …Или при ловле исключения:
catch (IllegalStateException _)Было бы удобно сделать такое для лямбд, но для этого есть отдельный JEP, который сделают чёрт знает когда
▫️ Deprecate the Windows 32-bit x86 Port for Removal — перестать работать с Windows 32-bit x86, в будущем удалить
▫️ Prepare to Disallow the Dynamic Loading of Agents
Агент — компонент, который изменяет классы при загрузке или меняет уже загруженные классы в JVM. Используется для мониторинга, профайлинга и других служебных целей
▫️ Key Encapsulation Mechanism API — методы для защиты ключей симметричного шифрования
▫️ Unnamed Classes and Instance Main Methods (Preview)
Видимо чтобы короче писать Hello World:
class HelloWorld {
void main() {
System.out.println("Hello, World!");
}
}
Вот такой релиз. Конечно, самая ожидаемая фича — это виртуальные потоки. Если планируете в ближайшее время внедрять их, отпишитесь по впечатлениям, мне очень интересно😊🤯3👍2😱1
This media is not supported in your browser
VIEW IN TELEGRAM
Tiling — это реализация пагинации на основе состояния, которая представляет выгружаемый набор данных в виде простого списка. Он обеспечивает постоянный доступ к элементам по индексам в режиме реального времени и возможность самоанализа элементов, просматриваемых по страницам.
Tiller доступен в mavenCentral:
implementation com.tunjid.tiler:tiler:version
Читать статью
#гайд
Tiller доступен в mavenCentral:
implementation com.tunjid.tiler:tiler:version
Читать статью
#гайд
👍2🤔2👎1🔥1
Forwarded from Android Security & Malware
Working solution on how to inject system CA certificates in Android 14
https://httptoolkit.com/blog/android-14-install-system-ca-certificate/
https://httptoolkit.com/blog/android-14-install-system-ca-certificate/
Httptoolkit
New ways to inject system CA certificates in Android 14
A couple of weeks ago I published a post about changes in Android 14 that fundamentally break existing approaches to installing system-level CA certificates,...
👍2🔥1