Android Live ?

Description
Самые свежие новости, новинки и тренды Android от практикующего разработчика.


Автор: @al_gorshkov,
Чат: @android_live_chat
Личный блог: @al_gorshkov_blog

По рекламе: @ek_gorshkova
We recommend to visit

По рекламе - @Hymmka

Last updated 2 months, 1 week ago

Reklama va hamkorlik bo'yicha: @oshigi_jannatim

Hamkor kanal: @xazilbek

Last updated 11 months ago

Сотрудничество: [email protected]
Это ютуб крутой бабы: https://youtube.com/c/vika02032000
Твич: https://www.twitch.tv/vikaesaul
Комикс ШАБАШ: https://t.me/shabashesaula

https://knd.gov.ru/license?id=676a3a8c96de59064d2c75e6&registryType=bloggersPermissio

Last updated 2 months ago

2 months ago

Друзья, поздравляю вас с наступающим Новым годом! ?

Этот год для канала выдался не самым продуктивным: мало постов и полезного контента для вас. Вероятно, самая банальная причина — самая верная: отсутствие желания и дисциплины.

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

2 months, 3 weeks ago

When и Guard Conditions
#kotlin

С релизом Kotlin 2.1.0 появился апдейт для when — guard conditions. Эта новая фича улучшает читаемость кода, делая его более наглядным.
Давайте рассмотрим на примере, что она делает.

Предположим, есть базовый класс для получения ответа от сервера:

```

sealed interface HttpResult {
data class Success(val response: String) : HttpResult
data class Failed(val statusCode: Int) : HttpResult
}

```

Если включить Guard Conditions, то проверка в when специальных юзкейсов будет выглядеть так:

```

when (response) {
is HttpResult.Success -> println("Success")
is HttpResult.Failed if response.statusCode == 503 -> println("Maintenance")
is HttpResult.Failed -> println("Failed with code ${response.statusCode}")
}

```

Как мы видим, одну ошибку от бэка мы обработали без добавления if внутри условия:

```

when (response) {
is HttpResult.Success -> println("Success")
is HttpResult.Failed -> {
if (response.statusCode == 503) {
println("Maintenance")
} else {
println("Failed with code ${response.statusCode}")
}
}
}

```

Похоже, что стало удобнее, но нужно попробовать на практике.
Чтобы включить фичу, надо убедиться, что K2 Compiler включен, а потом добавить опцию:

```

kotlin {
compilerOptions {
freeCompilerArgs.add("-Xwhen-guards")
}
}

```

Чуть больше информации можно найти тут.

3 months, 2 weeks ago
**Про App Signing**

Про App Signing
#google #useful

Не все разработчики знают, что в Google Play можно изменить подпись приложения.

Это может быть полезно, если вдруг вы потеряли текущую подпись, или Google сгенерировал подпись для aab за вас — но сейчас надо делать обновление из других магазинов или APK.

Для управления подписями зайдите в Test and release -> Setup -> App signing. Нас интересует App Signing Key Certificate, который следует сравнить с текущим сертификатом. Если нужно сравнить с APK, используйте следующую команду:

```

apksigner verify --print-certs app.apk

```

Изменить подпись можно только с учётной записи владельца. Консоль предложит несколько вариантов, включая использование текущего сертификата.

При помощи утилиты perk.jar, которая, к слову, довольно глючная, надо выполнить команду, которая будет довольно детально описана после выбора пункта.
Если получите ошибку, попробуйте запустить утилиту на более старой версии JDK.

После успешного выполнения команды, надо загрузить обновлённый сертификат в консоль. И на этом всё. ?

Какие особенности есть?

1️⃣Подпись можно менять только раз в год, и изменения нельзя откатить. Поэтому обязательно проверьте всё несколько раз, прежде чем продолжить.

2️⃣Обновление ключа будет работать только для API версии выше 32. Для остальных версий оно будет проигнорировано, и сборки будут использовать старый ключ.

Подробнее об изменении подписи можно почитать тут.

4 months, 2 weeks ago

Kotin: in и out, ковариантность и контрвариантность
#kotlin #новичкам

Про in и out написано много, но новички всё равно часто путаются. К тому же, опрос выше показал, что многие разработчики не до конца понимают эту тему. Между тем, знание этой темы даёт ряд преимуществ, и на собеседованиях её часто спрашивают.

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

Если вы новичок, то рекомендую прочитать, а профи — наверняка вы и так всё это знаете. ?

4 months, 2 weeks ago
5 months, 4 weeks ago

Data Object
#kotlin

С недавних пор IDEA (а именно с Kotlin 1.9) начала подчёркивать традиционный object и рекомендует заменить его на странный data object. Что за зверь такой и что он нам даёт? Давайте разберёмся.

При использованииsealed class или sealed interface мы могли добавлять разные стейты внутри его. Они могли быть как data class, так и object. Например:

```

sealed interface ProfileScreenState {
data class Success(val username: String): ProfileScreenState
object Error: ProfileScreenState
object Loading: ProfileScreenState
}
```

Однако, если мы захотели бы вывести результат в лог, то с data class все получилось бы хорошо, а вот с object — не очень: мы бы увидели только адреса, например:

```

com.dataobjects.example.ProfileScreenState$Loading@6d03e736
Success(username=exampleUser1)
com.dataobjects.example.ProfileScreenState$Error@5fd0d5ae

```

Можно было бы обмазаться старым добрым toString() для каждого объекта, но вместо этого — самое время использовать data object, где эта проблема полностью решена.

Хоть обновление и минорное, но заметно добавляет удобства при работе с подобными классами. ?

7 months, 2 weeks ago

Перенос приложения в Google Play
#google

Впервые делал перенос приложения с одного Google Dev аккаунта на другой.
Это может понадобиться по нескольким причинам, но, кажется, основная — это изменение всяких юридических данных компании.

И, как бы страшно это ни звучало — сделать перенос приложения довольно просто. Есть даже официальная дока от Google, как это сделать и которой, в принципе, достаточно.

Если кратко, то вам надо создать, оплатить и верифицировать новый аккаунт, а затем сделать request на перенос из вашего первого аккаунта.

Обязательно посмотрите, что можно перенести, а что нельзя. По сути, перенесётся вся информация, включая описание, отзывы, оценки, сервисы (Firebase тот же). В случае нашего приложения — пришлось заново добавить тестовые группы для скачивания приложения и отправить приглашения для доступа в консоль.

Так что — всё не страшно, вдруг этот пост понадобится вам когда-то в карьере. ?

Google

Transfer apps to a different developer account - Play Console Help

If you have apps that you want to transfer to a different Google Play developer account, you can submit a transfer request after reviewing the instructions below. Get your app ready to transfer Step

We recommend to visit

По рекламе - @Hymmka

Last updated 2 months, 1 week ago

Reklama va hamkorlik bo'yicha: @oshigi_jannatim

Hamkor kanal: @xazilbek

Last updated 11 months ago

Сотрудничество: [email protected]
Это ютуб крутой бабы: https://youtube.com/c/vika02032000
Твич: https://www.twitch.tv/vikaesaul
Комикс ШАБАШ: https://t.me/shabashesaula

https://knd.gov.ru/license?id=676a3a8c96de59064d2c75e6&registryType=bloggersPermissio

Last updated 2 months ago