We Love Android – Telegram
We Love Android
629 subscribers
259 photos
26 videos
4 files
630 links
Новости из мира Android-разработки
Download Telegram
😁7🤓3🙈2🤔1
Forwarded from Compose Broadcast
Сравнение Flutter, Jetpack Compose и SwiftUI при решение одинаковых задач. Изучайте тут
👍5🔥42
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
This media is not supported in your browser
VIEW IN TELEGRAM
Стал доступен плагин Kotlin Notebook для IDEA - интерактивный инструмент, позволяющий комбинировать код, визуализации и текст в одном документе. Вы сможете быстро прототипировать, анализировать и работать с данными.

Если видите полезное применение в своей работе - делитесь в комментариях

#tooling
👍31🔥1
Forwarded from Android Live 🤖
​​Обзор уязвимостей Positive Hack Days
#security

Отдельное место у меня занимают статьи, которые рассказывают о лучших практиках безопасности Android-приложений: ведь даже если приложение будет с идеальным UI-UX, но будет иметь дыры в безопасности, то вся работа может свестись на нет. 🥴

Вот вам отличный список-обзор уязвимостей с недавнего Positive Hack Days: рекомендую сделать овервью своего приложения, вдруг найдёте что-то подобное.

Тут и exported=true для WebViewActivity, и проблемы в дебаг-панели, и вход без PIN-кода в приложение через виджет... в общем, есть на что обратить внимание. 👌
👍4🔥1
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Вышел Kotlin 1.9.0
👉 Kotlin K2 комплиятор в Beta для JVM (Compose и KSP пока еще не поддерживают его). Теперь работает kapt с K2
👉 Новое свойство entries для enum class на замену values(). Лучше скорость работы и современный синтаксис. Подробности тут
👉 Стабильные data object
👉 Поддержка secondary constructor в inline value классах
👉 Превью нового механизма выделения памяти для объектов в Kotlin/Native
👉 Улучшения в Kotlin Multiplatform для работы с Android

#kotlin
👍32🔥2
Forwarded from Invalidate cache & restart (Alexey Bykov)
Gradle и аббревиатуры

Недавно обнаружил, что Gradle позволяет использовать сокращённые названия тасок. Может быть даже одна буква, при отсутствии конфликтов.

Выглядит полезным. Однако, не используйте это в скриптах, чтобы никого не запутать.
👍3🔥2
Forwarded from Android Good Reads (Egor Tolstoy)
Разбор новых фичей Figma

👉Переменные, которые могут представлять цвета, размеры, эффекты, типографику и локализованные строки.
👉Новые настройки автолейаута, с помощью которых можно прямо в Figma делать адаптивный дизайн.
👉Новый Developer Mode, который позволяет готовить экраны для передачи их разработчикам.
👉Песочница компонентов, в которой дизайнер может легко переключать разные настройки экспортируемых компонентов и смотреть, как они себя ведут в граничных состояниях.
👉Поддержка в VSCode для работы с макетом прямо в IDE.
👉Плагины для экспорта дизайна в код на любом фреймворке.
👍5🤔3
Forwarded from Mobile Compose
​​#Tools #Compose

Jetpack Compose SVG to Compose converter

Появился онлайн конвертер SVG файлов (можно загрузить как SVG код так и файл целиком) в Composable функции. В некоторых кейсах вполне полезный инструмент.
2
Forwarded from Android Guards
Приложение может вести себя по-разному в зависимости от приходящих push-сообщений. Это может быть какая-то особая реакция на скрытый параметр, который в обычной ситуации никогда не присылается, а оставлен только для разработчиков. Или оно может переключатся в другой режим работы при получении какой-то особой полезной нагрузки. Чтобы быстро и без заморочек протестировать все эти варианты можно использовать локальную отправку пушей приложению через adb команду adb shell su -c "am broadcast -a com.google.android.c2dm.intent.RECEIVE -n chat.rocket.whitelabel/com.google.firebase.iid.FirebaseInstanceIdReceiver --es "param1" "payload1" --ez "param2" true. Она позволит быстро проверить все гипотезы и освободить время на поиск уязвимости на отправку произвольных пушей целевому приложению 😉
#aht
👍32
Forwarded from StartAndroid
Краткий обзор фабрик, которые дают нам возможность повлиять на создание основных Android сущностей

