StartAndroid
10.7K subscribers
371 photos
10 videos
5 files
1.75K links
Канал об Android (Андроид) разработке

Сайт - http://startandroid.ru

Чат - https://tttttt.me/startandroidchat

Контакты - https://startandroid.ru/ru/about/cntct5.html

Реклама - https://startandroid.ru/ru/about/reklama.html
Download Telegram
Возвращаемся к урокам по Compose после летних каникул.

Новая важная тема - Stability. В первом уроке разбираемся, что это такое и зачем вообще нужно.

Подключим compiler metrics отчеты, чтобы видеть, какие классы компилятор считает stable/unstable, а какие функции - skippable.

Используем аннотацию Immutable, чтобы увидеть, как можно сломать Stability.

В качестве примеров пока используем примитивы и data классы.

#android #course #compose

https://startandroid.ru/ru/courses/compose.html
Мобильные разработчики, общий сбор!

29 августа в Санкт-Петербурге пройдёт VK JT Mobile, первая конференция VK для мобильных разработчиков на iOS и Android. Вспомним прошлое, обсудим будущее и, опираясь на наш опыт, расскажем, как моментально внедрять технологии, структурировать миллионы строк кода и постоянно улучшать продуктовые метрики.

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

Регистрируйтесь, если хотите реализовывать сложные в разработке, но простые для юзеров приложения, а также разбираться в инструментах и практиках, которые применяют наши специалисты 🙋

#реклама
Android Gradle Plugin это тяжелая штука. Модуль с подключенным AGP (например с com.android.library) конфигурируется в два раза дольше чем обычный jvm модуль java/kotlin. В момент конфигурации android-модуля потребляется в два раза больше оперативной памяти. У модуля с AGP больше тасок, больше вес output артефактов, больше триггеров для инвалидации билд-кэша.

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

К сожалению в 90% случаев мы не можем оставить модуль обычным JVM модулем из-за того что он ссылается на какие-то сущности из Android SDK или библиотеки, распространяемые в виде AAR артефактов.

Решение в том чтобы разрешить JVM модулям зависеть от Android SDK и AAR, при этом не подключая AGP.


#android #gradle #java #module #agp

https://habr.com/ru/articles/835402/
В файле local.properties можно хранить, например, свои логин/пароль. Gradle может закинуть их в класс BuildConfig, чтобы мы могли использовать эти данные в приложении на экране логина, и не вводить каждый раз руками. Это будет работать только в локальной сборке.

#android #gradle

https://dev.to/kiolk/simple-way-to-store-secrets-in-android-project-345k
Интересный способ избавиться от UseCase, которые просто прокидывают метод репозитория. Делаем такой UseCase интерфейсом и наследуем его в репозитории.

#android #kotlin #usecase #architecture

https://dladukedev.com/articles/042_avoid_useless_cases_part_2/
Приходи на митап True Tech Party от МТС

Провожаем лето в компании CTO, тимлидов и руководителей разработки из МТС и не только, которые поделятся опытом в управлении командами и поговорят про то, какие хард- и софтскилы развивать, чтобы продвигаться по карьере. Спикеры расскажут, с какими ожиданиями сталкиваются тимлиды, как и какие решения принимают CTO, как строится обучающая среда для инженеров.

Когда: 30 августа
Где: Офлайн (Москва) + онлайн

Событие будет интересно разработчикам и начинающим руководителям в IT.

Регистрируйся по ссылке.

Реклама. Информация о рекламодателе

#реклама
Вышел Kotlin 2.0.20

- The data class copy function will have the same visibility as the constructor
- Static accessors for source sets from the default target hierarchy are now available in multiplatform projects
- Concurrent marking for Kotlin/Native has been made possible in the garbage collector
- The @ExperimentalWasmDsl annotation in Kotlin/Wasm has a new location
- Support has been added for Gradle versions 8.6–8.8
- A new option allows sharing JVM artifacts between Gradle projects as class files
- The Compose compiler has been updated
- Support for UUIDs has been added to the common Kotlin standard library

#kotlin

https://blog.jetbrains.com/kotlin/2024/08/kotlin-2-0-20-released/
Сравнение Flutter и Kotlin Multiplatform:

- Flutter vs. KMP in a nutshell
- Flutter vs. KMP – Detailed comparison
- Flutter vs. KMP – Main differences
- Flutter vs. KMP: 4 key criteria to help you decide
- Developing with Flutter and KMP – Droids On Roids approach
- Summary

#flutter #kmp #multiplatform

https://www.thedroidsonroids.com/blog/flutter-vs-kotlin-multiplatform
Вдохновившись обновлением Telegram без маркета приложений я захотел сделать на одном из своих пет-проектов что-то подобное. Первой мыслью было - найти этот код в исходниках Telegram, но т.к. скорее всего у них обновление скачивается с серверов, я решил не играть в лотерею и не тратить время на раскопки в Java-коде, потому что я хотел сделать так, чтобы можно было скачивать с GitHub-releases.

#android #release #build #update

