We Love Android – Telegram
We Love Android
632 subscribers
259 photos
26 videos
4 files
630 links
Новости из мира Android-разработки
Download Telegram
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
Forwarded from Android Broadcast (Кирилл Розов)
Combo Breaker - библиотека для Compose, которая позволяет огибать текстом элементы UI. например, сделать текст колонками как в газете/журнале.

#compose
👍4
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Kotlin Coroutines use cases for Data/Adapters Layer

Использование корутин в 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
👍3
Forwarded from Android Good Reads (Egor Tolstoy)
Обновилась документация по управлению памятью

Google обновили документацию про то, как в Android организован memory management. Из интересного – рекомендации по тестированию работы приложений в условиях ограниченной памяти, в том числе с помощью использования Stressful Application Test.
👍3