- AppComponentFactory for customising the instantiation of application components
- LayoutInflater.Factory2 and View for customising view inflation
- FragmentFactory for customising fragment creation
- ViewModelProvider.Factory with CreationExtras for simplifying ViewModel creation
- WorkerFactory for customising Worker creation in WorkManager

#android #activity #fragment #viewmodel #di

https://marcellogalhardo.dev/posts/injection-points/
🔥4👍2
Forwarded from Android Live 🤖
values() или entities()
#kotlin

В Kotlin 1.9.0 из стадии Experimental в Stable перешла функция entities(), которую можно вызывать для любых Enum и получить список всех элементов, которые в нём объявлены.

Зачем же нужна ещё одна функция, когда есть values()?

На самом деле, причин сразу несколько:

1️⃣ При каждом вызове функции создаётся новый Array: это одна из известных причин "скрытых" performance-багов.

2️⃣ При работе вызывается Array<E>, который мутабелен, а также меньше подходит для работы с коллекциями, чем список.

3️⃣ Ну и ещё — сложнее писать extension-функции для Array<E> вместо стандартных List<T>.

Ну а в entities() таких недостатков нет, а самое главное, что при вызове всегда используется один и тот же список и нет повторного создания.

Чуть больше информации можно найти тут. Теперь вы знаете, что ответить на собеседовании, и почему стоит перейти на entities(). 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔2
Как я перестал волноваться и полюбил ошибки в Kotlin корутинах: Мифы обработки ошибок в корутинах

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

Статья: https://habr.com/ru/articles/747146/
Платформа: Android
🤔3👍2
Forwarded from Mobile Developer (Pavel Kachan)
The State of Kotlin Multiplatform [RU]
https://habr.com/ru/companies/usetech/articles/747926/

"Про Kotlin Multiplatform (КММ) многие слышали, но пробовали далеко не все. Мы с командой использовали его в работе, и здесь я расскажу о своем опыте. Возможно, теперь у вас появится понимание, как аргументировать бизнесу зачем вообще нужен KMM и насколько это сейчас рабочая история."
👍2
Forwarded from Mobile Native ️️
От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin. Часть 1.

Разбор изменений реализации примитивов синхронизации из стандартной библиотеки Java и пакета
java.util.concurrent
для Kotlin Coroutines и для языка Kotlin в целом.

Какие реализации примитивов синхронизации потоков актуальны в контексте корутин, а какие надо использовать с осторожностью и готовность текущих решений к использованию в Kotlin Multiplatform.

В статье рассматриваются

👉 Критические секции
👉 Атомарные переменные
👉 Реактивные переменные
👉 Барьерная синхронизация

Читать (Ru)
👍3🤔2
Как сделать удобное взаимодействие с Kotlin из Swift: обзор проблем и решений

Kotlin является удобным язык для мобильных разработчиков благодаря удобству создания кроссплатформенных приложений. Вы можете использовать одну и ту же кодовую базу как для Android, так и для iOS.

Но при разработке для iOS могут возникать проблемы, особенно когда необходимо взаимодействовать со Swift, ведь скомпилированный в Kotlin код, не выдает сразу Swift API. Как быть и что делать, рассказывает автор этой статьи:

https://habr.com/ru/articles/697966/

#kotlin #swift
👍2
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Статья (EN, 4 мин) про разные сценарии использования sealed class и sealed interface с примерами. Иногда спрашивал такое на собесах и часть людей не отвечала
Forwarded from Android Good Reads (Egor Tolstoy)
План Coil по поддержке Kotlin Multiplatform

Я уже упоминал, что недавно библиотека Coil получила грант от Kotlin Foundation направленный на поддержку KMP.

