Поговорим сегодня про 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 разработал энное количество мобильных приложений: для покупателей, для продавцов, банк и т. д. В каждом из них требуется авторизация. Для этого существует...
Яндекс приглашает начинающих IT-специалистов в летнюю Школу мобильной разработки
Бесплатная летняя школа поможет начинающим разработчикам систематизировать имеющиеся знания в создании мобильных приложений на Kotlin, Swift или Flutter, а также обрести новые востребованные навыки.
Программа обучения состоит из двух этапов: сначала онлайн-курс лекций с домашними заданиями, затем очный этап в офисах Яндекса в Москве или Санкт-Петербурге. Расходы на проезд и проживание оплачивает компания.
По результатам онлайн-этапа лучшие студенты получат возможность пройти пятинедельную оплачиваемую практику в новом формате Лаборатории и поработать над внутренними задачами Яндекса под руководством опытных специалистов в области мобильной разработки.
Отбор в школу состоит из трех последовательных этапов — тестирование знаний выбранной платформы (Android, iOS или Flutter), решение алгоритмических задач в условиях ограниченного времени в формате контеста и техническое интервью. Подборка подготовительных материалов доступна по ссылке.
Для подачи заявки необходимо заполнить форму на сайте школы и выполнить тестовое задание.
#реклама
Бесплатная летняя школа поможет начинающим разработчикам систематизировать имеющиеся знания в создании мобильных приложений на Kotlin, Swift или Flutter, а также обрести новые востребованные навыки.
Программа обучения состоит из двух этапов: сначала онлайн-курс лекций с домашними заданиями, затем очный этап в офисах Яндекса в Москве или Санкт-Петербурге. Расходы на проезд и проживание оплачивает компания.
По результатам онлайн-этапа лучшие студенты получат возможность пройти пятинедельную оплачиваемую практику в новом формате Лаборатории и поработать над внутренними задачами Яндекса под руководством опытных специалистов в области мобильной разработки.
Отбор в школу состоит из трех последовательных этапов — тестирование знаний выбранной платформы (Android, iOS или Flutter), решение алгоритмических задач в условиях ограниченного времени в формате контеста и техническое интервью. Подборка подготовительных материалов доступна по ссылке.
Для подачи заявки необходимо заполнить форму на сайте школы и выполнить тестовое задание.
#реклама
Что нового в 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-RC1 | 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.
Неважно, опытный вы программист или новичок — попробуйте себя в разработке приложения на Flutter!
⚠️Ждем вас на бесплатном практическом уроке «Создаем многопользовательскую игру наподобие "Имаджинариум" с искусственным интеллектом на Flutter» от OTUS и Дмитрия Золотова — Flutter+Kotlin Developer в Yandex. На вебинаре мы:
- рассмотрим несколько подходов к взаимодействию мобильных приложений;
- добавим к игре поддержку простого бота на основе gemini AI;
- используем генеративный ИИ для создания изображений;
- создадим готовую игру с возможностью взаимодействия между пользователями.
Встречаемся 17 апреля в 20:00 мск в рамках курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!
👉 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cwdBjD
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚠️Ждем вас на бесплатном практическом уроке «Создаем многопользовательскую игру наподобие "Имаджинариум" с искусственным интеллектом на Flutter» от OTUS и Дмитрия Золотова — Flutter+Kotlin Developer в Yandex. На вебинаре мы:
- рассмотрим несколько подходов к взаимодействию мобильных приложений;
- добавим к игре поддержку простого бота на основе gemini AI;
- используем генеративный ИИ для создания изображений;
- создадим готовую игру с возможностью взаимодействия между пользователями.
Встречаемся 17 апреля в 20:00 мск в рамках курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!
👉 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cwdBjD
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Действительно ли 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
❓Хотите повысить качество и читаемость своего кода в мобильной разработке? Присмотритесь к Flutter и его возможностям
Как взаимодействовать с JS-библиотеками и запускать нативный Kotlin/Swift-код без использования платформенных каналов и FFI?
Все это и даже больше обсудим на открытом практическом уроке от OTUS. Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex.
На вебинаре разберем:
- Native assets как альтернативу Platform Channels / FFI для мобильной разработки;
- взаимодействие с Java-кодом через библиотеки jni / jnigen;
- проблему взаимодействия с существующими JS-модулями в Flutter Web и новые библиотеки для доступа к JS-объектам;
- примеры использования нативных библиотек для задач высокопроизводительных вычислений во Flutter-приложениях.
Встречаемся 24 апреля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
👉 Посетите бесплатный урок: https://otus.pw/dWydD/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как взаимодействовать с JS-библиотеками и запускать нативный Kotlin/Swift-код без использования платформенных каналов и FFI?
Все это и даже больше обсудим на открытом практическом уроке от OTUS. Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex.
На вебинаре разберем:
- Native assets как альтернативу Platform Channels / FFI для мобильной разработки;
- взаимодействие с Java-кодом через библиотеки jni / jnigen;
- проблему взаимодействия с существующими JS-модулями в Flutter Web и новые библиотеки для доступа к JS-объектам;
- примеры использования нативных библиотек для задач высокопроизводительных вычислений во Flutter-приложениях.
Встречаемся 24 апреля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
👉 Посетите бесплатный урок: https://otus.pw/dWydD/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
В третьей части серии статей о 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.