← На главную

Опенсорсный APK Gander открывает файлы без интернета и разрешений

31.07.2026 05:45 · hackernews

Gander — крошечное опенсорс-приложение, которое открывает почти всё на Android без единого разрешения и без интернета. Один APK размером около 15 МБ умеет показывать PDF, Word, Excel, PowerPoint, фото, видео, аудио, Markdown, текст и код — полностью на устройстве, без облаков и рекламы. Приложение не держит даже разрешения INTERNET, так что утечка данных невозможна в принципе.

Под капотом каждый формат рендерится своим движком. PDF открывает нативный Pdfium. Документы .docx, .xlsx, .pptx и электронные таблицы вплоть до .xls, .xlsm, .ods обрабатываются офлайн в песочнице WebView: docx-preview для Word, SheetJS для Excel, PPTXjs для слайдов. Фото — от JPG и HEIC до анимированных GIF и AVIF — использует тайловый рендеринг с глубоким зумом через SubsamplingScaleImageView. Видео и аудио всех ходовых форматов, включая MP4, MKV, FLAC и Opus, отданы Media3 ExoPlayer. Markdown превращается в форматированный HTML связкой marked + DOMPurify, а код и текст — в простой текстовый просмотрщик. Не поддерживаются только древние бинарные .doc и .ppt: офлайн-рендерера для них нет, приложение само предлагает пересохранить файлы в .docx или .pptx; бинарный .xls при этом читается.

Секрет нулевых разрешений — в использовании Storage Access Framework и интентов «Open with». Система сама отдаёт приложению только выбранный файл, не давая доступа ко всему хранилищу. Все запросы WebView перехватывает WebViewAssetLoader: JS-библиотеки грузятся из ассетов приложения, а содержимое документа стримится напрямую из content URI, без касания сетевого стека. Просмотр папок работает через одноразовый грант ACTION_OPEN_DOCUMENT_TREE (стоит учесть, что Android не даёт корень Downloads, нужно указать Documents, DCIM или подпапку).

Интерфейс построен на Material 3 с тёмной темой и edge-to-edge, поддерживается Android 8.0+. На главном экране — недавние файлы с превьюшками и доступные папки, есть поиск внутри документов, зум и плавный скроллинг. Установка — через APK с GitHub Releases (архитектура arm64 или universal для старых устройств). Автообновления без магазина можно настроить через Obtainium, указав репозиторий mokshablr/gander. Сборка требует JDK 17+ и Android SDK platform 35. Код ViewerActivity маршрутизирует файл по расширению и MIME в один из четырёх рендереров: Pdfium, тайловое фото, ExoPlayer или песочницу WebView. Само приложение распространяется под MIT, а встроенные библиотеки — под MIT, Apache-2.0 или BSD.

Читать оригинал →