# Shevery
[](https://github.com/HmnDev-Tech/shevery/stargazers) [](https://github.com/HmnDev-Tech/shevery/network/members) [](https://github.com/HmnDev-Tech/shevery/releases) [](https://t.me/hmndevtech)
[English](README.md) | [Русский](README.ru.md) | [Қазақша](README.kk.md) | [Qazaqşa (Latın)](README.kk-Latn.md) | [Português](README.pt.md) | [Español](README.es.md) | [العربية](README.ar.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md)
## Форк мәртебесі
> [!IMPORTANT]
> **Көшу әрекеті қажет:** Қосымша таңбасының өзгеруіне байланысты (`moe.shizuku.privileged.api` -> `com.hamondev.shevery`) Shevery-ді орнатпас бұрын құралдағы ескі ресми Shizuku Manager қосымшасын **МІНДЕТТІ ТҮРДЕ ӨШІРІҢІЗ**. Өйтпесе, олар бір-бірімен қайшылыққа түсіп қалады.
> Жоғарғы жоба сілтемесі:
>
## Форктағы жаңа мүмкіндіктер
- Material 3 Expressive компоненттерімен, анимациялармен, ауыстырып-қосқыштармен және жұмыр белгішелермен Jetpack Compose басқару интерфейсі.
- **Dhizuku эксперименталды қолдауы**: Лаборатория мүмкіндіктері ішінде қолжетімді арнайы Device Owner көпірлік жүйесі.
- **Жақсартылған «Comput»** функциясы — shell/adb негізінде, Gemini түсіндірмелері, Макростар және Commandium AI команда жасау мүмкіншілігімен.
- Бұл форкта қазіргі SDK/құрастыру құралдарын қолданып, Android 16/17-ге бейімдеу жұмыстары жүргізілуде.
- ZIP модульдерді орнату және басқаруға арналған ADB Modules экраны.
- Модуль мүмкіншіліктері: `module.prop`, баннер, қосу/өшіру ауыстырып-қосқышы, `action.sh`, саясатпен реттелетін `service.sh`, жергілікті WebUI, жою, жолдарды тексеру, өлшем шектеулері, шығыс шектеулері және соңғы іске қосу журналдары.
- Модуль саясаты баптаулары: Қауіпсіз режим, Толық қолдау және фондық әрекеттерді басқару.
- Тікелей орнатуға болатын Модульдер каталогы.
## Құжаттама
- [ADB Modules нұсқаулығы](docs/adb-modules-guide.md)
- [ADB Modules API анықтамасы](docs/adb-modules-api.md)
- [Shizuku Connectors API](docs/shizuku-connectors.md)
- [Android 17 үйлесімділігі](docs/android-17-compatibility.md)
- [ADB Modules жариялау нұсқаулығы](docs/github-catalog.md)
## Негіздеме
Root құқықтарды қажет ететін қосымшаларды жасау кезінде ең кең тараған әдіс — su shell-де кейбір командаларды орындау. Мысалы, компоненттерді қосу/өшіру үшін `pm enable/disable` командасын қолданатын қосымша бар.
Бұл әдістің өте үлкен кемшіліктері бар:
1. **Өте баяу** (көп процесс құру)
2. Мәтіндерді өңдеу қажет (**өте сенімсіз**)
3. Мүмкіндік қолжетімді командалармен шектеледі
4. ADB-де жеткілікті құқық болса да, қосымша жұмыс істеу үшін root құқықты қажет етеді
Shizuku мүлдем басқа жолды қолданады. Толық сипаттаманы төменнен қараңыз.
## Пайдаланушы нұсқаулығы және Жүктеу
## Скриншоттар
Скриншоттарды ашу үшін басыңыз
 Басты экран |
 Comput консолі |
 ADB Модульдер |
 Баптаулар |
## Shevery қалай жұмыс істейді?
Алдымен, қосымшалардың жүйелік API-ді қалай қолданатынын айтып өтейік. Мысалы, қосымша орнатылған қосымшаларды алғысы келсе, `PackageManager#getInstalledPackages()` қолдану керек екенін бәріміз білеміз. Негізінде бұл — қосымша процесі мен жүйелік сервер процесі арасындағы процесаралық байланыс (IPC), тек Android фреймворкі ішкі жұмысты біз үшін атқарады.
Android мұндай IPC үшін `binder`-ді қолданады. `Binder` сервер жаққа клиент жақтың uid мен pid-ін білуге мүмкіншілік береді, сондықтан жүйелік сервер қосымшаның осы әрекетті орындауға рұқсаты бар-жоғын тексере алады.
Әдетте, қосымшаларға арналған «басқарушы» (мысалы, `PackageManager`) болса, жүйелік сервер процесінде соған сәйкес «қызмет» (мысалы, `PackageManagerService`) болуы керек. Қарапайым түрде ойласақ: егер қосымшада «қызметтің» `binder`-і болса, ол «қызметпен» байланыса алады. Қосымша процесі іске қосылғанда жүйелік қызметтердің binderлерін алады.
Shizuku пайдаланушыға алдын ала бір процесті — Shizuku серверін — root немесе ADB арқылы іске қосуға нұсқайды. Қосымша іске қосылғанда Shizuku серверіне арналған `binder` де қосымшаға жіберіледі.
Shevery-дің ең маңызды мүмкіншілігі — делдал болу: қосымшадан сұраныларды қабылдап, оларды жүйелік серверге жіберіп, нәтижені қайтарады. Толығырақ `rikka.shizuku.server.ShizukuService` класындағы `transactRemote` әдісінен және `moe.shizuku.api.ShizukuBinderWrapper` класынан қараңыз.
Сөйтіп, біз жоғары құқықпен жүйелік API қолдану мақсатына жеттік. Ал қосымшаға бұл — жүйелік API-ді тікелей қолданғанмен бірдей.
## Әзірлеуші нұсқаулығы
### API және үлгі
https://github.com/RikkaApps/Shizuku-API
### v11-ге дейінгі нұсқалардан көшу
> Қолданыстағы қосымшалар әрине жұмысын жалғастырады.
https://github.com/RikkaApps/Shizuku-API#migration-guide-for-existing-applications-use-shizuku-pre-v11
### Назар аударыңыз
1. ADB рұқсаттары шектеулі
ADB рұқсаттары шектеулі және әр түрлі жүйе нұсқаларында әрқалай. ADB-ге берілген рұқсаттарды [мұнда](https://github.com/aosp-mirror/platform_frameworks_base/blob/master/packages/Shell/AndroidManifest.xml) көруге болады.
API-ды шақырмас бұрын Shizuku-дың ADB пайдаланушысы атынан жұмыс істейтінін тексеру үшін `ShizukuService#getUid` немесе серверде жеткілікті құқық бар-жоғын тексеру үшін `ShizukuService#checkPermission` қолдануға болады.
2. Android 9-дан бастап жасырын API шектеуі
Android 9-дан бастап қарапайым қосымшалар үшін жасырын API қолдану шектеулі. Басқа әдістерді қолданыңыз (мысалы, ).
3. Android 8.0 және ADB
Қазіргі уақытта Shizuku қызметі қосымша процесін алу үшін `IActivityManager#registerProcessObserver` пен `IActivityManager#registerUidObserver` (26+) қосындысын қолданады — бұл қосымша іске қосылғанда процестің міндетті түрде жіберілуін қамтамасыз етеді. Алайда API 26-да ADB-де `registerUidObserver` қолдануға рұқсат жоқ, сондықтан егер Shizuku-ды Activity арқылы іске қосылмауы мүмкін процесте қолдану қажет болса, мөлдір Activity іске қосып binder жіберуді түрткілеу ұсынылады.
4. `transactRemote`-ты тікелей қолдануға назар аударыңыз
* API әр түрлі Android нұсқаларында өзгеруі мүмкін, міндетті түрде мұқият тексеріңіз. Сонымен қатар, `android.app.IActivityManager` API 26 және одан жоғарыда aidl түрінде болады, ал `android.app.IActivityManager$Stub` тек API 26-да ғана бар.
* `SystemServiceHelper.getTransactionCode` дұрыс транзакция кодын ала алмауы мүмкін, мысалы API 25-те `android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages` жоқ, оның орнына `android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages_47` бар (бұл жағдай өңделген, бірақ басқа жағдайлар да болуы мүмкін). `ShizukuBinderWrapper` әдісінде бұл мәселе кездеспейді.
## Shevery-дің өзін әзірлеу
### Жинау
- `git clone --recurse-submodules` арқылы клондаңыз
- Gradle тапсырмасын орындаңыз: `:manager:assembleDebug` немесе `:manager:assembleRelease`
`:manager:assembleDebug` тапсырмасы жөндеуге болатын сервер жасайды. Серверді жөндеу үшін `shizuku_server`-ге жөндеушіні қосыңыз. Назарыңызда болсын: Android Studio-да «Run/Debug configurations» - «Always install with package manager» белгіленуі керек, сөйтіп сервер ең соңғы кодты қолданады.
## «Іске қосу (Dhizuku арқылы)» қалай жұмыс істейді?
* Алдымен Shevery-ді ДК/OTG немесе сымсыз жөндеу арқылы іске қосуыңыз керек.
* Содан кейін Dhizuku-ды іске қосыңыз.
- Shevery-ді ең алдымен Dhizuku арқылы іске қоспаңыз.
## Лицензия
Бұл жобадағы барлық код файлдары Apache 2.0 бойынша лицензияланған
## Алғыс
* [kerneldroid](https://github.com/kerneldroid) — Қосымша UI бөліктері, Модульдер каталогы жүйесі және Android 17 қолдауы үшін.
* [RikkaApps/Shizuku](https://github.com/rikkaapps/Shizuku) — Shizuku API мен негізгі дереккөздер үшін.
* [Landon Moran](https://github.com/LandonMoran) — Dhizuku, TCP және т.б. түзетулер үшін.
* [DP-Hridayan](https://github.com/DP-Hridayan/aShellYou) — «Comput» UI бөліктері үшін.
* [protonpony/Shizuku-Keeper](https://github.com/protonpony/Shizuku-Keeper) — «Сымсыз жөндеу арқылы жүктелгенде автоқосу» үшін.
## Тағы...
Енді сіз өз ADB модуліңізді жариялай аласыз!
Мына қадамдарды орындаңыз:
- Өз модуліңізді жасаңыз.
- Бұл модульге арналған GH репозиторий жасаңыз.
- «shevery-modules» тақырыбын қосыңыз.
- Дереккөздер мен модулі бар релизді қосыңыз.
> [!CAUTION]
> **Тегін қосымша туралы хабарлама**
>
> Shevery — **толығымен тегін қосымша**. Бұл қосымшаны жүктеу үшін үшінші жақ файл менеджерлеріне немесе бұлттық қызметтерге ақша төлемеңіз.