Skip to content

Веб-интерфейс модуля ​

Помимо выполнения загрузочных скриптов и правки системных файлов, модули KernelSU могут показывать пользовательский интерфейс и напрямую взаимодействовать с пользователем.

Модуль может описать страницу на HTML + CSS + JavaScript, используя любые веб‑технологии. Менеджер KernelSU отображает такие страницы через WebView и предоставляет API для взаимодействия с системой, например для запуска shell-команд.

Каталог webroot ​

Файлы веб-ресурсов должны располагаться в подкаталоге webroot в корне модуля, и там ОБЯЗАТЕЛЬНО должен находиться файл index.html, выступающий точкой входа. Самая простая структура модуля с веб-интерфейсом выглядит так:

txt
❯ tree .
.
|-- module.prop
`-- webroot
    `-- index.html

WARNING

При установке модуля KernelSU автоматически задаёт права доступа и SELinux-контекст для этого каталога. Если вы не уверены, что делаете, не меняйте разрешения вручную!

Если страница содержит CSS или JavaScript, их тоже нужно положить в этот каталог.

JavaScript API ​

Если это только страница отображения, она работает как обычный веб-сайт. Но самое главное — KernelSU предоставляет набор системных API, позволяющих реализовать модуль‑специфичные функции.

KernelSU предлагает JavaScript-библиотеку, опубликованную в npm, которую можно использовать в коде страницы.

Например, можно выполнить shell-команду, чтобы получить конфигурацию или изменить свойство:

JavaScript
import { exec } from 'kernelsu';

const { errno, stdout } = exec("getprop ro.product.model");

Также можно переключить страницу в полноэкранный режим или показать toast.

Документация по API

Если существующего API недостаточно или им неудобно пользоваться, оставьте нам предложение здесь!

Несколько советов ​

  1. localStorage можно использовать как обычно для хранения данных, но помните, что всё будет удалено при удалении приложения‑менеджера. Для постоянного хранения сохраните данные вручную в отдельном каталоге.
  2. Для простых страниц мы рекомендуем использовать parceljs для сборки. Он не требует начальной настройки и очень прост. Но если вы опытный фронтенд‑разработчик или у вас есть собственные предпочтения, смело используйте любой другой инструмент!

Выпускается под лицензией GPL3.