Перейти к публикации
nexRM.ru

Shizuku


 Поделиться

Рекомендованные сообщения

Shizuku


Сервер для предоставления другим приложениям прав через ADB


Shizuku is an open-source project, you can find the source code and more details at https://github.com/RikkaApps/Shizuku.

The birth of Shizuku has two main purposes:
Provide a convenient way to use system APIs.
Convenient for the development of some apps that only requires adb permissions.

As a user, how to use Shizuku?
Rooted devices: Start directly in Shizuku app.
Non-root devices: Follow the instructions in Shizuku app to start the service through adb. Using adb is not difficult, there are many tutorials on the web that can help you learn to use it.

Here's a video showing how to set up Shizuku:

 

RLBvH6xIeJegaS1HMu1dKtD5SKo8z12J9cNY1jQVDL1sriWMKYyqz0.png.abaedeefd2cb0c0b3a139c4e9f784480.png


Требуется Android: 5.0
Русский интерфейс: Да

Разработчик: Xingchen & Rikka
Домашняя страница: https://shizuku.rikka.app/
GitHub: https://github.com/RikkaApps/Shizuku

 

RLBvIX6EPAAvWJiEvMQUxVfV5hoeEQlF9z2cBSXLykhNcYRS59UXy.png.972b4ee4dd1fef93ea289c5c675903c7.png

 

 


 

Ссылка на комментарий
Поделиться на других сайтах

Руководство
Перевод google + исправления

 

Введение

Скрытый текст

Введение
Shizuku может помочь обычным приложениям использовать системные API-интерфейсы напрямую с привилегиями adb / root, а процесс Java запускается с app_process.

Имя Shizuku приходит от персонажа.


Почему Shizuku появился?
Появление Shizuku имеет две основные цели.

  • Предоставить удобный способ использования системных API.
  • Удобно для разработки некоторых приложений, требующих только разрешения ADB.

 

 


Shizuku vs. метод "Старой школы"

Метод "Старой школы"
Например, чтобы включить / отключить компоненты, выполняются некоторые приложения, которым требуются права суперпользователя pm disable прямо в su.

 

 

 

 

  1. Выполнить su
  2. Выполнить pm disable
  3. (pre-Pie) Запустите процесс Java с помощью app_process (см. здесь)
  4. (Pie+) Выполнить родную программу cmd (см. здесь)
  5. Обработайте параметры, взаимодействуйте с системным сервером через связыватель и обработайте результат, чтобы вывести текстовый результат

 


Каждое из «Выполнить» означает создание нового процесса, su использует внутренние сокеты для взаимодействия с демоном, и на такой процесс тратится много времени и производительности. (Некоторые плохо разработанные приложения будут даже выполнять su каждый раз для каждой команды)

Недостатками этого способа являются:

 

 

 

 

  1. Очень медленно.
  2. Нужно обработать текст, чтобы получить результат.
  3. Функции зависят от доступных команд.
  4. Даже если ADB имеет достаточно разрешений, приложению требуются права суперпользователя для запуска.

 


Метод Shizuku
Приложение Shizuku предложит пользователю запустить процесс (Процесс службы Shizuku), используя Root или ADB.

 

 

 

  1. Когда начинается процесс приложения, сервисный процесс Shizuku отправляет привязку процессу приложения.
  2. Приложение взаимодействует со службой Shizuku через связыватель, а процесс службы Shizuku взаимодействует с системным сервером через связыватель.

 


Преимущества Shizuku:

 

 

 

  1. Минимальное дополнительное время и производительность.
  2. Он практически идентичен интерфейсу API прямого вызова (Разработчикам приложений нужно только добавить небольшое количество кода)

 

 

КАК ЗАПУСТИТЬ SHIZUKU?

Скрытый текст

Как запустить Shizuku?

  • Устройство рутировано: Для рутированых устройств запустите Shizuku прямо в приложении Shizuku.
     
  • Устройство не рутировано: Для нерутированных устройств нужно запустить Shizuku с помощью ADB. Использовать ADB не сложно, пожалуйста, прочитайте инструкцию ниже.

 

 


