» Мануалы
Модификация updater-script

Файл updater-script содержит полный сценарий установки прошивки на Android-устройства. В него можно добавить или удалить сценарии по добавлению или удалению различных файлов и папок, отображению информации во время процесса прошивания девайса, производить рутирование прямо во время прошивания и так далее. В данном материале мы разберемся с основными командами, которые поддерживает данный файл.
Находится updater-script по пути:
META-INF/com/google/android
Открывать его можно любым текстовым редактором, но настоятельно рекомендуется использовать программу Notepad++. Теперь давайте разберемся с полным списком команд, которые поддерживает updater-script.
package_extract_dir
Синтаксис: package_extract_dir(«откуда»,»куда»);
Копирует содержимое папки. Файлы, уже имеющиеся в такой же папке, перезаписываются.
Пример: package_extract_dir(«dir1″,»/dir1»); Производит копирование файлов из папки update.zip/dir1 в /dir1
package_extract_file
Синтаксис: package_extract_file(«источник»,»куда копировать»);
Копирует указанный файл. При совпадении имен, файл перезаписывается.
Пример: package_extract_file(«file.sh»,»/dir1/file.sh»); Копирует file.sh из update.zip в указанный путь /dir1/file.sh
format
Синтаксис: format(«MTD»,»раздел»);
Форматирует указанный раздел.
Пример: format(«MTD»,»dir1″); Полностью форматирует раздел dir1. Внимание! Данные при форматировании удаляются безвозвратно!
delete
Синтаксис: delete(«»[, «file1″,…»fileN»]);
Удаляет файл (файлы).
Пример: delete(«/dir1/program.apk»); Удаляет файл program.apk из dir1.
delete_recursive
Синтаксис: delete_recursive(«»[, «dir1″,…»dirN»]);
Рекурсивно удаляет папку или папки со всем их содержимым.
Пример: delete_recursive(«/dir1/data»); Производит удаление директории /dir1/data со всем её содержимым.
run_program
Синтаксис: run_program(«»[,»»,»»,»»]);
Запускает программу (программы) или скрипты.
Пример: run_program(«/dir1/install_prog.sh»); Запускает скрипт, расположенный по пути: /dir1/install_prog.sh
set_perm
Синтаксис: set_perm(, , , «»[, …»путь_к_файлу»]);
Команда устанавливает группу, владельца и разрешения для папки или файла, аналогично «chmod», «chown», и «chgrp», но сразу всё в одном.
Пример: set_perm(0, 2000, 0550, «/dir1/tmp/init.test.sh») Установит владельца, группу и разрешения для указанного файла, расположенного по пути: /dir1/tmp/init.test.sh
set_perm_recursive
Синтаксис: set_perm_recursive(, , , ,»»[, …»»])
Рекурсивно устанавливает разрешения, владельца и группу для папки со всем её содержимым. включая другие папки и файлы.
Пример: set_perm_recursive(0, 0, 0755, 0644, «/dir1/tmp»); устанавливает права для всего содержимого папки /dir1/tmp, для папок, соответственно, — 0755, а для файлов — 0644.
show_progress
Синтаксис: show_progress(, )
Устанавливает прогресс полоски выполнения на определенную долю за указанное количество секунд. Значение может быть равно нулю для продвижения его не по времени, а используя команду set_progress.
Пример: show_progress(0.200000, 3); прогресс будет увеличиваться на 0.2 часть за 3 секунды.
set_progress
Синтаксис: set_progress()
Команда устанавливает определенное положение прогресс-бара.
Пример: set_progress(0.700000); полоса выполнения будет заполнена на 0.7 часть.
symlink
Синтаксис: symlink(«»,»Создает символическую ссылку одной директории на другую (как «ln-s»). Первое значение пишется в формате root:path, а второе – в формате целевой файловой системы (которое, соответственно, может быть относительным)
Пример: symlink(«/dir1/test_s», «/sys1/test»). Будет создана символическая ссылка на директорию /dir1/test_s для папки /sys1/test
mount
Синтаксис: mount(«»,»»,»»);
Монтирует указанную директорию по указанному пути. Соответственно, должно быть название раздела, если это «MTD», или блок памяти – если это «vfat».
Пример: mount(«MTD», «testdir1», «/dir1»);
unmount
Синтаксис: unmount(«»);
Демонтирует (отключает) указанную директорию.
Пример: unmount(«/dir1»);
ui_print
Синтаксис: ui_print(«»);
При помощи данной команды на экран устройства выводится указанное сообщение.
Пример: ui_print(«Currently formatting DIR1…»); на экране будет отображено сообщение «Currently formatting DIR1…».