- Mwpgs
- Можно ли создать символическую ссылку на Android?
- Symbolic link (symlink) with rooted Android 10
- Breadcrumb
- peppe1996
- jwoegerbauer
- peppe1996
- jwoegerbauer
- peppe1996
- jwoegerbauer
- peppe1996
- Radiolaria
- Symbolic link (symlink) with rooted Android 10
- Breadcrumb
- peppe1996
- jwoegerbauer
- peppe1996
- jwoegerbauer
- peppe1996
- jwoegerbauer
- peppe1996
- Radiolaria
- Что такое симлинки и как их использовать?
- Симлинк
- Как создать симлинк
- На Linux и macOS
- На Windows
- updater-script как правильно составить
- Как должен выглядеть ZIP -обновление (структура)
- Инструменты редактирования update-script
- Команды updater-script
- Внимание! Программа Android +1 Updater Script
- Как узнать как задать правильные symlink в updater-script
- Узнать список всех папок в System
- Узнать все права, uid, gid и список файлов и папок
- Пример updater-script
- Бонус: Полезные команды в конце скрипта
Mwpgs
Как отключить кнопку onclick в Reactjs?
Использование def, val и var в scala
Почему agg () в PySpark может суммировать только один столбец за раз?
установить комментарий facebook, используя xpath и selenium
Разница между массивом int [] и массивом int []
Бесплатная проверка / стандартизация адреса
Можно ли создать символическую ссылку на Android?
Я хочу знать, можно ли в Android создавать символические ссылки из моего приложения Android, потому что я хочу создать символическую ссылку на папку / данные моего приложения с помощью / sdcard. Я не эксперт по android, но я обычно делаю это в java, используя класс Java.nio.File.Files, но в android этот класс не разрешен, я знаю, что в android есть способ, который заключается в использовании api 21 с Метод Os.symlink (), но он предназначен для Android 5.0, и он мне нужен для минимальных версий Android 4.0 или 4.1 и новее. Если вы знаете какой-либо способ, пожалуйста, дайте мне знать, большое вам спасибо.
Попробуйте запустить его как команду с классом Process.
- Не создавайте меня в ссылке на файл, используйте свой код следующим образом:
- Не создавать мне ссылку на файл? Что это, черт возьми?
- Простите мой синтаксис, я хотел сказать следующее: файл ссылки не был создан в желаемом каталоге (он просто не был создан). Спасибо за исправление.
Можно использовать (ссылка Вот), начиная с Lollipop.
Если вы хотите поддерживать более старые версии Android, проверьте здесь.
Источник
Symbolic link (symlink) with rooted Android 10
Breadcrumb
peppe1996
Senior Member
jwoegerbauer
Senior Member
When you download a photo from within the Facebook app, it is stored in DCIM/Facebook. When you launch the Gallery app, the image shows up right under «Photos». Also in the gallery app if you click on the «COLLECTIONS» tab, it shows up there under «Camera».
FYI: Creating a symlink basically doesn’t require Android is got rooted, unless you want to create symlinks in Android’s /system partition.
I think it’s really easy to create symlinks on Android.
Example:
peppe1996
Senior Member
When you download a photo from within the Facebook app, it is stored in DCIM/Facebook. When you launch the Gallery app, the image shows up right under «Photos». Also in the gallery app if you click on the «COLLECTIONS» tab, it shows up there under «Camera».
FYI: Creating a symlink basically doesn’t require Android is got rooted, unless you want to create symlinks in Android’s /system partition.
I think it’s really easy to create symlinks on Android.
Example:
jwoegerbauer
Senior Member
My fault was to NOT tell you that symlinks only are possible on partitions that support it, means their filesystem is either ext2 or ext3 or ext4 or yaffs2.
Internal sdcard /storage/emulated/0 where folder DCIM resides has filesystem /dev/fuse. Hence my script example was totally wrong.
peppe1996
Senior Member
My fault was to NOT tell you that symlinks only are possible on partitions that support it, means their filesystem is either ext2 or ext3 or ext4 or yaffs2.
Internal sdcard /storage/emulated/0 where folder DCIM resides has filesystem /dev/fuse. Hence my script example was totally wrong.
jwoegerbauer
Senior Member
IMHO an alternative is to create a so-called bind mount. A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The directories and files in the bind mount are the same as the original. Any modification on one side is immediately reflected on the other side, since the two views show the same data.
Example pseudo code:
In your case this should problemfree work because both /sdcard/DCIM/Facebook and /sdcard/Pictures have the same filesystem.
FYI: mount command by default is available in any Android version.
IMPORTANT: Such a bind mount isn’t persistent: you have to get it created everytime when Android boots up. That in turn requires to have an init.d script what does the job.
peppe1996
Senior Member
IMHO an alternative is to create a so-called bind mount. A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The directories and files in the bind mount are the same as the original. Any modification on one side is immediately reflected on the other side, since the two views show the same data.
Example pseudo code:
In your case this should problemfree work because both /sdcard/DCIM/Facebook and /sdcard/Pictures have the same filesystem.
FYI: mount command by default is available in any Android version.
IMPORTANT: Such a bind mount isn’t persistent: you have to get it created everytime when Android boots up. That in turn requires to have an init.d script what does the job.
Radiolaria
Member
IMHO an alternative is to create a so-called bind mount. A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The directories and files in the bind mount are the same as the original. Any modification on one side is immediately reflected on the other side, since the two views show the same data.
Example pseudo code:
Code:
mount -o bind /some/where /else/where
In your case this should problemfree work because both /sdcard/DCIM/Facebook and /sdcard/Pictures have the same filesystem.
FYI: mount command by default is available in any Android version.
IMPORTANT: Such a bind mount isn’t persistent: you have to get it created everytime when Android boots up. That in turn requires to have an init.d script what does the job.
Hello, i just bring this here up again because i have a similar problem.
I tryed your command and it passed without errors. But without the wished effect.
The last line appears after i try to mount the folder. Does anybody k ow what goes wrong here?
Источник
Symbolic link (symlink) with rooted Android 10
Breadcrumb
peppe1996
Senior Member
jwoegerbauer
Senior Member
When you download a photo from within the Facebook app, it is stored in DCIM/Facebook. When you launch the Gallery app, the image shows up right under «Photos». Also in the gallery app if you click on the «COLLECTIONS» tab, it shows up there under «Camera».
FYI: Creating a symlink basically doesn’t require Android is got rooted, unless you want to create symlinks in Android’s /system partition.
I think it’s really easy to create symlinks on Android.
Example:
peppe1996
Senior Member
When you download a photo from within the Facebook app, it is stored in DCIM/Facebook. When you launch the Gallery app, the image shows up right under «Photos». Also in the gallery app if you click on the «COLLECTIONS» tab, it shows up there under «Camera».
FYI: Creating a symlink basically doesn’t require Android is got rooted, unless you want to create symlinks in Android’s /system partition.
I think it’s really easy to create symlinks on Android.
Example:
jwoegerbauer
Senior Member
My fault was to NOT tell you that symlinks only are possible on partitions that support it, means their filesystem is either ext2 or ext3 or ext4 or yaffs2.
Internal sdcard /storage/emulated/0 where folder DCIM resides has filesystem /dev/fuse. Hence my script example was totally wrong.
peppe1996
Senior Member
My fault was to NOT tell you that symlinks only are possible on partitions that support it, means their filesystem is either ext2 or ext3 or ext4 or yaffs2.
Internal sdcard /storage/emulated/0 where folder DCIM resides has filesystem /dev/fuse. Hence my script example was totally wrong.
jwoegerbauer
Senior Member
IMHO an alternative is to create a so-called bind mount. A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The directories and files in the bind mount are the same as the original. Any modification on one side is immediately reflected on the other side, since the two views show the same data.
Example pseudo code:
In your case this should problemfree work because both /sdcard/DCIM/Facebook and /sdcard/Pictures have the same filesystem.
FYI: mount command by default is available in any Android version.
IMPORTANT: Such a bind mount isn’t persistent: you have to get it created everytime when Android boots up. That in turn requires to have an init.d script what does the job.
peppe1996
Senior Member
IMHO an alternative is to create a so-called bind mount. A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The directories and files in the bind mount are the same as the original. Any modification on one side is immediately reflected on the other side, since the two views show the same data.
Example pseudo code:
In your case this should problemfree work because both /sdcard/DCIM/Facebook and /sdcard/Pictures have the same filesystem.
FYI: mount command by default is available in any Android version.
IMPORTANT: Such a bind mount isn’t persistent: you have to get it created everytime when Android boots up. That in turn requires to have an init.d script what does the job.
Radiolaria
Member
IMHO an alternative is to create a so-called bind mount. A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The directories and files in the bind mount are the same as the original. Any modification on one side is immediately reflected on the other side, since the two views show the same data.
Example pseudo code:
Code:
mount -o bind /some/where /else/where
In your case this should problemfree work because both /sdcard/DCIM/Facebook and /sdcard/Pictures have the same filesystem.
FYI: mount command by default is available in any Android version.
IMPORTANT: Such a bind mount isn’t persistent: you have to get it created everytime when Android boots up. That in turn requires to have an init.d script what does the job.
Hello, i just bring this here up again because i have a similar problem.
I tryed your command and it passed without errors. But without the wished effect.
The last line appears after i try to mount the folder. Does anybody k ow what goes wrong here?
Источник
Что такое симлинки и как их использовать?
Как пользователь компьютера, вы точно сможете сказать, что такое ярлык. Это некий указатель на файл, папку или приложение, так ведь? В целом да, но есть ли другие способы создать указатель на файл и можно ли заставить систему думать, что файл находится совсем в другом месте? На эти вопросы мы постараемся ответить в данной статье.
Симлинк
Симлинк или символическая ссылка похожа на обычный ярлык, но на деле это не то же самое, что ярлык на рабочем столе. С помощью обычного ярлыка вы можете просто открыть файл, который находится совсем в другом месте, а симлинк привязывает этот файл к новому месту, по сути, создавая иллюзию того, что файл находится там, куда указывает симлинк. Звучит сложно? На деле – проще некуда.
Для примера возьмем случай с установкой в компьютер нового, очень быстрого SSD. Вот вы заново установили ОС на новый диск, а все файлы остались на старом, и вместо того, чтобы заново скачивать и устанавливать “тяжелые” программы и игры вы можете просто создать симлинки. То есть, создать видимость присутствия старых файлов на новом месте, без их фактического перемещения.
Как создать симлинк
На Linux и macOS
На Linux вы можете создать символьную ссылку на файл или папку простой консольной командой:
ln -s [/путь/к/файлу] [/путь/к/ссылке]
Поскольку macOS является UNIX-подобной системой, то и команда для создания симлинка отличаться не будет. Стоит отметить, что некоторые файловые менеджеры позволяют создавать симлинки через собственный интерфейс.
На Windows
Для устройств на базе ОС Windows команда будет слегка отличаться для того, чтобы создать симлинк к файлу необходимая строка будет выглядеть:
mklink [/путь/к/файлу] [/путь/к/ссылке]
Для того, чтобы создать симлинк к папке, вам придется добавить флаг /d
mklink /d [/path/to/symlink] [/path/to/file]
Источник
updater-script как правильно составить
Необходимо создать updater-script для вашей кастомной прошивки или мода? Не знаете какие команды писать и что они означают? На все эти ответы можно узнать из данной статьи.
Как должен выглядеть ZIP -обновление (структура)
В корне архива-обновления «должны» находится такие файлы и папки:
- Папка META-INF — обязательно;
- system или data или cache или другие, в зависимости от того, для чего готовилось обновление (не обязательно, так как возможно прошиваете модем или ядро);
- boot.img или recovery.img или zImage (не обязательно, так как возможно обновляете файл в system или data).
Режим сжатия архива должен быть «нормальный» или «обычный» более сильное сжатие Android не поддерживает.
Папка META-INF состоит:
- Папка com
- Файлы подписи обновления
Папка com должна содержать в себе такие файлы и папки:
- Папку android
Папка 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 — вывод сообщения на экран.
Внимание! Программа Android +1 Updater Script
Вашему внимание проект сайта Android +1 — Android +1 Updater Script позволит правильно и очень быстро составить правильный скрипт, даже для пользователей с маленьким опытом!
Как узнать как задать правильные symlink в updater-script
Довольно популярный вопрос о том как узнать какие необходимо создать symlink в updater-script? Все очень просто для этого вам нужно либо компьютер с ADB или установленный терминал на Android. Перейдите в папки:
В каждой из этих папок наберите команду ls -l и вы получите список файлов и symlink.
Узнать список всех папок в System
Для того того чтобы узнать все папки которые есть в разделе /system , понадобиться набрать linux команду:
su
du -a system
После чего вам выдаст весь список папок в разделе.
Узнать все права, uid, gid и список файлов и папок
Для того чтобы узнать все права, uid, gid и список файлов и папок нужно задать следующую команду linux:
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»);
На этом все! Статья updater-script как правильно составить окончена!
Источник