1. Что такое ADB?
Android Debug Bridge (ADB) - это универсальный инструмент командной строки, который позволяет вам общаться с устройством. Команда adb облегчает различные действия на устройстве, такие как установка и отладка приложений, и предоставляет доступ к оболочке Unix, которую можно использовать для запуска различных команд на устройстве. См. Android Developer для получения дополнительной информации.


2. Установка ADB

2.1. Windows

 

 

 

  1. Загрузите SDK Platform Tools, предоставляемые Google, и распакуйте их в любую папку.
  2. Откройте папку с помощью Проводника, удерживайте Shift и щелкните правой кнопкой мыши, выберите «Открыть окно PowerShell здесь» (Для Windows 7 выберите «Открыть CMD»)
  3. Введите adb, в случае успеха вы можете увидеть длинный список контента вместо подсказки о том, что ADB не найден.

 

 

ПРИМЕЧАНИЕ
Пожалуйста, не закрывайте это окно. Упомянутый позже «Терминал» относится к этому окну (Если вы закрыли окно, вернитесь к шагу 2).
ПРИМЕЧАНИЕ
Если вы используете PowerShell, все adb следует заменить на ./adb

 


2.2. Linux / MacOS
Вы определённо можете сделать это сами :).


3. Настройка ADB
Чтобы использовать adb, в начале необходимо включить отладку по USB на вашем устройстве, как правило, выполнив следующие действия:

 

 

  1. Откройте настройки системы и перейдите в раздел «О телефоне».
  2. Нажмите «Номер сборки» быстро несколько раз, вы можете увидеть сообщение, похожее на «Вы разработчик».
  3. На этом этапе вы должны найти «Параметры разработчика» в настройках, включить «Отладка по USB».
  4. Подключите устройство к компьютеру и введите adb devices в терминале.
  5. В это время на устройстве появится диалоговое окно «Разрешить отладку», установите флажок «Всегда разрешать» и подтвердите.
  6. Введите adb devices в терминал повторно. Если нет проблем, вы увидите что-то вроде следующего:

 

List of devices attached
XXX device
ПРИМЕЧАНИЕ
Действия по включению параметров разработчика на разных устройствах могут отличаться, выполните поиск самостоятельно.

 


3.1. MIUI устройства
«Это 2020 год, мусор MIUI по-прежнему нарушает функции Android».

Если вы используете MIUI, вам также необходимо включить «Отладку по USB (Параметры безопасности)» в меню «Для разработчиков».

Если вы используете MIUI 11, вам необходимо знать, что MIUI 11 нарушает доступ к пользовательским разрешениям (Пользовательские приложения не могут запрашивать пользовательское разрешение, обратитесь к этой проблеме и этой проблеме), поэтому вам нужно предоставить разрешение для пользовательских приложений в приложении Shizuku.

3.2. ColorOS (Устройства OPPO)
Если вы используете ColorOS, вам также необходимо отключить «Монитор разрешений» в меню «Для разработчиков».


4. Запуск Shizuku

 

ПРЕДУПРЕЖДЕНИЕ
Этот шаг необходимо повторять каждый раз, после перезагрузки устройства.


Введите adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/files/start.sh в терминале. Если нет проблем, то в приложении Shizuku вы увидите, что Shizuku успешно запущен.


5. Как избежать остановки Shizuku (Даже если перезапуска не было.)

 

ПРЕДУПРЕЖДЕНИЕ
Пожалуйста, следуйте приведённым ниже правилам, в противном случае он будет остановлен.
  1. Не выключайте «Отладку по USB»
  2. Не изменяйте режим использования USB после подключения устройства к компьютеру (Или изменяйте на «Только зарядка», если это не так).


После исправления безопасности, если режим использования USB не «Только зарядка», изменение режима использования USB, уничтожит все процессы ADB. Поэтому не изменяйте режим использования USB после изменения на «Только зарядка». 

Опция в Android 8 - «Выбрать конфигурацию USB» > «Только зарядка», в Android 9+ - «Конфигурация USB по умолчанию» > «Нет передачи данных». (Этот шаг может не понадобиться, если ваше устройство долгое время не получало исправлений безопасности).

