We Love Android – Telegram
We Love Android
631 subscribers
259 photos
26 videos
4 files
630 links
Новости из мира Android-разработки
Download Telegram
Forwarded from Android Good Reads (Egor Tolstoy)
JSON Hero – супер мощный визуализатор JSON в браузере

JSON Hero – сайт, который рендерит JSON файлы в удобном для чтения представлении. Например, сразу подгружает изображения и url preview, показывает дату сразу во всех форматах, проводит валидацию файла и делает многое другое.
🔥2
Forwarded from Mobile Native ️️
Transforming Kotlin Collections – Functions with Examples

Статья с примерами трансформаций коллекций в Kotlin с помощью некоторых популярных и не очень функций. Каждый пример сопровождается понятной диаграмой 👍.

👉 Map
👉 Zipping
👉 Association
👉 Flattening
👉 String Representation

Читать (En)
👍4
Forwarded from Mobile Native ️️
Многопоточность Java

Неплохая статья про многопоточку в Java, в которой тезисно собраны основные темы в структурированом виде.

👉 Основные понятия
👉 Как запустить новый поток
👉 Как остановить поток
👉 Жизненный цикл потока
👉 Приоритеты потоков
👉 Переключение потоков
👉 Daemon потоки
👉 Использование памяти
👉 Deadlock и Race condition
👉 Синхронизация потоков
👉 Monitor. Mutex. Semaphore
👉 Concurrency
👉 Атомарные классы
👉 Список ссылок

Читать (Ru)
👍1
Forwarded from Android Broadcast (Кирилл Розов)
This media is not supported in your browser
VIEW IN TELEGRAM
Collapsing toolbar with parallax effect and curved motion in Jetpack Compose (12 мин)

Инструкция по реализация скролла с паралакс эффектом (nested scroll) в Jetpack Compose. Прямо с кодом и схемами движения, формулами. Всё очень четко!

#compose #animation
👍3
Forwarded from Mobile Developer (Алексей Гладков)
Modern Android Development от Google на Android Dev Summit 2022
https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_L3n1j4ajHjJ6QccFUvW1u

Закончились Keynote для Android Developer от Google и с нами поделились целым ворохом рекомендаций по лучшим практикам от создателя зеленого робота и Jetpack Compose.

Внимание! Лучшие практики от Google не всегда хорошо работают
🔥3
Forwarded from Android Broadcast (Кирилл Розов)
Вышел Compose 1.3.0
👉 Переход на независимое версионирование артефактов
👉 Опубликовали BOM, который корректно соединяет разные версии Compose артефактов
👉 Рефакторинг работы модификторов под капотом, для увеличения их производительности
👉 Исправление Accessibility в Popup и Диалогах
👉 LazyHorizontalStaggeredGrid и LazyVerticalStaggeredGrid
👉 Отрисовка текста напрямую на Canvas
👉 Поддерджка Swipe to refresh с помощью Modifier.pullRefresh
👉 Поддержка snap поведения через SnapFlingBehavior

Подробнее в статье или обновлении Android Jetpack

#compose
👍4🔥1
Forwarded from Android Good Reads (Egor Tolstoy)
Вышло ежегодное исследование популярности команд Android разработки

В этом году мы опросили 660 Android-разработчиков, на 40% больше, чем в прошлом! Посмотрите отчет, чтобы узнать:
💰В каких сферах предпочитают работать Android разработчики (спойлер – топ-1 это банки)
📚Какие 10 книг чаще всего рекомендуют для прочтения
🤔Какие каналы и сообщества про Android разработку самые популярные
📃Как много андроидщиков планирует менять работу в этом году
📊Кто входит в топ Android экспертов
🤩В каких компаниях и почему разработчики хотят работать

Исследование проведено при поддержке VK. Пошарьте опрос в своем рабочем чате, мы будем очень рады ❤️
👍1
Forwarded from Android Good Reads (Egor Tolstoy)
Как работает звук

Главный лонгрид недели – Bartosz Ciechanowski, которого вы знаете по крутейшим интерактивным статьям о принципах работы GPS и механических часов, выпустил новый материал. В нем он разбирает основные принципы того, как в атмосфере передаются звуки, и что влияет на то, что именно мы слышим.
👍2🔥2
Forwarded from Mobile Compose
#Featured #AndroidDevSummit #Compose

Reimagining designer-developer handoff: Introducing Relay

Одним из самых ярких анонсов Google с прошедшего Android Dev Summit однозначно стал Relay — новый UI инструмент для перевода моделей дизайна из Figma в код Jetpack Compose, а также их дальнейшей синхронизации. Подробнее о том, как работает новинка — в небольшом видеодокладе с конференции.

A также:
▫️Страница Relay на developer.android.com
▫️Страница Relay на material.io
👍2
Forwarded from Android Broadcast (Кирилл Розов)
Сталкивались ли с TransactionTooLargeException? Например, при сохранении состояния Activity. Автор статьи разбирается в механизмах IPC и Binder, неправильная работа с которыми приводит к ошибке.

#androidos
👍2
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Дизайн с учетом читаемости кода

