Вступай в Android-комьюнити Surf
В канале Surf Android Team разработчики приложений «Лабиринт», «Магнит», «Ригла» и других делятся лучшими практиками и больными шишками из опыта работы с Kotlin и Java.
Вот подборка полезных постов из канала:
🟢 Lottie-анимации для приложения-сети зоомагазинов
🟢 Дорожная карта Junior Android-разработчика
🟢 Парсинг SMS через SMS User Consent API
Surf активно расширяет Android-комьюнити и ждёт тебя в канале, чтобы делиться интересными кейсами и быть на одной волне актуальных технологий.
⌨️ Подписывайся по ссылке → @surf_android
#реклама
В канале Surf Android Team разработчики приложений «Лабиринт», «Магнит», «Ригла» и других делятся лучшими практиками и больными шишками из опыта работы с Kotlin и Java.
Вот подборка полезных постов из канала:
Surf активно расширяет Android-комьюнити и ждёт тебя в канале, чтобы делиться интересными кейсами и быть на одной волне актуальных технологий.
#реклама
Please open Telegram to view this post
VIEW IN TELEGRAM
Я — Денис, Android-разработчик в «Лайв Тайпинге». В этой статье я продолжу рассказывать о современных подходах разработки адаптивного UI/UX для людей с ограниченными возможностями, разных национальностей и особенностями развития. В этой статьей я расскажу про разработку интерфейсов в XML и Compose для варьирующего размера шрифта. А также покажу почему атрибут contentDescription так важен.
#android #design #ux #compose
https://habr.com/ru/articles/798473/
#android #design #ux #compose
https://habr.com/ru/articles/798473/
Хабр
Как увеличить шрифт так, чтобы контейнер не поехал? Адаптация UI/UX для людей с проблемами зрения в XML и Compose
Я — Денис, Android-разработчик в «Лайв Тайпинге». В этой статье я продолжу рассказывать о современных подходах разработки адаптивного UI/UX для людей с ограниченными возможностями, разных...
Новый Compose урок по теме - Input.
Используем функцию awaitPointerEvent для отслеживания простых событий типа click, swipe и long press.
Рассматриваем прочие await* функции: awaitFirstDown, awaitLongPressOrCancellation, awaitDragOrCancellation, waitForUpOrCancellation, awaitEachGesture.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Используем функцию awaitPointerEvent для отслеживания простых событий типа click, swipe и long press.
Рассматриваем прочие await* функции: awaitFirstDown, awaitLongPressOrCancellation, awaitDragOrCancellation, waitForUpOrCancellation, awaitEachGesture.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Обзор второго Android 15 Developer Preview
Updating Android communications
- Satellite support
- Smoother NFC experiences
Developer productivity
- PDF Improvements
- Automatic language switching refinements
- Granular line break controls
- Expanded IntentFilter Functionality
- More OpenJDK API support
Giving your app more flexibility on more screens
- Cover screen support
A more private, secure Android
- Screen record detection
Making Android more efficient
- ApplicationStartInfo API
- Changes to package stopped state
- Detailed app size information
- Changes to foreground services
- SQLite database
Media refinements
- HDR Headroom Control
- Loudness Control
- Use Spatializer instead of Virtualizer
Behavior changes
- Elegant fonts everywhere
User Experience
#android #preview
https://android-developers.googleblog.com/2024/03/the-second-developer-preview-of-android-15.html
https://commonsware.com/blog/2024/03/23/random-musings-android-15-developer-preview-2.html
Updating Android communications
- Satellite support
- Smoother NFC experiences
Developer productivity
- PDF Improvements
- Automatic language switching refinements
- Granular line break controls
- Expanded IntentFilter Functionality
- More OpenJDK API support
Giving your app more flexibility on more screens
- Cover screen support
A more private, secure Android
- Screen record detection
Making Android more efficient
- ApplicationStartInfo API
- Changes to package stopped state
- Detailed app size information
- Changes to foreground services
- SQLite database
Media refinements
- HDR Headroom Control
- Loudness Control
- Use Spatializer instead of Virtualizer
Behavior changes
- Elegant fonts everywhere
User Experience
#android #preview
https://android-developers.googleblog.com/2024/03/the-second-developer-preview-of-android-15.html
https://commonsware.com/blog/2024/03/23/random-musings-android-15-developer-preview-2.html
Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в Ozon ID SDK. Но обо всём по порядку.
#kotlin #android #contextreceivers
https://habr.com/ru/companies/ozontech/articles/802641/
#kotlin #android #contextreceivers
https://habr.com/ru/companies/ozontech/articles/802641/
Хабр
Context receivers — новые extension functions
Думаю, не раскрою большой секрет, что Ozon разработал энное количество мобильных приложений: для покупателей, для продавцов, банк и т. д. В каждом из них требуется авторизация. Для этого существует...
Что нового в Kotlin 2.0.0-Beta5
IDE support
Kotlin K2 compiler
- Current K2 compiler limitations
- Smart cast improvements
- Kotlin Multiplatform improvements
- Compiler plugins support
- How to enable the Kotlin K2 compiler
- Try the Kotlin K2 compiler in Kotlin Playground
- Support in IntelliJ IDEA
- Leave your feedback on the new K2 compiler
Kotlin/Native: resolving conflicts with Objective-C methods
Kotlin/Wasm
- Unsigned primitive types in functions with @JsExport
- Binaryen available by default in production builds
- Generation of TypeScript declaration files in Kotlin/Wasm
- Support for named export
Kotlin/JS
- Support for type-safe plain JavaScript objects
- Support for npm package manager
Gradle improvements
- Improved Gradle dependency handling for CInteropProcess in Kotlin/Native
- Visibility changes in Gradle
- New directory for Kotlin data in Gradle projects
- Kotlin/Native compiler downloaded when needed
- Deprecating old ways of defining compiler options
Standard library: Stable AutoCloseable interface
What to expect from upcoming Kotlin EAP releases
How to update to Kotlin 2.0.0-Beta5
#kotlin
https://kotlinlang.org/docs/whatsnew-eap.html
IDE support
Kotlin K2 compiler
- Current K2 compiler limitations
- Smart cast improvements
- Kotlin Multiplatform improvements
- Compiler plugins support
- How to enable the Kotlin K2 compiler
- Try the Kotlin K2 compiler in Kotlin Playground
- Support in IntelliJ IDEA
- Leave your feedback on the new K2 compiler
Kotlin/Native: resolving conflicts with Objective-C methods
Kotlin/Wasm
- Unsigned primitive types in functions with @JsExport
- Binaryen available by default in production builds
- Generation of TypeScript declaration files in Kotlin/Wasm
- Support for named export
Kotlin/JS
- Support for type-safe plain JavaScript objects
- Support for npm package manager
Gradle improvements
- Improved Gradle dependency handling for CInteropProcess in Kotlin/Native
- Visibility changes in Gradle
- New directory for Kotlin data in Gradle projects
- Kotlin/Native compiler downloaded when needed
- Deprecating old ways of defining compiler options
Standard library: Stable AutoCloseable interface
What to expect from upcoming Kotlin EAP releases
How to update to Kotlin 2.0.0-Beta5
#kotlin
https://kotlinlang.org/docs/whatsnew-eap.html
Kotlin Help
What's new in Kotlin 2.0.0-RC3 | Kotlin
Подробное иллюстрированное введение в тему Generics в Kotlin
#kotlin #generics
https://typealias.com/start/kotlin-generics/
#kotlin #generics
https://typealias.com/start/kotlin-generics/
Dave Leeds on Kotlin
Generics
Perk up your understanding of generics in Chapter 18 of Kotlin: An Illustrated Guide! Through the engaging examples of Jennifer's bakery café and its ever-evolving beverage menu, you'll learn all about generics, type parameters, type arguments, upper-bound…
RuStore — российский стор для Android, в котором можно публиковать свои приложения на более чем 30-миллионную аудиторию, подключать платежное SDK и развивать монетизизацию.
RuStore постоянно улучшается, сейчас команда работает над следующими обновлениями и проводит исследование о магазинах приложений, чтобы сделать его еще удобнее для пользователей и разработчиков.
👉 Примите участие в опросе по ссылке — это займет всего 5 минут, зато даст команде объективную обратную связь. Исследование анонимно и конфиденциально, а все данные будут использованы для анализа только в обобщенном виде.
#реклама
RuStore постоянно улучшается, сейчас команда работает над следующими обновлениями и проводит исследование о магазинах приложений, чтобы сделать его еще удобнее для пользователей и разработчиков.
👉 Примите участие в опросе по ссылке — это займет всего 5 минут, зато даст команде объективную обратную связь. Исследование анонимно и конфиденциально, а все данные будут использованы для анализа только в обобщенном виде.
#реклама
Новый Compose урок по теме - Input.
Разбираемся что такое Consumed статус. Используем его в своем обработчике кликов с прошлых уроков. Это позволит корректно ловить клики, когда один Box находится над другим.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Разбираемся что такое Consumed статус. Используем его в своем обработчике кликов с прошлых уроков. Это позволит корректно ловить клики, когда один Box находится над другим.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.
Ближайшее Fast Track мероприятия:
• 20–21 апреля — Fast Track для Android- и iOS-разработчиков, офер за 2 дня в команду Вертикалей.
Зарегистрироваться
#реклама
Ближайшее Fast Track мероприятия:
• 20–21 апреля — Fast Track для Android- и iOS-разработчиков, офер за 2 дня в команду Вертикалей.
Зарегистрироваться
#реклама
Accessibility Scanner в Android
Исследования показывают, что максимальный процент выявленных проблем с accessibility составляет 40-50%. Поэтому ручное тестирование всегда необходимо. Но для этих 40-57% есть несколько инструментов, которые можно использовать. Один из них — Accessibility Scanner, и в этой статье я расскажу о том, как протестировать с его помощью ваше приложение. Давайте начнем с того, что это такое.
#android #accessibility
https://habr.com/ru/articles/805281
Исследования показывают, что максимальный процент выявленных проблем с accessibility составляет 40-50%. Поэтому ручное тестирование всегда необходимо. Но для этих 40-57% есть несколько инструментов, которые можно использовать. Один из них — Accessibility Scanner, и в этой статье я расскажу о том, как протестировать с его помощью ваше приложение. Давайте начнем с того, что это такое.
#android #accessibility
https://habr.com/ru/articles/805281
Хабр
Accessibility Scanner в Android
Я — Денис, Middle Android-разработчик в «Лайв Тайпинге». В этой статье я расскажу об инструменте тестирования accessibility в Android приложениях. Введение Исследования показывают, что максимальный...
Подборка курсов для изучения Kotlin:
Introduction to Kotlin
Kotlin Onboarding
Kotlin Koans
AtomicKotlin
Kotlin Core
Coroutines and Channels
Introduction to IDE Code Refactoring in Kotlin
Algorithmic Challenges in Kotlin
Kotlin Developer
Introduction to Ktor
Kotlin Backend Developer (Spring Boot)
Introduction to Android With Kotlin
Android Developer With Kotlin
#kotlin #course
https://blog.jetbrains.com/education/2024/04/04/kotlin-learning-guide/
Introduction to Kotlin
Kotlin Onboarding
Kotlin Koans
AtomicKotlin
Kotlin Core
Coroutines and Channels
Introduction to IDE Code Refactoring in Kotlin
Algorithmic Challenges in Kotlin
Kotlin Developer
Introduction to Ktor
Kotlin Backend Developer (Spring Boot)
Introduction to Android With Kotlin
Android Developer With Kotlin
#kotlin #course
https://blog.jetbrains.com/education/2024/04/04/kotlin-learning-guide/
The JetBrains Blog
A Comprehensive Kotlin Learning Guide for All Levels | The JetBrains Academy Blog
Use the flow chart to get an overview of all our Kotlin learning content and choose your next course.
Давайте в общих чертах рассмотрим вопросы взлома и защиты Android-приложений.
В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.
#android #security
https://habr.com/ru/companies/cian/articles/804835/
В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.
#android #security
https://habr.com/ru/companies/cian/articles/804835/
Хабр
Игра в безопасность Android-приложений
Давайте в общих чертах рассмотрим вопросы взлома и защиты Android-приложений. В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными...
Первая бета Android 15, список изменений
- Edge-to-edge
- Smoother NFC experiences - part 2
- Inter-character justification
- App archiving
- App-managed profiling
- Better Braille
- Key management for end-to-end encryption
- Secured background activity launches
- App compatibility
#android
https://commonsware.com/blog/2024/04/13/random-musings-android-15-beta-1.html
https://android-developers.googleblog.com/2024/04/the-first-beta-of-android-15.html
- Edge-to-edge
- Smoother NFC experiences - part 2
- Inter-character justification
- App archiving
- App-managed profiling
- Better Braille
- Key management for end-to-end encryption
- Secured background activity launches
- App compatibility
#android
https://commonsware.com/blog/2024/04/13/random-musings-android-15-beta-1.html
https://android-developers.googleblog.com/2024/04/the-first-beta-of-android-15.html
CommonsWare: Android App Development Books
Random Musings on the Android 15 Beta 1
We already have an Android 15 beta! Mark examines what's inside, particularly focusing on things that Google is not (yet) talking about.
Действительно ли RxJava так плоха, что ей не осталось места в наших приложениях? Используется ли она сейчас на проектах? Есть ли смысл изучать RxJava новичку?
#android #rxjava
https://habr.com/ru/articles/807925/
#android #rxjava
https://habr.com/ru/articles/807925/
Хабр
RxJava — всё?
Статья написана при поддержке канала Mobile Developer . В “далеком” 2018 г. разработчик компании EPAM Systems Владимир Иванов провел опрос среди своих подписчиков в Twitter, пытаясь узнать, какой...
Пример использования нового Power Profiler. Он отображает уровень потребления энергии различными системными компонентами (WLAN, CPU, Memory). Это дает возможность наглядно увидеть, насколько можно снизить энергопотребление, уменьшив качество воспроизводимого видео.
#android #androidstudio #performance #profiler
https://android-developers.googleblog.com/2024/04/how-to-effectively-ab-test-power-consumption-for-your-android-app-features.html
#android #androidstudio #performance #profiler
https://android-developers.googleblog.com/2024/04/how-to-effectively-ab-test-power-consumption-for-your-android-app-features.html
This media is not supported in your browser
VIEW IN TELEGRAM
Новый Compose урок по теме - Input.
Разбираемся, как событие проходит через компоненты 3 раза, и как это можно использовать.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Разбираемся, как событие проходит через компоненты 3 раза, и как это можно использовать.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
В третьей части серии статей о ViewModel Best Practices обсуждают следующие пункты:
- Try not to import Android dependencies in the ViewModels:
- Lazily inject dependencies in the constructor.
#android #viewmodel
https://proandroiddev.com/mastering-android-viewmodels-essential-dos-and-donts-part-3-%EF%B8%8F3%EF%B8%8F%E2%83%A3-1833ce3ddd2b
- Try not to import Android dependencies in the ViewModels:
- Lazily inject dependencies in the constructor.
#android #viewmodel
https://proandroiddev.com/mastering-android-viewmodels-essential-dos-and-donts-part-3-%EF%B8%8F3%EF%B8%8F%E2%83%A3-1833ce3ddd2b
DI фреймворки бывают двух видов: те, что строят свой граф зависимостей во время компиляции (compile time фреймворки), и те, которые делают это уже при выполнении кода (runtime фреймворки).
Kodein — типичный представитель runtime фреймворков. Это значит, что о пропущенной зависимости вы узнаете непосредственно в процессе работы приложения, что может стать неприятным сюрпризом. Только представьте себе: вы пропустили на регрессе какой-то кейс, и у вас краш в продакшене из-за DI! Это же настоящий кошмар!
Но неужели нам придётся отказываться от Kodein или других runtime фреймворков? Что можно сделать, чтобы сделать их более надёжными? Есть ответ! Мы переведём наш DI из разряда runtime проверок в разряд deploy time проверок.
Это третья статья из цикла материалов про Kodein DI для Android
#android #kodein #di
https://habr.com/ru/companies/dododev/articles/807969/
Kodein — типичный представитель runtime фреймворков. Это значит, что о пропущенной зависимости вы узнаете непосредственно в процессе работы приложения, что может стать неприятным сюрпризом. Только представьте себе: вы пропустили на регрессе какой-то кейс, и у вас краш в продакшене из-за DI! Это же настоящий кошмар!
Но неужели нам придётся отказываться от Kodein или других runtime фреймворков? Что можно сделать, чтобы сделать их более надёжными? Есть ответ! Мы переведём наш DI из разряда runtime проверок в разряд deploy time проверок.
Это третья статья из цикла материалов про Kodein DI для Android
#android #kodein #di
https://habr.com/ru/companies/dododev/articles/807969/
Хабр
Kodein DI для Android. Целостность графа и тесты на DI
DI фреймворки бывают двух видов: те, что строят свой граф зависимостей во время компиляции (compile time фреймворки), и те, которые делают это уже при выполнении кода (runtime фреймворки). Kodein —...
Статья о создании своего плагина в Android Studio, часть 1.
Судя по всему, в итоге автор собирается создать плагин для работы с ADB
#android #androidstudio #plugin
https://medium.com/@farhaddeveloper98/write-androidstudio-plugin-step-by-step-part1-create-simple-action-toolwindow-with-custom-ui-01aeefceec94
Судя по всему, в итоге автор собирается создать плагин для работы с ADB
#android #androidstudio #plugin
https://medium.com/@farhaddeveloper98/write-androidstudio-plugin-step-by-step-part1-create-simple-action-toolwindow-with-custom-ui-01aeefceec94
Medium
Write AndroidStudio Plugin Step By Step, Part1: Create Simple Action & ToolWindow with Custom UI.
Crafting Your First Android Studio Plugin
Статья о производительности нового K2 компилятора. Сравнивают сборки на Kotlin 1.9.23 и Kotlin 2.0.0, версия Gradle - 8.5.
#android #kotlin #performance
https://blog.jetbrains.com/kotlin/2024/04/k2-compiler-performance-benchmarks-and-how-to-measure-them-on-your-projects/
#android #kotlin #performance
https://blog.jetbrains.com/kotlin/2024/04/k2-compiler-performance-benchmarks-and-how-to-measure-them-on-your-projects/
The JetBrains Blog
K2 Compiler Performance Benchmarks and How to Measure Them on Your Projects | The Kotlin Blog
Dive into the K2 compiler’s performance benchmarks and learn how to measure performance in your own projects.