Многие ромоделы наверное знают, что вшить xposed в прошивку во время установки не так уж то просто, как это делается с Gapps, SuperSu и т.д.. Возможно есть и "правильные" методы в сети, но в гугле я не нашел :(. Итак, как же вшить xposed в прошивку во время установки прошивки?
Сразу оговорюсь, что я только начинающий в bash-скриптах. Свой опыт проводил на Xiaomi Redmi 3s Miui v8, arm64, android 6.0.1. И у меня получилось все же костылем вшить установку xposed.
Итак, начнем.
Скажем, у вас уже готовая прошивка и не хватает строки в update-script и файлы для добавления xposed в прошивку.
В update-script добавляем такие строки:
Для старых update-binary, который не понимает команды типа set_metadata
run_program("/sbin/busybox", "sh", "/tmp/1.sh");
Для новых update-binary, который наоборот не понимает старые команды типа set_perm
Файлы уже в прошивке есть и если запустить прошивку, то приложение xposed installer сообщит типа, что xposed установлен, но не активирован. Это происходит из-за того, что для файлов не правильно выставлены права и симлинки.
Теперь постараемся исправить это.
Как вы поняли, мы добавили в update-script запуск скрипта 1.sh. Теперь разберем что будет там прописано.
Создаем файл в notepad++ 1.sh. Изменяем формат на Unix (Правка - Формат конца строк - unix) и изменяем кодировку на UTF-8 без ВОМ. Теперь прописываем следующие строки (комментарии можно и удалить):
На этом все...По аналогии можете собрать и для других версии (архитектуры и т.д.) xposed.
Есть еще другой метод. Но он имеет 1 минус. Скажем вы находитесь в рекавери и устанавливаете прошивку со вшитым следующим методом xposed-ом, то необходимо обязательно перезагрузиться снова в рекавери, чтобы xposed установился. Меня этот метод не устроил, т.к. мой TWRP не умел перезагружаться в рекавери :(
Итак, создаем файл в notepad++ openrecoveryscript. Изменяем формат на Unix (Правка - Формат конца строк - unix) и изменяем кодировку на UTF-8 без ВОМ. Теперь прописываем следующие строки:
Удачных прошивок!
Сразу оговорюсь, что я только начинающий в bash-скриптах. Свой опыт проводил на Xiaomi Redmi 3s Miui v8, arm64, android 6.0.1. И у меня получилось все же костылем вшить установку xposed.
Итак, начнем.
Скажем, у вас уже готовая прошивка и не хватает строки в update-script и файлы для добавления xposed в прошивку.
В update-script добавляем такие строки:
Для старых update-binary, который не понимает команды типа set_metadata
run_program("/sbin/busybox", "mount", "/system"); package_extract_dir("xposed/system", "/system"); package_extract_file("xposed/1.sh", "/tmp/1.sh"); set_perm(0, 0, 0777, "/tmp/1.sh");
run_program("/sbin/busybox", "mount", "/system"); package_extract_dir("xposed/system", "/system"); package_extract_file("xposed/1.sh", "/tmp/1.sh"); set_metadata("/tmp/1.sh", "uid", 0, "gid", 0, "mode", 0777); run_program("/sbin/busybox", "sh", "/tmp/1.sh");Как уже поняли, файлы xposed должны лежать в папке xposed/system. Перечень папок из сборки xposed-v87-sdk23-arm64-MIUI-edition-by-SolarWarez-20161126 выглядит так:
-system --system/bin ---system/app_process32_xposed ---system/app_process64_xposed ---system/dex2oat ---system/oatdump ---system/patchoat --system/framework ---system/framework/XposedBridge.jar --system/lib ---system/lib/libart.so ---system/lib/libart-compiler.so ---system/lib/libsigchain.so ---system/lib/libxposed_art.so --system/lib64 ---system/lib64/libart.so ---system/lib64/libart-disassembler.so ---system/lib64/libsigchain.so ---system/lib64/libxposed_art.so --system/xposedВыше перечисленные файлы закидываем в прошивку по пути xposed/system.
Файлы уже в прошивке есть и если запустить прошивку, то приложение xposed installer сообщит типа, что xposed установлен, но не активирован. Это происходит из-за того, что для файлов не правильно выставлены права и симлинки.
Теперь постараемся исправить это.
Как вы поняли, мы добавили в update-script запуск скрипта 1.sh. Теперь разберем что будет там прописано.
Создаем файл в notepad++ 1.sh. Изменяем формат на Unix (Правка - Формат конца строк - unix) и изменяем кодировку на UTF-8 без ВОМ. Теперь прописываем следующие строки (комментарии можно и удалить):
#!/sbin/sh mv -f /system/bin/app_process /system/bin/app_process_orig ### бекапим, можно в принципе и удалить :) mv -f /system/bin/app_process32 /system/bin/app_process32_orig ### бекапим, можно в принципе и удалить :) mv -f /system/bin/app_process64 /system/bin/app_process64_orig ### бекапим, можно в принципе и удалить :) chmod 755 /system/bin/app_process32_xposed ### изменяем права файлу chown 0.2000 /system/bin/app_process32_xposed ### изменяем пользователя файла chcon -h 'u:object_r:zygote_exec:s0' /system/bin/app_process32_xposed ### изменяет контекст SELinux файла. Если задумываетесь откуда берется значение, то из boot, а именно из файла file_contexts ln -s /system/bin/app_process32_xposed /system/bin/app_process32 ### создаем симлинк chmod 755 /system/bin/app_process64_xposed ### дальше думаю уже не стоит комментировать chown 0.2000 /system/bin/app_process64_xposed chcon -h 'u:object_r:zygote_exec:s0' /system/bin/app_process64_xposed ln -s /system/bin/app_process64_xposed /system/bin/app_process64 ln -s /system/bin/app_process64 /system/bin/app_process chmod 755 /system/bin/dex2oat chown 0.2000 /system/bin/dex2oat chcon -h 'u:object_r:dex2oat_exec:s0' /system/bin/dex2oat chmod 755 /system/bin/oatdump chown 0.2000 /system/bin/oatdump chmod 755 /system/bin/patchoat chown 0.2000 /system/bin/patchoat chcon -h 'u:object_r:dex2oat_exec:s0' /system/bin/patchoat chmod 644 /system/framework/XposedBridge.jar chown 0.0 /system/framework/XposedBridge.jar chmod 644 /system/lib/libart.so ### начиная отсюда можно вместо всего chmod для /system/lib, заменить на одну всего лишь строку chmod -R /system/lib chown 0.0 /system/lib/libart.so ### начиная отсюда можно вместо всего chown для /system/lib, заменить на одну всего лишь строку chown -R /system/lib chmod 644 /system/lib/libart-compiler.so chown 0.0 /system/lib/libart-compiler.so chmod 644 /system/lib/libsigchain.so chown 0.0 /system/lib/libsigchain.so chmod 644 /system/lib/libxposed_art.so chown 0.0 /system/lib/libxposed_art.so chmod 644 /system/lib64/libart.so ### Тут также, начиная отсюда можно вместо всего chmod для /system/lib64, заменить на одну всего лишь строку chmod -R /system/lib64 chown 0.0 /system/lib64/libart.so ### начиная отсюда можно вместо всего chown для /system/lib64, заменить на одну всего лишь строку chown -R /system/lib64 chmod 644 /system/lib64/libart-disassembler.so chown 0.0 /system/lib64/libart-disassembler.so chmod 644 /system/lib64/libsigchain.so chown 0.0 /system/lib64/libsigchain.so chmod 644 /system/lib64/libxposed_art.so chown 0.0 /system/lib64/libxposed_art.soСохраняем и закидываем файл 1.sh по пути xposed/1.sh.
На этом все...По аналогии можете собрать и для других версии (архитектуры и т.д.) xposed.
Есть еще другой метод. Но он имеет 1 минус. Скажем вы находитесь в рекавери и устанавливаете прошивку со вшитым следующим методом xposed-ом, то необходимо обязательно перезагрузиться снова в рекавери, чтобы xposed установился. Меня этот метод не устроил, т.к. мой TWRP не умел перезагружаться в рекавери :(
Итак, создаем файл в notepad++ openrecoveryscript. Изменяем формат на Unix (Правка - Формат конца строк - unix) и изменяем кодировку на UTF-8 без ВОМ. Теперь прописываем следующие строки:
install cache/recovery/xposed.zipСохраняем и закидываем к примеру в корень прошивки. Теперь добавляем строки в update-script (в конец):
run_program("/sbin/mkdir", "/cache/recovery"); package_extract_file("xposed.zip", "/cache/recovery/xposed.zip"); package_extract_file("openrecoveryscript", "/cache/recovery/openrecoveryscript"); sleep ("5"); run_program("/sbin/reboot", "recovery");Как поняли, установщик xposed закидываем в корень с названием xposed.zip и все. Данным методом можно вшивать в прошивку практический все другие патчи.
Удачных прошивок!
Комментарии
Отправить комментарий