На некоторых устройствах, таких как Samsung, это может не работать.
На этом этапе вам нужно проверить уведомление, которое появляется после подключения компьютера, чтобы увидеть текущий режим использования USB, и изменить режим в меню «Для разработчиков» на этот режим.

Если это не сработает, вы можете попробовать открыть сетевой adb (Используя команду adb tcpip 5555), а затем запустить Shizuku.

Кроме того, некоторые производители добавили диалоговое окно, в котором можно изменить режим использования USB при подключении компьютера. Поэтому если ваша система отображает диалоговое окно, например «Разрешить доступ к файлам», после подключения USB, просто проигнорируйте его. Пожалуйста, не нажимайте ни на один пункт, поскольку тогда режим использования USB изменится.

5.1. Устройства Huawei
Включите «Разрешить параметры отладки ADB» в режиме «Только зарядка» в меню «Для разработчиков».

5.2. Устройства Sony
Не нажимайте на диалоговые окна после подключения USB.

5.3. Устройства Meizu
Отключите «Защита платежей Flyme» в меню «Для разработчиков».

 

КАК ИСПОЛЬЗОВАТЬ SHIZUKU (РАЗРАБОТЧИКАМ)

Скрытый текст

Как использовать Shizuku (Разработчикам)

 

ПРИМЕЧАНИЕ
Пожалуйста, прочитайте следующее содержание вместе с образцом.




1. Добавить зависимость

 

maven { url 'https://dl.bintray.com/rikkaw/Shizuku' }

// Замените <latest version> на номер последней версии.
implementation 'moe.shizuku.privilege:api:<latest version>'



Номера версий можно найти по адресу: https://bintray.com/rikkaw/Shizuku/.

Объявления разрешений, которые необходимо использовать позже, включены в зависимость, поэтому вам не нужно добавлять их вручную.


2. Получить связующее
Добавьте в свой AndroidManifest.xml

 

<provider android:name="moe.shizuku.api.ShizukuBinderReceiveProvider" android:authorities="${applicationId}.shizuku" android:multiprocess="false" android:enabled="true" android:exported="true" android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />


Когда процесс приложения пользователя запускается, служба Shizuku использует этого провайдера для отправки связывателя в приложение.

Обычно, когда вы вводите свою активность, код в поставщике должен был быть выполнен (т.е. уже получил связыватель), но рекомендуется реализовать простую логику ожидания, как подробно описано в примере.


3. Авторизация
Перед использованием полученного связующего необходимо проверить разрешение.

Для API 23 и выше механизм разрешения времени выполнения используется напрямую. Просто убедитесь, что moe.shizuku.manager.permission.API_V23 разрешение в начале.

Для pre-API 23 необходимо запустить приложение Shizuku, чтобы получить токен. Для конкретного процесса, пожалуйста, обратитесь к образцу.


4. Использование: Связывателя [Binder transact] (Используйте: ShizukuBinderWrapper)
ShizukuBinderWrapper был добавлен начиная с API 3.0.0-alpha8. Примерное использование заключается в следующем.

 

IPackageManager pm = IPackageManager.Stub.asInterface(new ShizukuBinderWrapper(SystemServiceHelper.getSystemService("package"))); pm.getInstalledPackages(0, 0);

 


Для полного использования и других ссылок, пожалуйста, обратитесь к образцу.


5. Использование: Связывателя [Binder transact] (Использовать transactRemote, не рекомендуется)

ПРЕДУПРЕЖДЕНИЕ
Этот метод более громоздок в использовании и более подвержен проблемам (см. «Внимание»), рекомендуется использовать метод выше.

 


Смотрите образец для полного использования и других ссылок.


6. Использование: Выполнить команду напрямую
Пожалуйста, обратитесь к образцу.



Внимание

1. Разрешения ADB ограничены
ADB имеет ограниченные разрешения и отличается в разных версиях системы. Разрешения, принадлежащие ADB, можно посмотреть здесь.

