Skip to content

Latest commit

 

History

History
93 lines (63 loc) · 4.2 KB

File metadata and controls

93 lines (63 loc) · 4.2 KB

AChimera

AChimera — это экспериментальный прокси-клиент на базе Android + Kotlin/Jetpack Compose + Rust/UniFFI. В текущем репозитории уже есть базовые возможности: Android-интерфейс, точка входа VPN-сервиса, импорт и проверка конфигурации, мост к Rust-ядру, просмотр логов и панель узлов. Цель проекта — разделить мобильный интерфейс и сетевое ядро на понятную многомодульную структуру. Текущее название приложения — Chimera Lite. Пакет включает как Android UI-слой, так и Rust-ядро, экспортируемое в Kotlin через UniFFI.

Поддерживаемые протоколы

  • hysteria2
  • reality
  • xhttp
  • trojan
  • vless
  • tls+ws

Технологический стек

  • Android SDK 36
  • Kotlin + Jetpack Compose
  • Java 25 Toolchain
  • Rust 2024
  • UniFFI
  • cargo-ndk
  • clash-lib как зависимость Rust-ядра

Требования

Перед локальной сборкой необходимо подготовить как минимум:

  • JDK 25
  • Android SDK 36 и Build Tools 36.0.0
  • Android NDK 29.0.14206865
  • Rust toolchain
  • cargo-ndk

Рекомендуется настроить один из следующих вариантов, чтобы Gradle мог найти SDK/NDK:

  • sdk.dir в local.properties и при необходимости ndk.dir
  • или ANDROID_SDK_ROOT
  • или ANDROID_HOME
  • при необходимости ANDROID_NDK_HOME / ANDROID_NDK_ROOT

Установка cargo-ndk:

cargo install cargo-ndk --locked

Локальная сборка

Сборка Debug APK:

.\gradlew assembleDebug

Запуск проверок качества:

.\gradlew testDebugUnitTest lintDebug

Сборка Release APK:

.\gradlew assembleRelease

Модуль core автоматически выполняет две задачи перед компиляцией Android:

  1. Использует cargo ndk для сборки chimera-ffi под Android ABI
  2. Запускает uniffi-bindgen на основе сгенерированной динамической библиотеки и выводит Kotlin-привязки

Текущее состояние и ограничения

Проект все еще развивается, и README описывает только то, что уже реализовано в текущем репозитории. Судя по существующим строкам и реализации, по-прежнему известны некоторые ограничения:

  • после остановки VPN текущее поведение может перезапускать приложение, чтобы избежать небезопасного состояния выполнения
  • некоторые настройки после смены конфигурации начинают полностью работать только после перезапуска VPN
  • clash-rs / clash-lib все еще ограниченно совместим с частью конфигураций mihomo

Лицензия

Проект использует файл LICENSE в корне репозитория.

Участие

  • Если у вас возникли проблемы при использовании или вопросы по реализации, смело открывайте Issue или PR.
  • Даже если вы совсем новичок, после прочтения wiki можно продолжать задавать более конкретные вопросы.
  • Проект также надеется привлечь больше разработчиков к дальнейшему улучшению.

Если проект оказался полезным, можно поставить star 🧡