y83 projects / 07 / android

Y83 FileCode — рабочие файлы на телефоне в одном приложении

в релизе · 2026

Редактор кода с подсветкой 20+ языков, просмотрщики изображений, PDF, Markdown, текста и HTML, видео- и аудиоплееры, открытие Word и Excel внутри приложения, ZIP-операции и редактор фото. Всё на Jetpack Compose, без Google Play — обновление через sideload.

версия
1.10.5 (versionCode 31)
Kotlin
12 528 строк
тесты
70 · 0 failures
SDK
compileSdk 36 / minSdk 26

продукт

Один контур вместо набора отдельных приложений

Задача

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

Решение

Навигация по хранилищу через Storage Access Framework, свои просмотрщики и редакторы внутри приложения, потоковый разбор больших xlsx и docx, редактор фото с историей правок.

Следствие

Главное здесь не функции, а релиз: версия живёт в VERSION, рядом CHANGELOG по версиям, артефакты лежат в build/apk/<версия>/ с SHA256SUMS, есть симлинк на последнюю сборку и update.json для автообновления. Плюс четыре документа: сборка, подпись, лицензии, тесты.

возможности

Что умеет

Функциональность здесь не главное — важнее то, что приложение доведено до релиза.

Работа с файлами

Навигация по хранилищу

Доступ через Storage Access Framework («Все файлы», API 30+) с сохранением прав между запусками.

  • saf

Редактор кода

Подсветка синтаксиса 20+ языков.

  • editor

Свои просмотрщики

Изображения со слайд-шоу и зумом, PDF, Markdown, текст, HTML — без отправки наружу.

  • viewer

ZIP и анализ хранилища

Операции с архивами и разбор того, что занимает место.

  • zip

Медиа и документы

Видео и аудио

Встроенные плееры на Media3 / ExoPlayer с чтением метаданных.

  • media3

Word внутри приложения

docx: заголовки, списки, жирный, курсив, зачёркивание, ссылки, цитаты, код и таблицы через mammoth.

  • docx

Excel внутри приложения

xlsx: все листы, закреплённая строка, зебра, даты, объединённые ячейки. Парсинг потоковый, строка за строкой.

  • xlsx

Редактор фото

Обрезка, поворот, фильтры, регулировка, отмена и повтор правок.

  • photo

Релиз

Версия и changelog

VERSION рядом с CHANGELOG.md по версиям — состояние релиза видно по репозиторию.

  • release

Подписанные сборки

Артефакты в build/apk/<версия>/ с SHA256SUMS и симлинком на последнюю версию.

  • signing

Автообновление

Свой чекер версий и манифест update.json для sideload — без Google Play.

  • update

Документация

docs/build.md, docs/signing.md, docs/licenses.md, docs/tests.md.

  • docs

как работает

Путь файла

01

Доступ

Приложение получает разрешение на хранилище через SAF.

02

Выбор

Пользователь открывает файл — приложение само выбирает просмотрщик по расширению.

03

Разбор

xlsx разбирается потоково, docx конвертируется, медиа читается плеером.

04

Правка

В редакторе кода и фото изменения отменяются и повторяются.

результаты

12,5k

строк Kotlin

55 файлов
70

тестов, 0 failures

11 файлов, по пакетам data/viewer/editor
20+

языков подсветки

в редакторе кода
1.10.5

текущая версия

versionCode 31

Цифры сверены с кодом проекта 2026-09-30.

экраны

Как это выглядит

Здесь появятся настоящие скриншоты.

листайте вбок · 8 экранов

Список файлов

Список файлов

навигация по хранилищу

Просмотр изображения

Просмотр изображения

слайд-шоу и зум

Редактор кода

Редактор кода

подсветка 20+ языков

Документ docx

Документ docx

открывается внутри приложения

Книга xlsx

Книга xlsx

листы и закреплённая строка

Видеоплеер

Видеоплеер

Media3 / ExoPlayer

Редактор фото

Редактор фото

правки с отменой

Обновление

Обновление

чекер версий и update.json

технологии

Из чего собрано

Язык и UI

  • Kotlin
  • Jetpack Compose
  • Material 3
  • Navigation Compose

Медиа и документы

  • Media3 / ExoPlayer
  • metadata-extractor
  • mammoth (BSD-2)

Архитектура

  • single-activity
  • MVVM
  • ViewModel + Compose
  • Storage Access Framework

Сборка и релиз

  • Gradle Kotlin DSL
  • JUnit
  • SHA256SUMS
  • update.json (sideload)

этапы

Что сделано и что дальше

этап 1

Файлы и просмотр

навигация, редактор кода, основные просмотрщики

этап 2

Документы и медиа

docx, xlsx, плееры, редактор фото

этап 3

Релиз-инфраструктура

версии, подпись, SHA256SUMS, автообновление

этап 4

Модульная декомпозиция UI

разделение главного экрана навигации на изолированные фича-пакеты и расширение фоновых архивных операций

вопросы

Частые вопросы

Почему ещё один файловый менеджер?

Сценарии взяты из проверенных продуктовых решений, а реализация собрана как единый Android-контур: файловые операции, парсеры docx и xlsx, просмотрщики, редакторы и плееры работают внутри одного приложения на Compose.

Что здесь самое интересное технически?

Потоковый разбор больших xlsx: XML листа читается построчно, а не загружается в память целиком. Это то, что отличает рабочее приложение от демо.

Зачем приложение, если есть файловые менеджеры?

Своё нужно там, где стандартное отправляет документ наружу: docx и xlsx открываются внутри приложения, а не в чужой программе. Плюс редактор кода на телефоне и sideload-обновления без Google Play.

Y83 FileCode

Есть вопрос по проекту?

Автономный мобильный контур для файлов, документов, кода и медиа: навигация по хранилищу, редактор на 20+ языках, просмотр docx/xlsx/PDF, плееры и фото-редактор в одном приложении. Подписанные сборки и sideload-обновления доводят продукт до релиза без Google Play.

@xipovski xipovski@gmail.com
следующий проект Y83 Music