Перед вызовом API вы можете использовать ShizukuService#getUid чтобы проверить, работает ли Shizuku на пользователе ADB, используйте ShizukuService#checkPermission чтобы проверить, есть ли разрешение.


2. Android 9 скрытая проблема API
Начиная с Android 9, использование скрытых API ограничено для обычных приложений.

В момент запуска Shizuku он попытается использовать настройку setting put global hidden_api_blacklist_exemptions *, но на некоторых устройствах он не работает. Пожалуйста, используйте другие методы (Такие как: https://github.com/tiann/FreeReflection).


3. Проблемы с SELinux
В настоящее время Shizuku, работающий под Root, устанавливает тот же контекст, что и оболочка ADB (u:r:shell:s0).


4. Многопроцессные приложения
Для многопроцессорных приложений выполните ShizukuMultiProcessHelper#initialize, чтобы получить привязку от процесса, который выполняется ShizukuBinderReceiveProvider перед использованием Shizuku. Кроме того, поскольку ShizukuBinderReceiveProvider должен запускаться другими процессами, рекомендуется указывать процесс ShizukuBinderReceiveProvider (android:process) таким же, как и самый продолжительный процесс в вашем приложении.


5. Android 8.0 и ADB
В настоящее время служба Shizuku получает процесс приложения, комбинируя IActivityManager#registerProcessObserver и IActivityManager#registerUidObserver (26+), чтобы гарантировать, что процесс приложения будет отправлен при запуске приложения. Однако в API 26 у ADB нет разрешений на использование registerUidObserver, поэтому, если вам нужно использовать Shizuku в процессе, который не может быть запущен действием, рекомендуется запустить механизм отправки связывателя, запустив прозрачную активность.


6. Не злоупотребляйте функцией «Выполнить команду напрямую».


7. Прямое использование transactRemote требует внимания

  • API может отличаться в разных версиях Android, пожалуйста, проверьте его внимательно. Кроме того, android.app.IActivityManager имеет форму aidl в API 26 и более поздних версиях, а android.app.IActivityManager$Stub существует только в API 26.
     
  • SystemServiceHelper.getTransactionCode может не получить правильный код транзакции, такой как android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackagesне существует в API 25, и есть android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages_47 (эта ситуация была рассмотрена, но не исключено, что могут быть другие обстоятельства). Эта проблема не встречается с методом ShizukuBinderWrapper.

 

Ссылка на комментарий
Поделиться на других сайтах

Установка Youtube Vanced через SAI с помощью Shizuku

 

Цитата

Решил проблему установки Youtube Vanced через SAI с помощью Shizuku без рут прав на Xiaomi Note 8 Pro с MIUI 11 на Android 10.

Нужно включить Отладку по USB и Установка через Usb, если хотите использовать более 1 приложения для установки через Shizuku нужно включить Отладка по USB (Настройки безопасности).
Далее в Shizuku нажать на View adb command и ввести этот текст в командной строке на компьютере с папкой adb. Должен запуститься сервис Shizuku.
После, не отключая Usb от компьютера зайти в SAI, выбрать в настройках установщик Shizuku и запустить установку интересующего приложения.
В процессе установки выскочит всплывающее сообщение Установить это приложение через USB?, нажать установить.

 

Скриншоты

Скрытый текст

1.thumb.jpg.cbc89ee0cd13bbc8c8501d2edd569342.jpg 2.thumb.jpg.d1c2948d2fe351df7362cad0c07b5d6d.jpg 3.thumb.jpg.a00197dda647d34ca0f0e344061d78f6.jpg 4.thumb.jpg.243b270e02e119ae5c074ba453c7dbca.jpg

 

Ссылка на комментарий
Поделиться на других сайтах

06.06.2021 в 21:01, PooshEEstiCk сказал:

Shizuku

Тип: Новая версия
Версия: 11.6.1.r595.d7b01d5
Краткое описание: build 595
Что нового:
11.6.1 (30.05.2021):
-Невозможность запуска, проблема которая может быть у некоторых людей, должна быть исправлена
 

moe.shizuku.privileged.api-11.6.1.r595.d7b01d5-595-142745.apk

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

 Поделиться

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...