https://habr.com/ru/articles/839008/
Переход на технологии и инструменты новых версий может быть обусловлен разными причинами: от банального появления проблем при работе с устаревшими версиями до желания получать больше возможностей. При этом для многих команд, независимо от причин, апгрейд стека является задачей, скрывающей не только выгоды, но и сложности, которые приходится стойко преодолевать.

Меня зовут Богдан Мащенко. Я Android-разработчик в платформенной команде Одноклассников. В этой статье я расскажу о нашем опыте перехода на AGP (Android Gradle Plugin) и Gradle версий 8.*: что стало причиной перехода, как преодолевали трудности, и что мы смогли получить в результате.


#android #gradle #build

https://habr.com/ru/companies/vk/articles/838772/
🚀 Как автоматизировать процесс разработки и сделать жизнь android-разработчика проще? Ответы на эти вопросы найдете на Podlodka Android Crew с 16 по 20 сентября!

Podlodka Crew — это онлайн-конференции для IT-специалистов, которые фокусируются на практической пользе. Сессии проходят утром и вечером, чтобы вы могли совмещать их с работой.

Вас ждут:

- Пришёл, увидел, наплагинил: Павел Стрельченко из HeadHunter расскажет, как разработка плагинов для IntelliJ IDEA может стать вашей скрытой суперсилой.
- Автоматизация экспорта токенов из Figma: Никита Яцкивский из Магнит поделится опытом автоматизации экспорта дизайнерских токенов в код, что значительно ускоряет работу над проектом.
- Генерация шаблонного кода с помощью Geminio: Евгений Мельцайкин из СКБ Контур расскажет, как избавиться от повторяющегося кода и сосредоточиться на важных задачах.
- GitHub Actions: Никита Куликов из Flipper Devices объяснит, почему GitHub Actions стал доминирующим CI/CD инструментом для open-source проектов и как настроить его за считанные минуты.

Подключайтесь к Podlodka Android Crew, чтобы получить самые актуальные знания и практические советы! Билеты со скидкой: https://podlodka.io/droidcrew

А промокод сообщества android_crew_12_K2pP4j даёт скидку еще в 500 руб🥳

#реклама
Недавно состоялись сразу два крупных обновления. И IntelliJ IDEA и Amplicode зарелизились с новыми версиями 2024.2. Про Amplicode я уже рассказывал в другой статье, в этой расскажу про IntelliJ IDEA Community Edition.

- Быстрый старт
- Режим К2
- Новый интерфейс включен по умолчанию
- Превью результатов поиска в Search Everywhere
- Улучшенная работа с логами
- Улучшенный дебаггер для Kotlin
- Визуализация строковых переменных для JSON, XML и других форматов
- Улучшенная работа с Gradle
- Улучшения, связанные с VCS
- Инкрементальная синхронизация Maven-проектов

#kotiln #idea #jetbrains #intellij

https://habr.com/ru/companies/haulmont/articles/839454/
При targetSdk=35 режим edge-to-edge будет включен по умолчанию. Статья дает несколько советов по работе с ним.

- Use material components to make handling insets easier
- Draw backgrounds edge-to-edge, and inset critical UI
- Handle display cutout and caption bar insets
- Don’t forget the last list item
- Don’t forget IMEs
- For backwards compatibility, use enableEdgeToEdge instead of setDecorFitsSystemWindows
- Background protect system bars only when necessary
- Use Scaffold’s PaddingValues
- Use high level WindowInset APIs
- Prefer ViewCompat.setOnApplyWindowInsetsListener over fitsSystemWindows=true
- Apply insets based on app bar height on bar layout

#android #insets #targetsdk #migration

https://medium.com/androiddevelopers/insets-handling-tips-for-android-15s-edge-to-edge-enforcement-872774e8839b

https://medium.com/androiddevelopers/preview-and-test-your-apps-edge-to-edge-ui-da645c905d78
Jetpack Navigation 2.8.0 принес нам стабильную Type safe навигацию.

#android #navigation

https://medium.com/androiddevelopers/type-safe-navigation-for-compose-105325a97657
Список изменений в Android 15

- Improving your developer experience
- Improving typography and internationalization
- Camera and media improvements
- Improving the user experience
- Privacy and security enhancements
- Get your apps, libraries, tools, and game engines ready!
- App compatibility

#android #release

https://android-developers.googleblog.com/2024/09/android-15-is-released-to-aosp.html
Рассуждения на тему, где и в какой момент лучше загружать данные: LaunchedEffect или ViewModel.init()

#android #kotlin #compose #architecture

https://proandroiddev.com/loading-initial-data-in-launchedeffect-vs-viewmodel-f1747c20ce62
В огромном приложении Android с Clean Architecture много рутинной работы, связанной с отображением объектов между различными слоями. Хорошим решением будет автоматизация этого процесса.

В этой статье рассматривается опыт использования библиотеки MapStruct, которая помогает mapp-ить объекты.

Библиотека очень гибка в настройке. И позволяет минимизировать написание шаблонного кода.


#android #architecture #mapping

https://habr.com/ru/articles/839362/
Ускоряем Android-приложения с помощью Baseline Profiles

В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.


#android #build #performance

https://habr.com/ru/companies/avito/articles/842218/