💻 Connectivity — совсем свежая библиотека Kotlin для мониторинга сети
Connectivity позволяет отслеживать сетевое подключение с помощью встроенных API на устройствах Android и Apple или путем выполнения HTTP-запросов к указанным хостам.
🖥 GitHub
@android_its
🖥 SpamBlocker
Приложение для блокировки звонков и СМС на Android
Поддерживаемые фильтры:
▫️ Номер телефона (регулярное выражение)
▫️ Наличие в контактах
▫️ Повторный звонок
▫️ Содержимое СМС (регулярное выражение)
Github
@android_its
🖥 Lindroid — новый способ использования Linux на устройствах Android
Разработчик Эрфан Абди под ником Khode_Erfan представил новый способ использования Linux на мобильных устройствах на базе Android в рамках проекта Lindroid.
Данный проект похож на обратную реализацию Waydroid, также пользователи могут задействовать полностью аппаратно поддерживаемый код Linux на своем Android в качестве рабочего приложения. Согласно пояснению автора проекта, код Linux работает внутри контейнера и имеет доступ к реальному аппаратному обеспечению смартфона.
Автор пояснил, что Lindroid поддерживает несколько дисплеев и опцию multi input, а также совместим с режимом Android desktop mode.
🖥 GitHub
@android_its
💻 kotlin-inject — библиотека Kotlin для dependency injection
Строительным блоком kotlin-inject является компонент, который объявляется с помощью аннотации @Component
в абстрактном классе, реализация этого компонента будет сгенерирована
В этом компоненте можно объявить абстрактные свойства, доступные только для чтения, или функции, возвращающие экземпляр заданного типа. И kotlin-inject разберётся, как сконструировать этот тип
🖥 GitHub
🟡 Доки
@android_its
🖥 Вот как легко можно записывать и воспроизводить аудио в Android
GitHub https://github.com/philipplackner/AudioRecorder
https://www.youtube.com/watch?v=4MJFmhcONfI
#Android
@android_its
💻 FileKit — библиотека Kotlin, которая позволяет вам выбирать и сохранять файлы простым способом
Позволяет выбирать отдельные файлы, или целые папки, позволяет учитывать нужный формат (скажем, только .png
)
Для каждой платформы FileKit использует собственный API для выбора файлов, чтобы обеспечить корректную работу.
🖥 GitHub
🟡 Затестить, как это работает
@android_its
🖥 Релиз Winlator 7.0, окружения для запуска Windows-приложений в Android, написанного на Java (и C)
Состоялся релиз открытого проекта окружения для запуска Windows-приложений в Android под названием Winlator 7.0.
Проект Android-приложения Winlator 7.0 (размер APK-пакета составляет 251 МБ) предоставляет собой обвязку над Wine и эмуляторами Box86/Box64 для выполнения Windows-приложений на платформе Android.
Инструмент Winlator разворачивает Linux-окружение на базе Ubuntu с Mesa, DXVK, D8VK, Vkd3d и CNC DDraw, в котором при помощи эмулятора и Wine на ARM-устройствах с Android выполняются Windows-приложения, собранные для архитектуры x86.
🖥 Исходный код проекта написан на языках C и Java и опубликован на GitHub под лицензией MIT.
@android_its
⚡️Руководитель команд разработки и один из разработчиков мобильного приложения Яндекс Карт рассказали, как они росли вместе с проектом. Подробнее в карточках.
Хотите так же? Это возможно 💯
Команда мобильной разработки Карт и Навигатора расширяется, и мы ищем:
➡️iOS-разработчика
#Москва #Белград #iOS
Что вы будете делать: участвовать в разработке мобильного приложения для iOS, глубоко прорабатывать задачи команды, совершенствовать процессы и инфраструктуру разработки.
➡️Android-разработчика
#Москва #Android
Что вы будете делать: участвовать в разработке мобильного приложения для Android, помогать расширять возможности существующих сценариев и создавать новые.
Приходите, будем расти вместе💪
Реклама. ООО "Яндекс", ИНН 7736207543.
💻 FlorisBoard — open-source клавиатура на Kotlin
В FlorisBoard большой упор сделан на приватность и конфиденциальность, поэтому можно без проблем использовать её в своих Kotlin проектах.
FlorisBoard поддерживается устройствами на базе Android 7.0+; проект активно развивается, сейчас находится в ранней бета-версии
🖥 GitHub
🟡 F-Droid
@android_its
💻 Compose Destinations — библиотека обработки аннотаций для безопасной с точки зрения типов навигации Jetpack Compose, не содержащая шаблонов
Compose Destinations обрабатывает аннотации и генерирует код, использующий официальную навигацию Jetpack Compose под капотом. Эта библиотека позволяет не писать вручную сложный, небезопасный и шаблонный код.
При этом Compose Destinations легко освоить — большинство API либо такие же, как в Jetpack Components, либо вдохновлены ими.
🖥 GitHub
@android_its
💻 Ktor — это асинхронный open-source фреймворк для создания микросервисов, веб-приложений и многого другого
Ktor позволяет создавать асинхронные клиентские и серверные приложения. Все, от микросервисов до многоплатформенных клиентских приложений HTTP.
Полностью написан на Kotlin.
🖥 GitHub
🟡 Доки
@android_its
💻 Coil — библиотека загрузки изображений для Android, основанная на корутинах Kotlin
Фичи Coil (Coroutine Image Loader):
⏩Скорость: Coil выполняет ряд оптимизаций, включая кэширование памяти и диска, понижение дискретизации изображения в памяти, автоматическую приостановку/отмену запросов и многое другое.
⏩Лёгкость: Coil добавляет ~2000 методов в ваш APK (для приложений, которые уже используют OkHttp и Coroutines), что сравнимо с Picasso и значительно меньше, чем Glide и Fresco.
⏩Простота использования: API Coil использует возможности языка Kotlin для простоты и минимального количества косяков.
⏩Современность: Coil ориентирован на Kotlin и использует современные библиотеки, включая Coroutines, OkHttp, Okio и AndroidX Lifecycles.
🖥 GitHub
@android_its
💻 Exposed — ORM библиотека для Kotlin
val exposed_version = "0.50.0"
dependencies {
implementation("org.jetbrains.exposed", "exposed-core", exposed_version)
implementation("org.jetbrains.exposed", "exposed-dao", exposed_version)
implementation("org.jetbrains.exposed", "exposed-jdbc", exposed_version)
}
🔥🔥🔥 Google объявила конкурс для всех разработчиков Gemini API с призовым фондом в $3 млн и Custom Electric 1981 DeLorean (Легендарная машина из фильма Назад в будущее)
В рекламе снялся легендарный Кристофер Ллойд, актер снимавшийся в трилогии Назад в будущее.
🛻 Главный приз: полностью электрическая версия DeLorean 1981, произведенная на заказ.
Общий призовой фонд: $3 млн.
Конкурс Google Gemini API открыт как для отдельных участников, так и для команд. Разработчикам предлагается создать и представить приложения с использованием API Gemini.
⚡️Критерии оценки
Google оценивает приложения по пяти основным критериям:
* Креативность
* Полезность
* Исполнение
* Новизна
* Влияние
Компания будет выбирать приложения, которые:
*Ииспользуют API Gemini
* Решают реальные проблемы
* Оригинальны и хорошо продуманы
* Дают потяьный пользовательский опыт
Призы
В рамках конкурса также будут вручаться денежные призы в различных категориях:
* Лучшее приложение для Android
* Лучшее веб-приложение
* Лучшая игра
Кроме того, будут присуждаться крупные денежные призы за:
* Самое полезное приложение
* Самое эффективное приложение
* Самое креативное приложение
Крайний срок подачи заявок
Крайний срок подачи заявок: 12 августа 2024 года.
Онлайн-голосование в категории «Выбор пользователей» ожидается 16 августа.
В остальных категориях победителей выберет внутренняя команда Google. Результаты конкурса Gemini API будут объявлены в октябре.
📌 Подать заявку: https://ai.google.dev/competition?hl=ru
📌 Видео: https://www.youtube.com/watch?v=_cZa_7KaQ3c&t=18s
@ai_machinelearning_big_data
📱 Google меняет способ обновления Android Studio с помощью Feature Drops
Google обновляет цикл выпуска инструмента для создания приложений Android Studio. С помощью Feature Drops разработчики получат «более частые и целенаправленные обновления».
Первое обновление включает новейшие возможности платформы IntelliJ IDEA компании Jetbrains, на которой основана Android Studio. Сюда входят «улучшения удобства использования, производительности и стабильности», такие как обновления терминала и редактора.
Эти изменения появятся в стабильном канале быстрее, чем это происходило ранее.
Затем последует выпуск функций, в том числе инструментов, помогающих тестировать/оптимизировать форм-фактор большого экрана. Бета-версия станет доступна вскоре после того, как обновление платформы IDE выйдет в стабильном канале. В предстоящем выпуске функций Koala Feature Drop будут добавлены:
— новый процесс входа в систему, который значительно упрощает подключение к нескольким сервисам Google, таким как Firebase и Gemini, в Android Studio;
— ярлыки настроек пользовательского интерфейса в окне работающего устройства для быстрого тестирования приложения на соответствие различным настройкам пользовательского интерфейса;
— шаблон Gemini API, который поможет внедрить генеративный искусственный интеллект в приложение.
Дополнительные функции будут анонсированы на I/O 2024, то есть в ближайший вторник
📎 Подробнее
@android_its
⚡️Лучший способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
C#: t.me/csharp_ci
Машинное обучение: t.me/ai_machinelearning_big_data
АНАЛИЗ Данных: t.me/data_analysis_ml
Хакинг: t.me/linuxkalii
Linux: t.me/linuxacademiya
Базы данных: t.me/sqlhub
C++ t.me/cpluspluc
Golang: t.me/Golang_google
Java: t.me/javatg
React: t.me/react_tg
Javascript: t.me/javascriptv
Мобильная разработка: t.me/mobdevelop
Docker: t.me/+0WdB4uvOwCY0Mjdi
Python: t.me/pythonl
Rust: t.me/rust_code
PHP: t.me/phpshka
Android: t.me/android_its
Big Data: t.me/bigdatai
Devops: t.me/devOPSitsec
Собеседования МЛ: t.me/machinelearning_interview
Python подготовка с собесу: t.me/python_job_interview
МАТЕМАТИКА: t.me/data_math
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
C++ папка: /channel/addlist/CdBs5DLepLJmZjY6
C# папка: /channel/addlist/u15AMycxRMowZmRi
Java папка: /channel/addlist/ZM3J6oFNAnRlNWU6
FRONTEND папка: /channel/addlist/mzMMG3RPZhY2M2Iy
Linux папка: /channel/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
📕Ит-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
💻 LibreTube — альтернативный Android-клиент для YouTube на Kotlin
Если кто не в теме, у YouTube крайне агрессивная политика конфиденциальности, которая предполагает не самое этичное использование данных пользователей.
YouTube хранит слишком много личных данных — от идей, музыкальных предпочтений, контента до политических взглядов и многого другого.
LibreTube призван сохранить конфиденциальность пользователей, проект заточен под обход механизмов Google для сбора данных.
LibreTube опирается на Piped API, который использует прокси-серверы для обхода сбора данных Google и включает в себя некоторые другие дополнительные функции.
🖥 GitHub
@android_its
📱 Вышла 3 бета-версия Android 15 с улучшениями для автономности, ИИ и конфиденциальности
С состоявшимся на днях выпуском Android 15 Beta 3 ОС получила статус Platform Stability — это значит, что API для разработчиков и связанное с приложениями поведение платформы меняться больше не будут, а ориентированные на Android 15 программные продукты уже могут выпускаться в Google Play.
Третья бета-версия Android 15 открывает новые возможности работы с медиаданными и ИИ, возможности использовать нестандартные формфакторы устройств; повышены эффективность аккумуляторов и стабильность работы приложений, повысились конфиденциальность и безопасность пользователей — и всё это коснулось разных линеек устройств.
При входе в учётные записи в оптимизированных для Android 15 приложений основным способом авторизации стали ключи доступа с защитой через биометрию или код блокировки — при его отклонении система предложит альтернативные варианты входа; все доступные варианты покажет системная клавиатура или выпадающие списки в полях ввода учётных данных. Сторонние разработчики смогут обращаться к системному механизму аутентификации.
Компонент Android WebView лишился поддержки WebSQL — параметры setDatabaseEnabled и getDatabaseEnabled считаются устаревшими. Ранее технология WebSQL была удалена из Chrome, теперь она перестанет работать в Android WebView. В ближайшие 12 месяцев эти методы будут деактивированы во всех версиях Android.
Google также призвала разработчиков обратить внимание на несколько важных технических нововведений Android 15. В частности, изменилось поведение состояния пакета FLAG_STOPPED: приложения сохраняют статус остановленных до тех пор, пока пользователь их не запустит или не осуществит с ними косвенное взаимодействие. Система также получила поддержку страниц памяти размером 16 кбайт — если при разработке приложения использовались инструменты Android Native Development Kit (NDK), которые открывают доступ к физическим компонентам устройства, то такие приложения придётся перекомпилировать с учётом поддержки страниц размером 16 кбайт. В Android 15 появилась функция «Личное пространство» (Private Space) — пространство на устройстве, в котором можно под дополнительным уровнем аутентификации хранить конфиденциальные приложения.
📎 Подробнее
@android_its
💻 KotlinPoet — это Kotlin и Java API для генерации исходных файлов `.kt`
<dependency>
<groupId>com.squareup</groupId>
<artifactId>kotlinpoet-jvm</artifactId>
<version>[version]</version>
</dependency>
💻 0day в Pixel: Google выпускает экстренный патч для своих смартфонов
Вслед за уже привычным Patch Tuesday от Microsoft, компания Google также выпустила обновления для устранения 50 уязвимостей безопасности в своих устройствах Pixel и предупредила, что одна из них, отслеживаемая как CVE-2024-32896, представляет собой ошибку повышения привилегий (EoP) и уже использовалась в реальных атаках в качестве Zero-day уязвимости.
«Есть признаки того, что CVE-2024-32896 уже могла быть использована ранее в ограниченных целевых атаках», — предупредила компания. «Все поддерживаемые устройства Google получат обновление до уровня патча 2024-06-05. Мы призываем всех пользователей Pixel незамедлительно установить эти обновления на свои устройства».
Google также отметила 44 других ошибки безопасности, непосредственно касающиеся устройств Pixel. Семь из них представляют собой уязвимости повышения привилегий и считаются критическими.
Устройства Pixel, хотя и работают на Android, получают отдельные обновления безопасности и исправления ошибок, отличные от стандартных ежемесячных патчей, распространяемых для всех производителей Android-устройств. Это связано с их эксклюзивными функциями и возможностями, а также уникальной аппаратной платформой, контролируемой лично Google.
Более подробную информацию об июньских обновлениях для Pixel можно найти в бюллетене безопасности, посвящённом смартфонам Google. А чтобы применить обновление, пользователям Pixel необходимо перейти в «Настройки» > «Безопасность и конфиденциальность» > «Система и обновления» > «Обновление безопасности», нажать «Установить» и перезагрузить устройство для завершения процесса обновления.
@android_its
Последняя неделя регистрации на Yandex BDUI Conf! 🎉
22 июня Яндекс проведёт большую конференцию для мобильных разработчиков по BDUI
Вместе со спикерами из Яндекса, Яндекс Маркета, Авито, X5 Tech и ВСК будем разбираться, как с помощью бэкенда сделать красивые и функциональные приложения. В программе:
— 2 трека с докладами: продуктовый и инфраструктурный;
— активности от Яндекс Маркета с подарками;
— экскурсия по офису Яндекса на «Парке культуры»;
— афтерпати с нетворкингом и музыкой.
Зарегистрироваться можно на сайте конференции. Она пройдёт 22 июня в Москве в «Экстрополисе». Если не получится присутствовать очно, присоединяйтесь к нашей трансляции!
До встречи на Yandex BDUI Conf — будет здорово! 👋
💻 ImageToolbox — мощный open-source редактор изображений на Kotlin
ImageToolbox может обрезать картинки, применять фильтры, добавлять другие изображения, удалять фон, редактировать EXIF и даже создавать PDF-файлы
🖥 GitHub
@android_its
💻 voyager — мультиплатформенная навигационная библиотека для Jetpack Compose
Позволяет создавать масштабируемые приложения на Kotlin на основе удобного API
🖥 GitHub
@android_its
💻 KODEIN — удобная библиотека Kotlin для управления зависимостями
dependencies {
implementation 'org.kodein.di:KODEIN:7.21.1'
}
val di = DI {
bindProvider<Dice> { RandomDice(0, 5) }
bindSingleton<DataSource> { SqliteDS.open("path/to/file") }
}
class Controller(private di: DI) {
private val ds: DataSource by di.instance()
}
💻 kotlin-logging — легковесный фреймворк для логгирования, написанный на чистом Kotlin
— implementation 'io.github.oshai:kotlin-logging-jvm:5.1.0'
kotlin-logging предоставляет обертку для slf4j-api для использования классами Kotlin; при этом kotlin-logging имеет такие преимущества:
— нет необходимости писать шаблонный код, содержащий имя логгера и класса или имя логгера
— простой способ регистрации сообщений в виде строки с ленивой оценкой с помощью лямбда-выражения {}
— все предыдущие реализации slf4j по-прежнему могут быть использованы
🖥 GitHub
🟡 Wiki
@android_its
💻 LeakCanary — библиотека Kotlin для обнаружения утечек памяти
При анализе кода LeakCanary опирается на внутреннее устройство Android Framework, что позволяет определить причину каждой утечки
В итоге можно свести к минимуму количество зависаний, Application Not Responding
и сбоев OutOfMemoryError
🖥 GitHub
@android_its
💻 fmodel — функциональное, алгебраическое и реактивное моделирование доменов с помощью Kotlin
Библиотека fmodel написана на чистом Kotlin без зависимостей
🖥 GitHub
🟡 Страничка fmodel
@android_its
💻 detekt — статический анализатор кода на Kotlin
— brew install detekt
detekt предоставляет высококонфигурируемые наборы правил, имеет бесшовную интеграцию с Gradle от первого лица с помощью плагина Gradle, и предоставляет ещё массу возможностей.
Поддерживает различные форматы отчетов: HTML, Markdown, SARIF, XML (Checkstyle) и кастомные форматы.
🖥 GitHub
🟡 Доки
@android_its
💻 Кинетические часы — интересный проект на Kotlin
Отличная идея для пет-проекта)
Создано с использованием Compose Desktop
🖥 GitHub
@android_its
💻 Вопрос на засыпку: какого типа x = null + null?
▶️Какой тип имеет x
в выражении:
val x = null + null
public operator fun String?.plus(other: Any?): String
null
, а правый — вообще любые значения Kotlin, включая null
.val s: String? = null
val x: String = s + null
x
можно вот так:fun main() {
val x = null + null
println(x::class.simpleName)
}
// String