Forwarded from Android Broadcast (Кирилл Розов)
Реализация поля ввода OTP кода на Jetpack Compose. За основу взяли BasicTextField, рамку нарисовали с помощью стандартной возможности декорирования текстового поля. Прочитал статью и обалдел как легко с Compose делается такое поле и обрабатывается ввод. С Custom View это было на порядок сложнее.
#compose
#compose
🔥3👍2👏2
Forwarded from StartAndroid
С помощью Extension SDK гугл может добавлять новые API к уже выпущенным версиям Android.
На скрине пример API, которое доступно, начиная с API Level 33. Но с помощью Extension оно может быть использовано и в API level 30 (R)
#android #sdk
https://android-developers.googleblog.com/2023/01/extending-android-sdk.html
На скрине пример API, которое доступно, начиная с API Level 33. Но с помощью Extension оно может быть использовано и в API level 30 (R)
#android #sdk
https://android-developers.googleblog.com/2023/01/extending-android-sdk.html
😱4👍2🔥2
Forwarded from Разработка ждёт балета
Вот это прямо прикольно выглядит. AdbOrc - открытая тулза, чтобы связать пачку девайсов в сеть, и дать другим участникам этой сети к ним доступ. Например, баг воспроизводится только у QA на устройстве, они дают доступ к девайсу, мы заходим, чики-брики и в дамки!
#adb #tool
#adb #tool
mobinex.io
Introducing AdbOrc | MobiNex
We are open sourcing AdbOrc which is a tool to create pseudo-distributed network of remotely accessible Android devices which can be used for testing, debugging or development.
🔥6👍2😱2
Forwarded from Android Broadcast (Кирилл Розов)
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Вышла новая стабильная версия Android Studio Electric Eel (2022.1.1) 1/2
Jetpack Compose
🔥 Автоматическое обновление Compose превью*
👉 Поддержка кастомных Preview аннотаций для нескольких устройств
👉 В Layout Inspector подсвечиваются проблемные UI элементы
XML UI
👉 Подсветка проблем дизайна на разных типах устройств
Сборка и зависимости
🚀 Увеличена скорость синхронизации с параллельным импортом проектов
👉 В Build Analyzer теперь показывается сколько данных загружает Gradle во время сборки
👉 Ассистент обновления проекта теперь выдает
отчет с тем какие шаги были применены
👉 Интеграция Google Play SDK Index - инструмент, которые предоставляет информацию о разных SDK, интегрируемые в приложения
🛠 Исправлена работа Baseline Profile для App Bundle
Инспекции
👉 Новый интерфейс Logcat включен по умолчанию
👉 App Quality Insights - интеграция Firebase Crashlytics с Android Studio
#androidstudio
Jetpack Compose
🔥 Автоматическое обновление Compose превью*
👉 Поддержка кастомных Preview аннотаций для нескольких устройств
👉 В Layout Inspector подсвечиваются проблемные UI элементы
XML UI
👉 Подсветка проблем дизайна на разных типах устройств
Сборка и зависимости
🚀 Увеличена скорость синхронизации с параллельным импортом проектов
👉 В Build Analyzer теперь показывается сколько данных загружает Gradle во время сборки
👉 Ассистент обновления проекта теперь выдает
отчет с тем какие шаги были применены
👉 Интеграция Google Play SDK Index - инструмент, которые предоставляет информацию о разных SDK, интегрируемые в приложения
🛠 Исправлена работа Baseline Profile для App Bundle
Инспекции
👉 Новый интерфейс Logcat включен по умолчанию
👉 App Quality Insights - интеграция Firebase Crashlytics с Android Studio
#androidstudio
🔥3👍2😱1
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
В Java 19 появился Project Loom - легковесные (виртуальные) потоки, некий аналог корутин из Kotlin. Автор статьи устроил эксперимент - в качестве CoroutineDispatcher он взял те, что запускают корутину на виртуальных потоках.
В рамках опыта запускается множество корутин с вызовом Thread.sleep(1000), что останавливает выполнение на 1 секунду и сравнивает работы стандарных CoroutineDispatcher с Loom.
Итог - виртуальные потоки позволят без проблем вызывать блокирующий код в неблокирюущем корутин коде вместо ограничений стандартных Dispatcher. Android такого не видать )
#coroutines
В рамках опыта запускается множество корутин с вызовом Thread.sleep(1000), что останавливает выполнение на 1 секунду и сравнивает работы стандарных CoroutineDispatcher с Loom.
Итог - виртуальные потоки позволят без проблем вызывать блокирующий код в неблокирюущем корутин коде вместо ограничений стандартных Dispatcher. Android такого не видать )
#coroutines
👍8🔥3😱1
Forwarded from AppFiles - Mobile Development
WebRTC in Jetpack Compose — этот проект демонстрирует использование протокола WebRTC для видеосвязи в реальном времени в Jetpack Compose. Цель его — реализация всего UI для видеосвязи в реальном времени с помощью Jetpack Compose, выполнение связи в реальном времени в фоновом режиме с помощью Kotlin Coroutines, понимание однорангового соединения на основе WebRTC, взаимодействие с сигнальным сервером для обмена информацией о одноранговых соединениях между клиентами.
WebRTC in Jetpack Compose на GitHub: https://github.com/GetStream/webrtc-in-jetpack-compose
Платформа: Android
⭐️: 140
WebRTC in Jetpack Compose на GitHub: https://github.com/GetStream/webrtc-in-jetpack-compose
Платформа: Android
⭐️: 140
👍6🔥1
Forwarded from StartAndroid
Первый пост из серии How Gradle Works. Рассказывают, как запускается Gradle.
#gradle
https://blog.gradle.org/how-gradle-works-1
#gradle
https://blog.gradle.org/how-gradle-works-1
blog.gradle.org
How Gradle Works Part 1 - Startup
This is the first blog of a series How Gradle Works, which includes the following topics:
👍3🤔3🔥2
Forwarded from Android Live 🤖
Дерево зависимостей Gradle
#gradle #android
Кайфовая статья, которая по шагам рассказывает про Gradle и конкретно про дерево зависимостей. Особенно будет полезно тем, кто не чувствует себя уверенно в Gradle. 🤓
На небольшой примере описывается:
- что такое зависимости и транзитивные зависимости в Gradle?
- что такое дерево зависимостей в Gradle?
- какие есть конфигурации зависимостей в Gradle?
- а также описывает несколько способов создать дерево зависимостей в вашем проекте Gradle.
#gradle #android
Кайфовая статья, которая по шагам рассказывает про Gradle и конкретно про дерево зависимостей. Особенно будет полезно тем, кто не чувствует себя уверенно в Gradle. 🤓
На небольшой примере описывается:
- что такое зависимости и транзитивные зависимости в Gradle?
- что такое дерево зависимостей в Gradle?
- какие есть конфигурации зависимостей в Gradle?
- а также описывает несколько способов создать дерево зависимостей в вашем проекте Gradle.
👍4🔥2🤔2
Forwarded from iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT (Egor Tolstoy)
Книга «Software Engineering at Google» стала бесплатной
SWE at Google – довольно популярная книга про хорошие инженерные практики, применяемые на проектах большого масштаба. Я сам до сих пор ее так и не прочитал, но от друзей слышал много хороших рекомендаций. Вон, даже Брагилевский советует!
Так в чем новость – авторы книги решили сделать ее бесплатной, так что можете посмотреть оглавление и прочитать любую главу.
SWE at Google – довольно популярная книга про хорошие инженерные практики, применяемые на проектах большого масштаба. Я сам до сих пор ее так и не прочитал, но от друзей слышал много хороших рекомендаций. Вон, даже Брагилевский советует!
Так в чем новость – авторы книги решили сделать ее бесплатной, так что можете посмотреть оглавление и прочитать любую главу.
🔥3👍2🤔2
Forwarded from iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT (Egor Tolstoy)
Почему yaml – плохой формат
Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.
Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.
Вот несколько примеров непредсказуемого поведения YAML конфигов:
*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например,
*️⃣Если где-то в конфиге встретится строчка
*️⃣Не стоит использовать
Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.
Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.
Вот несколько примеров непредсказуемого поведения YAML конфигов:
*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например,
- *.png – невалидный сниппет, так как * зарезервирована. А - !.git будет считан, как пустая строка.*️⃣Если где-то в конфиге встретится строчка
- no, она будет интерпретирована как false, а не как строка. У этого поведения есть даже свое имя – Norway problem, так как региональный код Норвегии, который часто можно встретить в таких конфигах, тоже no. Ах да, так ведет себя только самая новая версия yaml, что добавляет веселья.*️⃣Не стоит использовать
~, так как это алиас для null.Ruud van Asseldonk
The yaml document from hell
For a data format, yaml is extremely complicated. It aims to be a human-friendly format, but in striving for that it introduces so much complexity, that I would argue it achieves the opposite result. Yaml is full of footguns and its friendliness is deceptive.…
🤔3👍2🔥2
Forwarded from Android Good Reads (Egor Tolstoy)
This media is not supported in your browser
VIEW IN TELEGRAM
Пошаговая реализация Dynamic Island на Compose
Dynamic Island из iOS – спорный с точки зрения UX, но интересный с точки зрения реализации нестандартного UI компонент. Если вы ищете, на каких примерах потренироваться с анимациями на Compose, то как раз отлично подойдет.
Dynamic Island из iOS – спорный с точки зрения UX, но интересный с точки зрения реализации нестандартного UI компонент. Если вы ищете, на каких примерах потренироваться с анимациями на Compose, то как раз отлично подойдет.
👍2🔥2💯2
Forwarded from Surf Mobile Team
Windows Subsystem for Android (WSA)
В 2021 году компания Microsoft выпустила новую операционную систему Windows 11. Одна из главных фич — запуск Android-приложений внутри системы безо всяких эмуляторов. Рассказываем на карточках, как это работает.
Полезные ссылки:
🔹 Официальная документация Microsoft
🔹 Способы установки WSA
🔹 Установка GApps
🔹 Подключение по ADB и установка сторонних APK вне сторов
В 2021 году компания Microsoft выпустила новую операционную систему Windows 11. Одна из главных фич — запуск Android-приложений внутри системы безо всяких эмуляторов. Рассказываем на карточках, как это работает.
Полезные ссылки:
🔹 Официальная документация Microsoft
🔹 Способы установки WSA
🔹 Установка GApps
🔹 Подключение по ADB и установка сторонних APK вне сторов
👍6🤔3💩1