We Love Android – Telegram
We Love Android
631 subscribers
259 photos
26 videos
4 files
630 links
Новости из мира Android-разработки
Download Telegram
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
Forwarded from Android Broadcast (Кирилл Розов)
198839537-2794bac0-8075-470b-9c4d-aea9bc9d719c-Up to 4K.mov
24.4 MB
compose-animation-playground - репо с подборкой реализации разных анимаций на Jetpack 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 расписали какие проблемы они выявили с Котлином путем опроса сообщества и как они их собираются исправлять

Приятного чтения!
👍3
Forwarded from Android Guards
Давайте поговорим про исследование приложений на ReactNative? Чтобы задать тон дискуссии я написал небольшую заметку о моих подходах к вопросу и буду рад послушать про ваш опыт. Как положительный так и отрицательный.
👍4
Forwarded from Android Good Reads (Egor Tolstoy)
Multiplatform Paging

- Логика пагинации – идеальный кандидат для того, чтобы шарить между платформами.
- CashApp выпустили библиотеку Multiplatform Paging, полный аналог библиотеки из AndroidX, но с поддержкой мультиплатформы.
👍3🔥1
Forwarded from Android Good Reads (Egor Tolstoy)
Гайд по разработке библиотек

Большой набор рекомендаций по всем фазам жизненного цикла библиотеки: дизайну, разработке, релизу и поддержке. Вот некоторые из них:

👀 Используйте режим Explicit API для того, чтобы контролировать видимость ваших функций пользователям библиотеки.
Binary Compatibility Validator позволяет следить за обратной совместимостью.
🌠 Настройте работу с ресурсами, добавив им префиксы с именем библиотеки и отключив транзитивность для R class.
👍4