Meta inf com google android updater script

Meta inf com google android updater script

FAQ по созданию патча update.zip для прошивки через рекавери

Редактирование Updater-script. Информация, решения, команды, подпись патчей.
Инструкция по установке системных и пользовательских приложений с помощью recovery
Редактирование установленной прошивки и удаление системных приложений
(ключевые слова)

Напоминаю, тут не стол заказов.. Посты с просьбой собрать zip для «хххх» Recovery оффтоп

Сообщения, не относящиеся к теме обсуждения (оффтоп), удаляются без предупреждения

  • Добавление нескольких пользовательских/системных приложений «за один клик» (одним патчем).
  • Добавление/удаление системных приложений без root прав и вспомогательных программ.
  • Изменение прошивки (замена файлов, украшательства и т.д.).
  • Обновление программы или прошивки.
  • Переразметка памяти (обсуждения в другой теме)
  • Получение root прав SuperUser, SuperSU, Magisk
  1. Установленный на телефоне кастомный рекавери (CWM/TWRP)
  2. NotePad++ (редактор с сохранением Unix формата)
  3. Zip_signer (подписчик архивов)
  4. Архиватор ZIP
  5. Файл-заготовка sample.zip (либо update-binary для ручной сборки)
    Zip_signer.rar ( 13.28 КБ )
    sample-patch.rar ( 4.77 МБ )
    update-binary.rar ( 113.25 КБ )
  6. Дополнительные версии бинарника. binary_all.rar ( 649.36 КБ )
  7. Бинарники (архив/исходники)

Исходники бинарника, основная ссылка:
https://android.google…ootable/recovery/+refs
выбираем к примеру «android-9.0.0_r18» , потом ищем папку «updater», в папке «updater» исходники бинарника

