Z-Warp — это эталонный пример того, как полностью исключить виртуальную машину Java (Dalvik/ART) из графического конвейера Android. Проект реализует прямой перехват аппаратного слоя дисплея через NativeActivity, обеспечивая экстремально низкие задержки для графических систем на базе WGPU, SPIR-V, GLSLANG и MLIR IR.
Разработано на производственной линии в Цюрихе (Z-Console Environment).
- Операционная система: Android 16+ (Обязательная поддержка
16KB Memory Page Alignment). - Целевая архитектура: ARM64 (aarch64).
- Протестированное оборудование (Target): Samsung Galaxy Z Flip 7 (Exynos 2500 / GPU Xclipse 950 RDNA 3.5).
- Требования к дисплею: Поддержка аппаратного буферизованного рендеринга (Eco² OLED Plus, 120Hz).
- Инструментарий сборки: Bare-metal Clang, Rust (Cargo), Zig,
aapt,apksigner, Shizuku (для Rootless-установки через IPC Binder). Никаких Android Studio или Gradle.
Приложение загружается системой Android без единого байта Java-кода.
- Монолитная статическая линковка: Ядро логики на Rust (
libzwarp_core.a) аппаратно вшито внутрь C-моста (libzwarp_native.so). - Bypass SELinux & Userland: Сборка напрямую ссылается на физические драйверы
/system/lib64/libEGL.soиlibGLESv2.so, игнорируя конфликтующие X11-драйверы среды Termux. - Выравнивание памяти (Memory Mapped I/O): Флаг
-Wl,-z,max-page-size=16384гарантирует, что страницы памяти ELF-библиотеки ложатся ровно в 16-килобайтную сетку ядра Android 16, исключая сбоиSIGSEGVвSurfaceFlinger. - ABI Type Casting: Жесткое приведение типов указателей окна
(EGLNativeWindowType)(uintptr_t)гарантирует совместимость 64-битных регистров дисплея между стандартами Mesa (X11) и SurfaceFlinger (Android).
- Rust Core Compilation: Сборка статической библиотеки
libzwarp_core.aчерезcargoпод таргетaarch64-linux-android. - Native Glue Injection: Интеграция сырых C-исходников графического моста (
android_native_app_glue.c). - Clang Linkage: Сборка монолита
.soс выравниванием страниц 16KB и абсолютными путями к системным драйверам. - Manifest Generation: Создание
AndroidManifest.xmlс директивойandroid:extractNativeLibs="true"(критично для Android 16). - Zero-SDK Packaging: Упаковка через
aapt, используя системныйframework-res.apkсамого устройства вместо тяжеловесногоandroid.jar. - Crypto Signing & IPC Install: Подпись
apksignerс кастомным ключом монополиста и прямая инсталляция в системный раздел через демона Shizuku (rish).
Хотя код откалиброван под Exynos 2500, архитектура является портативной.
- XR/AR Гарнитуры (Snapdragon AR2 / Adreno): Виртуальная и дополненная реальность критически чувствительны к задержкам. Сборка мусора (Garbage Collection) в Java вызывает микро-фризы (stutters). Данный C/Rust монолит позволяет рендерить SPIR-V шейдеры напрямую, удерживая стабильные 90-120 FPS без просадок.
- Встраиваемые системы (Embedded IoT & Kiosks):
На кастомных AOSP-сборках для умных дисплеев или индустриальных панелей можно вырезать весь
SystemUIи запускать Z-Warp как единственное приложение поверх графического буфера. - Мобильный ML и вычисления (MLIR / OpenCL): Исключение JVM позволяет передавать тензоры из оперативной памяти напрямую в регистры GPU (Zero-Copy Transfer), что критично для запуска локальных LLM на мобильных устройствах.
Любой инженер может использовать этот каркас как основу для портирования движков (например, Bevy, WGPU, кастомных физических симуляторов на Zig/Odin/Forth). Достаточно заменить тело функции draw_frame() в android_main.c на инициализацию собственного графического конвейера.