Skip to content

Instantly share code, notes, and snippets.

@git58
Created February 10, 2026 13:22
Show Gist options
  • Select an option

  • Save git58/7a47862539ed8c38148619135da51c6d to your computer and use it in GitHub Desktop.

Select an option

Save git58/7a47862539ed8c38148619135da51c6d to your computer and use it in GitHub Desktop.

Этот бизнес-план фокусируется на создании Native-First экосистемы. Мы будем использовать Android лишь как временную «несущую частоту», выжимая из неё максимум возможностей при помощи C++ и Qt, не погружаясь в её родной стек.


Бизнес-план: "Native Sailfish Legacy" (Android-Phase)

1. Концепция: "Pure C++ Survival"

Цель: Создать набор приложений, которые на 100% состоят из нативного кода (C++/QML), используя стандартные средства сборки Linux-мира (CMake). Философия: Игнорирование Dalvik/ART (виртуальной машины Android) везде, где это технически возможно. Использование Qt Android Extras / QJniObject как «хирургического инструмента» для разовых обращений к системным функциям.


2. Технологический стек "No-Java"

Слой Технология Роль
Интерфейс QML (Qt 6) Реактивный UI, жесты, анимации «стеклянного» интерфейса.
Логика C++ 20 Обработка данных, бизнес-логика, работа с сетью.
Сборка CMake Единственный инструмент управления проектом (замена Gradle для разработчика).
Связь с ОС QJniObject C++ обертка, позволяющая дергать Android API без написания .java файлов.
Графика RHI (Vulkan/GLES) Прямой рендеринг через драйвер Adreno (Freedreno-ready).

3. Операционный план (Roadmap приложений)

Модуль 1: "The Communicator" (Звонилка + Контакты)

Это фундамент. Мы используем Qt-классы для интерфейса и JNI-вызовы для доступа к телефонной книге.

  • Техническая фишка: Перехват интентов звонков напрямую в C++ через QAndroidActivityResultReceiver.
  • Результат: Приложение, которое выглядит как Sailfish, но звонит как Pixel.

Модуль 2: "The Observer" (Рабочий стол / Launcher)

Замена домашнего экрана Android.

  • Задача: Реализовать «Active Covers». Поскольку в Android нельзя реально управлять окнами других приложений без Java, мы реализуем это для своих приложений через общую память (Shared Memory).
  • Результат: Свайп слева направо открывает сетку ваших Qt-приложений.

Модуль 3: "The Core" (Настройки и Система)

Управление яркостью, Wi-Fi и звуком.

  • Метод: Использование системных команд dbus-send (через QProcess) или прямых вызовов системных сервисов Android через JNI.

4. Схема сборки "Invisible Gradle"

Чтобы Gradle не раздражал вас своим присутствием, мы настраиваем CMake-centric процесс:

  1. Вы работаете только с CMakeLists.txt.
  2. Qt Creator при сборке создает скрытую папку android-build.
  3. Там автоматически генерируется шаблонный манифест.
  4. Gradle запускается как «черный ящик» одной командой, просто чтобы упаковать ваши .so библиотеки (бинарники C++) в .apk.

5. Как вы будете обходиться без Java (Пример)

Вместо того чтобы писать Java-класс для получения уровня батареи, вы пишете это в C++:

// Чистый C++, никакой магии Java
int getBatteryLevel() {
    QJniObject action = QJniObject::fromString("android.intent.action.BATTERY_CHANGED");
    QJniObject filter = QJniObject::newInstance("android/content/IntentFilter", 
                                                "(Ljava/lang/String;)V", 
                                                action.object<jstring>());
    // ... и так далее, всё внутри вашего .cpp файла
}

6. Риски и их минимизация

  • Риск: "Google требует специфический Java-код для новых разрешений Android 15".

  • Решение: Использование готовых библиотек-оберток от сообщества KDE/Nemo, которые уже упаковали этот код в C++ классы.

  • Риск: "Gradle-ошибки при сборке".

  • Решение: Использование стабильной версии NDK, зафиксированной в вашем бизнес-плане, чтобы версия Gradle никогда не менялась вручную.


7. KPI: Финал "Dual-Stack" фазы

Вы считаете фазу успешной, если:

  1. У вас есть один репозиторий, в котором нет ни одного .java или .kt файла.
  2. Вы запускаете проект на Fedora (x86) — он работает.
  3. Вы подключаете Pixel 5a, нажимаете "Run" в Qt Creator — и через 20 секунд у вас в руках телефон с интерфейсом Sailfish.

Ваш следующий шаг: Давайте создадим ваш первый "Pure C++" проект. Я могу подготовить для вас CMakeLists.txt, который настроен на сборку Android APK так, чтобы вы больше никогда не вспоминали о Gradle.

Хотите шаблон проекта, где всё управление идет через CMake?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment