Skip to content

Latest commit

 

History

History
93 lines (63 loc) · 3.92 KB

File metadata and controls

93 lines (63 loc) · 3.92 KB

AChimera

AChimera یک پروژه آزمایشی کلاینت پراکسی بر پایه Android + Kotlin/Jetpack Compose + Rust/UniFFI است. این مخزن در حال حاضر قابلیت‌های پایه‌ای مانند رابط کاربری اندروید، ورودی سرویس VPN، ورود و اعتبارسنجی پیکربندی، اتصال به هسته Rust، مشاهده لاگ و پنل نودها را دارد. هدف پروژه این است که تجربه موبایل و هسته شبکه زیرین را به یک ساختار چندماژولی شفاف تقسیم کند. نام فعلی برنامه Chimera Lite است و این بسته هم لایه رابط کاربری اندروید و هم هسته Rust را که از طریق UniFFI برای Kotlin ارائه می‌شود در بر می‌گیرد.

پروتکل‌های پشتیبانی‌شده

  • 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 پیش از کامپایل اندروید به‌طور خودکار دو کار انجام می‌دهد:

  1. با استفاده از cargo ndk، chimera-ffi را برای Android ABI می‌سازد
  2. بر اساس کتابخانه پویا تولیدشده، uniffi-bindgen را اجرا می‌کند و bindingهای Kotlin را خروجی می‌دهد

وضعیت فعلی و محدودیت‌ها

این پروژه همچنان در حال توسعه است و README فقط آنچه را توصیف می‌کند که در مخزن فعلی پیاده‌سازی شده است. با توجه به رشته‌ها و پیاده‌سازی فعلی، هنوز چند محدودیت شناخته‌شده وجود دارد:

  • پس از توقف VPN، پیاده‌سازی فعلی ممکن است برای جلوگیری از وضعیت ناایمن زمان اجرا برنامه را ری‌استارت کند
  • برخی تنظیمات پس از تغییر پیکربندی فقط با ری‌استارت VPN به‌طور کامل اعمال می‌شوند
  • clash-rs / clash-lib هنوز با برخی پیکربندی‌های mihomo سازگاری محدودی دارد

مجوز

پروژه از فایل LICENSE در ریشه مخزن استفاده می‌کند.

مشارکت

  • اگر در استفاده یا پیاده‌سازی با مشکلی روبه‌رو شدید، می‌توانید Issue یا PR ثبت کنید.
  • حتی اگر کاملا تازه‌کار هستید، بعد از مطالعه wiki می‌توانید پرسش‌های دقیق‌تری مطرح کنید.
  • این پروژه همچنین امیدوار است توسعه‌دهندگان بیشتری را برای بهبود آن جذب کند.

اگر این پروژه برایتان مفید بود، خوشحال می‌شویم به آن star بدهید 🧡