Вышел блогпост, где автор раскрывает больше деталей про миграцию. Основная задача переезда – полностью отвязать Coil от Android. Самым большим изменением API будет замена Drawable на Image, который абстрагирует детали платформенной реализации изображений.

План – завершить миграцию в течение нескольких месяцев.
👍4🔥2🤔1
Forwarded from Mobile Native ️️
Learn Kotlin Flow by real examples for Android

Проект с примерами для изучения Kotlin Flow.

• How to use Kotlin Flow in Android Project?
• Doing simple task in background using Kotlin Flow.
• Doing tasks in series using Kotlin Flow.
• Doing tasks in parallel using Kotlin Flow. Blog
• Making two network calls in parallel using Kotlin Flow.
• Using operators like filter, map, reduce, flatMapConcat, zip, and etc.
• Exception handling in Kotlin Flow
• How to use onCompletion in Flow?
• Retry Task using retry operator in Flow.
• Retry Task with Exponential Backoff in Flow.
• Using Kotlin Flow with Retrofit. Blog
• Using Kotlin Flow with Room Database. Blog
• Using Kotlin Flow with various 3rd party libraries.
• Making two network calls in parallel using Kotlin Flow.
• Doing task in series using Kotlin Flow.
• Writing Unit-Test for ViewModel which uses Kotlin Flow
• Flow and StateFlow

GitHub → Learn-Kotlin-Flow
🔥3👍2🤓1
Forwarded from Стой под стрелой (Nikita Prokopov)
Когда Реддит прибил сторонние клиенты, и в том числе Аполло, СЕО Реддита объяснил это так: не, ну а чо они на нашем АПИ сидят, гребут деньги лопатой, а нам не отдают? У нас 50 программистов, их тоже чем-то кормить надо.

На что вроде бы очевидный ответ: так сделайте тоже нормального клиента и гребите эти деньги себе? В чем проблема?

А проблема в том, что того, что хватает одному программисту, не хватит, чтобы прокормить 50. Вот и получается, что у одного есть возможность делать удобно и хорошо для пользователей, а у пятидесяти такой возможности нет.

Поэтому я всегда стараюсь работать в маленьких командах. Большие это что-то про то, как кого-нибудь наебать, развести или еще каким-то способом отжать деньги, причем желательно сразу много. А маленькие могут себе позволить на самом деле уменьшать энтропию и вообще работать на пользователя.

Хотя казалось бы, 50 программистов, звучит так, что это должно быть лучше, чем один. Но нет. Парадокс.
🤔3👍2
Вчера прозоишло одно из важнейших событий для Flipper Zero и для меня - релиз Apps Catalog.

Теперь больше сотни приложений для Flipper Zero собрано в одном месте. Про существование многих из них я даже не подозревал. В процессе тестирования каталога ни раз качал какую-то игру на пробу и залипал там на час с лишним. Мой личный топ:
1) 2048 - очень качественно сделанная адаптация 2048, идеально ложится на формфактор флиппера
2) Doom - это не порт, а скорее клон, но отличный - со здоровьем, в 3д, с патронами и перезарядкой
3) WAV Player - флиппер может играть черный бумер, ну не чудо ли?

В каталоге еще полно приложений для энтузиастов - для детекта SWD, для чтения/записи UART, для подключенного счетчика гейгера, для модуля GPS, для прошивки ESP32 и так далее. Прямо сейчас оно мне не нужно, но я уверен что рано или поздно какое-то из этих приложений мне понадобится (например, сбросить какой-нибудь очередной грузинский роутер).

Вы сами можете посмотреть приложения в каталоге - флиппер для этого не требуется. Загрузите приложение из AppStore/Google Play, пропустите соединение и перейдите на вкладку "Hub"

Особенно важно это событие лично для меня, так как во флиппере я занимаюсь мобильным приложением, а Apps выпустились как раз там.

Можете потыкать, рассказать как оно вам:
Google Play: https://play.google.com/store/apps/details?id=com.flipperdevices.app
App Store: https://apps.apple.com/app/flipper-mobile-app/id1534655259
🔥3😱2👍1