Kotlin - язык с кучей возможностей и синтаксическим сахаром. Одни и те же вещи сделать можно множеством способов. Какой правильный? Краткость - это лучший вариант?

Из своего опыта могу сказать, что читабельность важнее. Лучше сделать больше строчек и выделить методы/классы/интерфейсы, чтобы разобраться в коде было проще. Короткие конструкции языка зачастую используют сложные операторы и фичи, которые поймут не все. Даже самому со временем может быть сложно понять этот код.

Что вы думаете на этот счет? Делитесь своим мнением в комментариях
👍2🔥1
Forwarded from Why Android? 🌚
Смена языка в рантайме всегда была болью. Помню проект, где было куча Utils которые переопределяют Context, сохраняют локаль и т.д. 😬

С выходом Android 13 приложениям разрешили менять язык на отличный от системного.
И, оказывается, Google сделали backport этого апи на все версии Android.

Всего пару действий и legacy можно выпиливать.

1️⃣ Обновляемся до appcompat.1.6.0-rc01 (стабильной нету, следующая сразу 1.7.0-alpha01 🌚)

2️⃣ Создаем xml/locales_config.xml  с вашими поддерживаемыми языками

<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en" />
<locale android:name="ru" />
<locale android:name="be" />
</locale-config>


3️⃣ Добавляем его в AndroidManifest

<application
android:localeConfig="@xml/locales_config"


4️⃣ Добавляем AppLocalesMetadataHolderService, где autoStoreLocales=true означает, что сервис сам будет сохранять локаль (спойлер: просто в файл 🌚)

<service
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
android:enabled="false"
android:exported="false">
<meta-data
android:name="autoStoreLocales"
android:value="true" />
</service>


5️⃣ Ну и все

AppCompatDelegate.getApplicationLocales() - вернет текущую локаль приложения
AppCompatDelegate.setApplicationLocales() - установит нужную вам локаль (допустим в настройках приложения)

У себя проверял, точно работает на API 21+

Live Demo - Документация
👍9
Forwarded from Mobile Developer (Алексей Гладков)
Развитие Android архитектуры наглядно
👍4
Forwarded from Mobile Compose
#Featured #AndroidDevSummit #Compose

Compose Modifiers deep dive

Доклад от небезызвестного Leland Richardson, в котором он предлагает глубже погрузиться в историю модификаторов Compose, а также связанных с ними проблем и ограничений. Ну и самое интересное, рассказывает об изменениях Modifier API — как о тех, на которые уже переехали в версии 1.3, так и о тех, которые добавят в 1.4.
👍2
Ещё одна ОС от гугла, да. На этот раз для всяких умных устройств и с прицелом на безопасность. На расте.
За новость скажем спасибо @MightySeal

#google #os #rust
🤡7
Forwarded from StartAndroid
Кроме флага debuggable существует флаг profileable.

У profileable билда меньше возможностей по использованию профайлеров, но его производительность гораздо ближе к релизному.

#android #debug #performance #profileable

https://android-developers.googleblog.com/2022/10/accurately-measure-android-app-performance-with-profileable-builds.html
👍3🔥1
Forwarded from Android Good Reads (Egor Tolstoy)
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Appyx 1.0.0

- Вышел первый стабильный релиз Appyx – библиотеки навигации от Bumble.
- Вместе с релизом выпустили три туториала: Basics, Navigation и Custom animation.
👍4
Forwarded from Mobile Native ️️
7 Android Lifecycle Interview Questions That Some Got Wrong

Полезная статейка для начинающих с вопросами/ответами по lifecycle, которые могут спросить на собесах.

Читать (En)
👍4
😁6🐳3
Forwarded from Android Good Reads (Egor Tolstoy)
Open-Obfuscator – новый обфускатор мобильных приложений

- Автор проекта увлекался поиском уязвимостей в существующих обфускаторах, но ему не были рады. Поэтому он решил написать свой, с упором на открытость к разработчикам и рисерчерам. Даже для первого релиза большую часть времени разработки автор вложил в понятную документацию.
- Open-Obfuscator поддерживает обфускацию нативного кода с помощью специального LLVM плагина, и обфускацию Kotlin/Java кода поверх ядра Proguard.
- Нативный обфускатор называется O-MVLL, обфускатор для Kotlin – dProtect.
🔥4
Forwarded from Локалхост (Никита Куликов) (Nikita Kulikov)
Как неявная кодогенерация съела несколько часов в моей жизни

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

Спустя множество потраченных часов просмотра логов и кода я поменял стратегию - решил посмотреть генерируемый код. Для этого я взял собранное приложение и декомпилировал его с помощью JADX. И там я увидел что вместо моей красивой строки следующее: LiveLiterals$FirmwareVersionBuilderApiImplKt.INSTANCE.m9856xc5cc7c0e(). Сама строка в коде выглядит так: " ".

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

Оказалось все это время у меня крашился внутренний механизм LiveLiterals. AndroidStudio самостоятельно подменяет все константы в коде на LiveLiterals. Это сделано чтобы можно было менять константы в коде без пересборки приложения. Удивительно сколько всего себе позволяет текстовый редактор
🤯5🤔3