Приложения

Что такое Kotlin (Android)

Что это

Основной язык приложений для Android. Нативное приложение на Kotlin работает быстрее и надёжнее «обёрток» над сайтом и имеет доступ ко всему оборудованию телефона.

Как используем

На Kotlin написаны аудиоплеер OshaPlay с выводом на USB-ЦАП и VPN-клиент OshaVPN. Сборки подписаны и обновляются по воздуху.

Где нативное приложение нужно бизнесу

  • Нужен доступ к оборудованию телефона: USB-устройству, системному VPN, фоновой работе, которой нет у сайта.
  • Приложение должно работать в фоне часами: играть музыку, держать туннель, отправлять отчёты.
  • Пользователю нужна одна кнопка, а всё сложное приложение делает само.
  • Приложение раздаётся своим людям ссылкой, без магазина, и обновляется само.

Как мы это используем

  • OshaPlay — аудиоплеер для Android 12 и новее. Сам забирает USB-ЦАП через USB Host API и отдаёт трек бит в бит в обход системного микшера, который иначе пересчитывает любой звук к 48 кГц. Интерфейс на Jetpack Compose, воспроизведение на Media3, поток на ЦАП и ресемплер на C++. Проверка подделок Hi-Res строит спектр прямо в Kotlin.
  • OshaVPN — VPN-клиент для Android 10 и новее с одной кнопкой «Подключить». Оба VPN-ядра собраны в одну библиотеку, вход выбирается гонкой, российские сайты идут напрямую. Экран «Почти готово» собирает нужные разрешения, а главный экран напоминает включить системную «постоянную VPN».

Оба приложения ставятся из APK и обновляются по воздуху. Разработка — в разделе Приложения для Android и Windows.

Типичные проблемы

  • Оболочка производителя усыпляет приложение. На Huawei звук заикался при выключенном экране: оболочка EMUI замораживала плеер на секунды. Нашли по отчётам с телефона, вернули очередь аудио к 0,4 с и добавили в настройки кнопки «Запуск приложений EMUI» и «Экономия батареи» с объяснением.
  • Эмулятор — не телефон. Прямой вывод на ЦАП в эмуляторе проверен только для случая «ЦАПа нет», реальная работа видна по отчётам с телефона заказчика. Поэтому тестовые сборки и журналы собираем с реальных устройств.
  • Версия Android ограничивает возможности. Встроенный вывод бит в бит на USB появился только в Android 14, на Android 12 его пришлось писать самим.
  • Разрешения. Без нужных разрешений фоновая работа и VPN молча не работают, поэтому приложение само ведёт пользователя по ним.

Когда это не нужно

Если задача — показать каталог, принять заявку или дать кабинет, хватит сайта или Telegram Mini App: их не нужно устанавливать и обновлять. Нативное приложение оправдано там, где нужны оборудование, фоновая работа или системные функции телефона.

← Все термины

Нужен сайт, бот или автоматизация?

Термины объяснили — теперь давайте к делу: расскажите о задаче, а мы переведём её на понятный план работ.