К примеру https://android.google…droid-9.0.0_r18/updater — можно глянуть все команды которые может выполнить бинари в андроид 9.0.0 (в файле install.cpp, в самом низу)

  • Подписчик для Linux: signapk.zip ( 9.24 КБ )
    + Android update-script (Пост Няшная #63580419)
  • Внимание! Патчи создаются только для мод.рекавери и результативно работают только в них. В стоковых рекавери (на аппаратах «из коробки») патчи не работают.

    Для того, чтобы установить новые системные приложения apk в Ваш аппарат, необходимо выполнить три шага:

    1. Собрать свой update.zip (из заготовки sample.zip)
    2. Подписать update.zip утилитой Zip_signer(Не обязательно!)
    3. Закинуть на флэшку и установить в аппарат через ClockWorkMod Recovery

    Эти шаги являются универсальными, т.е. подойдут для выполнения других подобных операций.

    ШАГ №1
    Собрать новый update.zip, используя «болванку» sample.zip
    Порядок использования sample.zip:

    1. Разархивировать архив sample.zip
    2. Удалить файлы подписи META-INF/CERT.RSA, CERT.SF, MANIFEST.MF (т.к. 2м шагом мы их будем создавать для своей сборки)
    3. Поместить в папку /data/app свое пользовательское приложение (xxxxx.apk)
    4. При необходимости отредактировать файл updater-script (подробнее позже)
    5. Заархивировать всё (META-INF и data) ZIP’ом без сжатия

    ШАГ №2
    Подписать update.zip с помощью утилиты Zip_signer
    Порядок использования утилиты Zip_signer:

    1. Переименовать Ваш отредактированный (т.е. уже с приложением внутри) sample.zip в update.zip
    2. Поместить его в папку с программой Zip_signer
    3. Запустить файл zip_signer.bat
    4. Дождаться, пока процесс будет завершен
    5. В папке появится файл update-finished.zip — это и есть подписанный файл
    6. Переименовать update-finished.zip по своему усмотрению (согласно логике патча)

    ШАГ №3
    Установка нового приложения

    1. Перекинуть (переименованный) update-finished.zip на флэшку и установить его в аппарат через TWRP или CWM (install zip from sdcard -> chooze zip from internal sdcard -> Yes, install sample.zip)
    2. Перезагрузить аппарат

    / )

  • Выполняем программу подписи (signapk )
  • Внимание! Патчи создаются только для мод.рекавери и результативно работают только в них. В стоковых рекавери (на аппаратах «из коробки») патчи не работают.

    Корень патча:

    • папка META-INF
    • папка источник установки приложений (system, data, sdcard, cache, sd-ext)
      Обязательные файлы:
    • META-INF/com/google/android/update-binary — системное средство запуска данного патча, также создает временную рабочую папку tmp
    • META-INF/com/google/android/updater-script — выполняемый скрипт по которому и происходят операции копирования и т.д.

    Разберем sample.zip
    Патч добавляет пользовательское приложение MyPiano в Data.

    — Выводит сообщение о завершении процесса.

    • busybox — приложение для выполнения командной строки, устанавливается с кастомным рекавери, находится в ramdisk/sbin. в кастомных прошивках зачастую добавляют его в system/xbin

    Возможные исправления для своих целей

      Изменение прав

    package_extract_dir
    Синтаксис: package_extract_dir(» «, » «);
    Копирует содержимое в . Файлы в имеющиеся в перезаписываются.
    Пример: package_extract_dir(«system», «/system»); Скопирует файлы из папки update.zip/system в /system

    Читайте также:  Рейтинг офисов для андроид

    package_extract_file
    Синтаксис: package_extract_file(» «, » «);
    Копирует файл в . Если файл существует, то он перезаписывается.
    Пример: package_extract_file(«test.sh», «/tmp/test.sh»); Скопирует файл test.sh из update.zip в /tmp/test.sh

    format
    Синтаксис: format(«MTD», » «);
    Форматирует раздел (см. приложение).
    Пример: format(«MTD», «system»); Полностью отформатирует /system . Примечание: форматирование удаляет данные необратимо.
    Пример 2: format(«ext4», «EMMC», «/dev/block/mtdblock5», «0», «/system»);
    Определение номера блока под спойлером «инфо и материалы».

    delete
    Синтаксис: delete(» «[, «file2», . «fileN»]);
    Удаляет файл(ы)
    Пример: delete(«/system/app/Calculator.apk»); Удалит Calculator.apk из папки system/app.

    delete_recursive
    Синтаксис: delete_recursive(» «[, «dir2», . «dirN»]);
    Рекурсивно удаляет папку(и) со всем содержимым
    Пример: delete_recursive(«/data/dalvik-cache»); Удалит папку /data/dalvik-cache со всем содержимым.

    run_program
    Синтаксис: run_program(» «[, » «, » «, » «]);
    Запускает программу(скрипт) .
    Пример: run_program(«/tmp/install_busybox.sh»); Запустит скрипт /tmp/install_busybox.sh.

    «[, . «pathtofileN»]);
    Устанавливает владельца, группу и разрешения для файла или папки, как ‘chmod’, ‘chown’, и ‘chgrp’ всё в одном
    Пример: set_perm(0, 2000, 0550, «/system/etc/init.goldfish.sh»); Установит владельца, группу и разрешения для файла /system/etc/init.goldfish.sh

    set_perm_recursive
    Синтаксис: set_perm_recursive( , , , , «

    «])
    Рекурсивно устанавливает владельца, группу и разрешения для содержимого папки. — для папок, — для файлов.
    Пример: set_perm_recursive(0, 0, 0755, 0644, «/system/app»); Установит права для содержимого /system/app, для папок — 0755, для файлов — 0644.

    show_progress
    Синтаксис: show_progress( , );
    Продвижение прогрессбара на долю за секунд. может быть нулевым для продвижения его по командe set_progress, а не по времени.
    Пример: show_progress(0.100000, 1); Увеличит прогресс на 0.1 часть за 1 секунду

    set_progress
    Синтаксис: set_progress( );
    Устанавливает положение прогрессбара на долю , для самого последнего вызова команды show_progress.
    Пример: set_progress(0.500000);

    symlink
    Синтаксис: symlink(«

  • «, «
  • «, «
  • «]);
    Создает символическую ссылку (как ‘ln-s’).
  • пишется в формате root:path, а
  • в формате целевой файловой системы (и может быть относительным). Википедия Symlink.
    Пример: symlink(«/data/app_s», «/system/app»); Создаст символическую ссылку на папку /data/app_s для папки /system/app

    «);
    Монтирует в путь

    . должно быть название раздела, если это «MTD», или блок памяти если это «vfat»
    Пример: mount(«MTD», «userdata», «/data»);

    ui_print
    Синтаксис: ui_print(» «);
    Выводит на экран сообщение
    Пример: ui_print(«Formatting SYSTEM. «);

    sleep
    Синтаксис: sleep( );
    Пауза процесса на секунд
    Пример: sleep(5); — пауза 5 секунд, после чего код скрипта выполняется дальше.

    set_metadata / set_metadata_recursive
    Синтаксис: set_metadata (. );
    Устанавливает владельца, группу и разрешения (новая команда взамен set_perm для andriod 4.4.*)
    Примеры: Android update-script (Пост #32151495)
    Создание патча update.zip для прошивки через рекавери (Пост kory-vadim #81945464)

    set_metadata / set_metadata_recursive
    Синтаксис:
    set_metadata(«имя файла», «ключ1», «значение1», «ключ2», «значение2», . )
    set_metadata_recursive(«имя директории», «ключ1», «значение1», «ключ2», «значение2», . )
    Ключи:
    * uid
    * gid
    * mode (set_perm_extd only)
    * fmode (set_perm_extd_recursive only)
    * dmode (set_perm_extd_recursive only)
    * selabel
    * capabilities
    первые три (uid, gid, mode) это тоже самое что и в chmod, заполняется «uid», 0, «gid», 1000, «mode», 06754.
    для установки прошивки хватает трех ключей «uid», 0, «gid», 1000, «mode», 06754.
    Пример: set_metadata(«/system/xbin/shelld», «uid», 0, «gid», 1000, «mode», 06754, «capabilities», 0x0, «selabel», «u:object_r:system_file:s0»);
    set_metadata_recursive(«/system/xbin», «uid», 0, «gid», 2000, «dmode», 0755, «fmode», 0755, «capabilities», «0x0», «selabel», «u:object_r:system_file:s0»);

    команды для Nexus’ов
    block_image_update(«/dev/block/platform/msm_sdcc.1/by-name/system», package_extract_file(«system.transfer.list»), «system.new.dat», «system.patch.dat»);
    Синтаксис: block_image_update(«Путь к блоку раздела», package_extract_file(«список информации для патча (?) «), «образ», «патч образа»);
    я так понимаю, что так прошивается сильно сжатая прошивка (образ системы).
    Еще ifelse
    Пример: ifelse(is_mounted(«/system»), unmount(«/system»)); — если раздел сустем смонтирован дается команда на его размонтирование, если размонтиовать то нечего не происходит.

    Информация по атрибутам set_metadata и подобным командам на Android 4.4+
    Android update-script (Пост blackeangel #50803606)
    Описание откуда берутся «u:object_r:uncrypt_exec:s0» и подобные атрибуты. . .

    Пример скрипта который может удалять\перемещать\бекапить файлы и вести лог действий
    Android Script Creator (Пост Octanium #51085030)

    Используется при отсутствии busybox, либо чтоб не привязываться к его расположению в системе.

    Код «перезагрузки» и «перезагрузки в рекавери» соответственно:

    Когда скрипт выполняется очень быстро (1-4 секунд) я использовал следующий код:

    Т.е. за 3 секунды прогресс бар доходит до 100% (постепенно).
    Число «3» выбрано как [время установки скрипта]+1 сек, чтоб прогресс бар при установке гарантированно двигался и не успел дойти до 100% раньше, чем скрипт установится.

    Читайте также:  Audio mod для android

    «[, . «pathtofileN»]);
    Устанавливает владельца, группу и разрешения для файла или папки, как ‘chmod’, ‘chown’, и ‘chgrp’ всё в одном
    Пример: set_perm(0, 2000, 0550, «/system/etc/init.goldfish.sh») Установит владельца, группу и разрешения для файла /system/etc/init.goldfish.sh

    «])
    Рекурсивно устанавливает владельца, группу и разрешения для содержимого папки. — для папок, — для файлов.
    Пример: set_perm_recursive(0, 0, 0755, 0644, «/system/app») Установит права для содержимого /system/app, для папок — 0755, для файлов — 0644.

    «);
    Монтирует в путь

    . должно быть название раздела, если это «MTD», или блок памяти если это «vfat»
    Пример: mount(«MTD», «userdata», «/data»);
    Пример монтирования на андроид 9-10


    Если Вам знакомо что такое Recovery, CWM,TWRP, знаете что такое кастомные прошивки и с чем их едят, то наверняка вы сталкивались с тем что прошивка или обновление не устанавливается выводя при этом ошибку «Status #».

    Источник

    Updater-script как правильно составить

    вкл. 25 Март 2015 . Опубликовано в Android — Общее

    Updater-script как правильно составить. Необходимо создать updater-script для вашей кастомной прошивки или мода? Не знаете какие команды писать и что они означают? На все эти ответы можно узнать из данной статьи.

    Как должен выглядеть ZIP -обновление (структура)

    В корне архива-обновления «должны» находится такие файлы и папки:

    1. Папка META-INF — обязательно

    2. system или data или cache или другие, в зависимости от того для чего готовилось обновление (не обязательно, так как возможно прошиваете модем или ядро)

    3. boot.img или recovery.img или zImage (не обязательно, так как возможно обновляете файл в system или data)

    Режим сжатия архива должен быть «нормальный» или «обычный» более сильное сжатие Android не поддерживает

    Папка META-INF состоит

    2. Файлы подписи обновления

    Папка com должна содержать в себе такие файлы и папки

    1. Папку android

    2. Google

    Папка google должна содержать папку android в которой должны быть файлы

    1. updater-script — текстовый файл с набором инструкций для обновления

    2. update-binary — бинарный файл, необходимый для установки обновления

    Инструменты редактирования update-script

    Для редактирования updater-script вам понадобится программа NotePad ++

    важное условие при работе это кодировка, она должна быть UNIX

    Команды updater-script

    assert -задается для каких моделей создано обновление

    mount — монтирование (присоединение) разделов

    umount — отсоединить раздел

    package_extract_dir — копирует выбраню папку и заменяет собой аналогичную вместе с файлами

    package_extract_file — копирует выбранный файл и заменяет собой аналогичный

    format — форматирует прописанный раздел

    delete — удаляет файл

    delete_recursive — рекурсивное удаление, необходимо для удаления папок и их содержимого

    run_program — запускает программу

    set_perm — задает права для файла

    set_perm_recursive — задает права для папки

    symlink — создает жесткую ссылку — «симлинк» (ярлык для запуска)

    ui_print — вывод сообщения на экран

    Внимание! Программа Updater Script

    Вашему вниманию предлагается проект — Updater Script который позволит правильно и очень быстро составить правильный скрипт, даже для пользователей с маленьким опытом!

    Довольно популярный вопрос о том как узнать какие необходимо создать symlink в updater-script? Все очень просто для этого вам нужно либо компьютер с ADB или установленный терминал на Android. Перейдите в папки:

    В каждой из этих папок наберите команду ls -l и вы получите список файлов и symlink.

    Узнать список всех папок в System

    Для того того чтобы узнать все папки которые есть в разделе /system , понадобиться набрать команду

    su

    du -a system

    После чего вам выдаст весь список папок в разделе.

    Узнать все права, uid, gid и список файлов и папок

    Для того чтобы узнать все права, uid, gid и список файлов и папок нужно задать следующую команду

    ls -alnR /system

    Теперь перейдем как это выглядит в живую на примере…

    Пример updater-script

    (данный пример update-script для модели i9100 прошивка CyanogenMod 10.2)

    Читайте также:  Христианские обои для андроида

    для каких моделей
    assert(getprop(«ro.product.device») == «galaxys2? || getprop(«ro.build.product») == «galaxys2? ||
    getprop(«ro.product.device») == «i9100? || getprop(«ro.build.product») == «i9100? ||
    getprop(«ro.product.device») == «GT-I9100? || getprop(«ro.build.product») == «GT-I9100? ||
    getprop(«ro.product.device») == «GT-I9100M» || getprop(«ro.build.product») == «GT-I9100M» ||
    getprop(«ro.product.device») == «GT-I9100P» || getprop(«ro.build.product») == «GT-I9100P» ||
    getprop(«ro.product.device») == «GT-I9100T» || getprop(«ro.build.product») == «GT-I9100T»);

    монтирование раздела
    mount(«ext4?, «EMMC», «/dev/block/mmcblk0p9?, «/system»);

    копирование файла
    package_extract_file(«system/bin/backuptool.sh», «/tmp/backuptool.sh»);
    package_extract_file(«system/bin/backuptool.functions», «/tmp/backuptool.functions»);

    задание прав для файла
    set_perm(0, 0, 0777, «/tmp/backuptool.sh»);
    set_perm(0, 0, 0644, «/tmp/backuptool.functions»);

    запуск программы
    run_program(«/tmp/backuptool.sh», «backup»);

    отсоединить раздел
    unmount(«/system»);

    прогрессбар
    show_progress(0.500000, 0);

    форматирование заданного раздела
    format(«ext4?, «EMMC», «/dev/block/mmcblk0p9?, «0», «/system»);

    подсоединение раздела
    mount(«ext4?, «EMMC», «/dev/block/mmcblk0p9?, «/system»);

    копирование папки в выбранный раздел
    package_extract_dir(«recovery», «/system»);
    package_extract_dir(«system», «/system»);

    создание симилнка
    symlink(«/system/xbin/su», «/system/bin/su»);
    symlink(«Roboto-Bold.ttf», «/system/fonts/DroidSans-Bold.ttf»);
    symlink(«Roboto-Regular.ttf», «/system/fonts/DroidSans.ttf»);
    symlink(«busybox», «/system/xbin/[«, «/system/xbin/[[«,
    «/system/xbin/adjtimex», «/system/xbin/arp», «/system/xbin/ash»,
    «/system/xbin/awk», «/system/xbin/base64?, «/system/xbin/basename»,
    «/system/xbin/bbconfig», «/system/xbin/blkid», «/system/xbin/blockdev»,
    «/system/xbin/brctl», «/system/xbin/bunzip2?, «/system/xbin/bzcat»,
    «/system/xbin/bzip2?, «/system/xbin/cal», «/system/xbin/cat»,
    «/system/xbin/catv», «/system/xbin/chattr», «/system/xbin/chgrp»,
    «/system/xbin/chmod», «/system/xbin/chown», «/system/xbin/chroot»,
    «/system/xbin/clear», «/system/xbin/cmp», «/system/xbin/comm»,
    «/system/xbin/cp», «/system/xbin/cpio», «/system/xbin/crond»,
    «/system/xbin/crontab», «/system/xbin/cut», «/system/xbin/date»,
    «/system/xbin/dc», «/system/xbin/dd», «/system/xbin/depmod»,
    «/system/xbin/devmem», «/system/xbin/df», «/system/xbin/diff»,
    «/system/xbin/dirname», «/system/xbin/dmesg», «/system/xbin/dnsd»,
    «/system/xbin/dos2unix», «/system/xbin/du», «/system/xbin/echo»,
    «/system/xbin/ed», «/system/xbin/egrep», «/system/xbin/env»,
    «/system/xbin/expand», «/system/xbin/expr», «/system/xbin/false»,
    «/system/xbin/fbsplash», «/system/xbin/fdisk», «/system/xbin/fgrep»,
    «/system/xbin/find», «/system/xbin/flash_lock»,
    «/system/xbin/flash_unlock», «/system/xbin/flashcp»,
    «/system/xbin/flock», «/system/xbin/fold», «/system/xbin/free»,
    «/system/xbin/freeramdisk», «/system/xbin/fstrim», «/system/xbin/fsync»,
    «/system/xbin/ftpget», «/system/xbin/ftpput», «/system/xbin/fuser»,
    «/system/xbin/getopt», «/system/xbin/grep», «/system/xbin/groups»,
    «/system/xbin/gunzip», «/system/xbin/gzip», «/system/xbin/halt»,
    «/system/xbin/head», «/system/xbin/hexdump», «/system/xbin/id»,
    «/system/xbin/ifconfig», «/system/xbin/inetd», «/system/xbin/insmod»,
    «/system/xbin/install», «/system/xbin/ionice», «/system/xbin/iostat»,
    «/system/xbin/ip», «/system/xbin/kill», «/system/xbin/killall»,
    «/system/xbin/killall5?, «/system/xbin/less», «/system/xbin/ln»,
    «/system/xbin/losetup», «/system/xbin/ls», «/system/xbin/lsattr»,
    «/system/xbin/lsmod», «/system/xbin/lsusb», «/system/xbin/lzcat»,
    «/system/xbin/lzma», «/system/xbin/lzop», «/system/xbin/lzopcat»,
    «/system/xbin/man», «/system/xbin/md5sum», «/system/xbin/mesg»,
    «/system/xbin/mkdir», «/system/xbin/mke2fs», «/system/xbin/mkfifo»,
    «/system/xbin/mkfs.ext2?, «/system/xbin/mkfs.vfat»,
    «/system/xbin/mknod», «/system/xbin/mkswap», «/system/xbin/mktemp»,
    «/system/xbin/modinfo», «/system/xbin/modprobe», «/system/xbin/more»,
    «/system/xbin/mount», «/system/xbin/mountpoint», «/system/xbin/mpstat»,
    «/system/xbin/mv», «/system/xbin/nanddump», «/system/xbin/nandwrite»,
    «/system/xbin/nbd-client», «/system/xbin/netstat», «/system/xbin/nice»,
    «/system/xbin/nohup», «/system/xbin/nslookup», «/system/xbin/ntpd»,
    «/system/xbin/od», «/system/xbin/patch», «/system/xbin/pgrep»,
    «/system/xbin/pidof», «/system/xbin/ping», «/system/xbin/pipe_progress»,
    «/system/xbin/pkill», «/system/xbin/pmap», «/system/xbin/poweroff»,
    «/system/xbin/printenv», «/system/xbin/printf», «/system/xbin/ps»,
    «/system/xbin/pstree», «/system/xbin/pwd», «/system/xbin/pwdx»,
    «/system/xbin/rdev», «/system/xbin/readlink», «/system/xbin/realpath»,
    «/system/xbin/renice», «/system/xbin/reset», «/system/xbin/resize»,
    «/system/xbin/rev», «/system/xbin/rm», «/system/xbin/rmdir»,
    «/system/xbin/rmmod», «/system/xbin/route», «/system/xbin/run-parts»,
    «/system/xbin/rx», «/system/xbin/sed», «/system/xbin/seq»,
    «/system/xbin/setconsole», «/system/xbin/setserial»,
    «/system/xbin/setsid», «/system/xbin/sh», «/system/xbin/sha1sum»,
    «/system/xbin/sha256sum», «/system/xbin/sha3sum»,
    «/system/xbin/sha512sum», «/system/xbin/sleep», «/system/xbin/sort»,
    «/system/xbin/split», «/system/xbin/stat», «/system/xbin/strings»,
    «/system/xbin/stty», «/system/xbin/sum», «/system/xbin/swapoff»,
    «/system/xbin/swapon», «/system/xbin/sync», «/system/xbin/sysctl»,
    «/system/xbin/tac», «/system/xbin/tail», «/system/xbin/tar»,
    «/system/xbin/taskset», «/system/xbin/tee», «/system/xbin/telnet»,
    «/system/xbin/telnetd», «/system/xbin/test», «/system/xbin/tftp»,
    «/system/xbin/tftpd», «/system/xbin/time», «/system/xbin/timeout»,
    «/system/xbin/top», «/system/xbin/touch», «/system/xbin/tr»,
    «/system/xbin/traceroute», «/system/xbin/true», «/system/xbin/ttysize»,
    «/system/xbin/tune2fs», «/system/xbin/umount», «/system/xbin/uname»,
    «/system/xbin/uncompress», «/system/xbin/unexpand», «/system/xbin/uniq»,
    «/system/xbin/unix2dos», «/system/xbin/unlzma», «/system/xbin/unlzop»,
    «/system/xbin/unxz», «/system/xbin/unzip», «/system/xbin/uptime»,
    «/system/xbin/usleep», «/system/xbin/uudecode», «/system/xbin/uuencode»,
    «/system/xbin/vi», «/system/xbin/watch», «/system/xbin/wc»,
    «/system/xbin/wget», «/system/xbin/which», «/system/xbin/whoami»,
    «/system/xbin/xargs», «/system/xbin/xz», «/system/xbin/xzcat»,
    «/system/xbin/yes»,
    «/system/xbin/zcat»);
    symlink(«libGLESv2.so», «/system/lib/libGLESv3.so»);
    symlink(«logcat», «/system/bin/lolcat»);
    symlink(«mksh», «/system/bin/sh»);
    symlink(«mount.exfat», «/system/bin/fsck.exfat»,
    «/system/bin/mkfs.exfat»);
    symlink(«pigz», «/system/xbin/unpigz»);
    symlink(«toolbox», «/system/bin/cat», «/system/bin/chcon»,
    «/system/bin/chmod», «/system/bin/chown», «/system/bin/clear»,
    «/system/bin/cmp», «/system/bin/cp», «/system/bin/date»,
    «/system/bin/dd», «/system/bin/df», «/system/bin/dmesg»,
    «/system/bin/du», «/system/bin/getenforce», «/system/bin/getevent»,
    «/system/bin/getprop», «/system/bin/getsebool», «/system/bin/grep»,
    «/system/bin/hd», «/system/bin/id», «/system/bin/ifconfig»,
    «/system/bin/iftop», «/system/bin/insmod», «/system/bin/ioctl»,
    «/system/bin/ionice», «/system/bin/kill», «/system/bin/ln»,
    «/system/bin/load_policy», «/system/bin/log», «/system/bin/ls»,
    «/system/bin/lsmod», «/system/bin/lsof», «/system/bin/md5?,
    «/system/bin/mkdir», «/system/bin/mount», «/system/bin/mv»,
    «/system/bin/nandread», «/system/bin/netstat»,
    «/system/bin/newfs_msdos», «/system/bin/notify», «/system/bin/printenv»,
    «/system/bin/ps», «/system/bin/r», «/system/bin/reboot»,
    «/system/bin/renice», «/system/bin/restart», «/system/bin/restorecon»,
    «/system/bin/rm», «/system/bin/rmdir», «/system/bin/rmmod»,
    «/system/bin/route», «/system/bin/runcon», «/system/bin/schedtop»,
    «/system/bin/sendevent», «/system/bin/setconsole»,
    «/system/bin/setenforce», «/system/bin/setprop»,
    «/system/bin/setsebool», «/system/bin/sleep», «/system/bin/smd»,
    «/system/bin/start», «/system/bin/stop», «/system/bin/sync»,
    «/system/bin/top», «/system/bin/touch», «/system/bin/umount»,
    «/system/bin/uptime», «/system/bin/vmstat», «/system/bin/watchprops»,
    «/system/bin/wipe»);

    рекурсивное выставление прав папкам
    set_perm_recursive(0, 0, 0755, 0644, «/system»);
    set_perm_recursive(0, 0, 0755, 0755, «/system/addon.d»);
    set_perm_recursive(0, 2000, 0755, 0755, «/system/bin»);

    рекурсивное выставление прав файлам
    set_perm(0, 3003, 02750, «/system/bin/netcfg»);
    set_perm(0, 0, 0755, «/system/bin/ping»);
    set_perm(0, 2000, 0750, «/system/bin/run-as»);
    set_perm(1014, 2000, 0550, «/system/etc/dhcpcd/dhcpcd-run-hooks»);
    set_perm_recursive(0, 2000, 0755, 0755, «/system/etc/init.d»);
    set_perm(0, 0, 0755, «/system/etc/init.d»);
    set_perm(0, 2000, 0550, «/system/etc/init.goldfish.sh»);
    set_perm_recursive(0, 0, 0755, 0555, «/system/etc/ppp»);
    set_perm(0, 2000, 0755, «/system/vendor»);
    set_perm_recursive(0, 2000, 0755, 0644, «/system/vendor/etc»);
    set_perm(0, 0, 0644, «/system/vendor/etc/audio_effects.conf»);
    set_perm(0, 2000, 0755, «/system/vendor/firmware»);
    set_perm(0, 2000, 0755, «/system/vendor/lib»);
    set_perm_recursive(0, 2000, 0755, 0644, «/system/vendor/lib/drm»);
    set_perm(0, 0, 0644, «/system/vendor/lib/drm/libdrmwvmplugin.so»);
    set_perm_recursive(0, 2000, 0755, 0755, «/system/xbin»);
    set_perm(0, 0, 06755, «/system/xbin/librank»);
    set_perm(0, 0, 06755, «/system/xbin/procmem»);
    set_perm(0, 0, 06755, «/system/xbin/procrank»);
    set_perm(0, 0, 06755, «/system/xbin/su»);

    прогреccбар
    show_progress(0.200000, 0);
    show_progress(0.200000, 10);

    копирование файла
    package_extract_file(«system/bin/backuptool.sh», «/tmp/backuptool.sh»);
    package_extract_file(«system/bin/backuptool.functions», «/tmp/backuptool.functions»);

    задание прав для файла
    set_perm(0, 0, 0777, «/tmp/backuptool.sh»);
    set_perm(0, 0, 0644, «/tmp/backuptool.functions»);

    запуск программы
    run_program(«/tmp/backuptool.sh», «restore»);

    удаление файла
    delete(«/system/bin/backuptool.sh»);
    delete(«/system/bin/backuptool.functions»);

    прогрессбар
    show_progress(0.200000, 10);

    установка ядра
    assert(package_extract_file(«boot.img», «/tmp/boot.img»),
    write_raw_image(«/tmp/boot.img», «/dev/block/mmcblk0p5?),
    delete(«/tmp/boot.img»));

    прогрессбар
    show_progress(0.100000, 0);

    отсоединение раздела
    unmount(«/system»);

    Бонус

    Также полезная команды после

    Выполнить wipe Dalvik cache, для во избежания сбоев в системе (ставить до umount в конце)
    delete_recursive(«/data/dalvik-cache»)

    автоматическая перезагрузка (ставить после umount в конце)
    run_program(«/sbin/reboot»);

    Источник

  • Оцените статью