Большинство вопросов, которые я могу найти в связи с этим, относятся к 2011 году и около того, так что, возможно, неудивительно, что с тех пор все изменилось. Я перепробовал множество вещей, но без результатов.
В нем есть несколько скриптов /system/etc/init.d
(которые также отображаются /etc/init.d
на моем устройстве). В частности, есть 00banner
скрипт, который должен регистрировать приветственное сообщение. Приветственное сообщение никогда не появляется в logcat.
Я разместил здесь свой собственный сценарий, который в итоге был сведен только к этому:
#!/system/bin/sh
log -t mytest Testing
Ничего. Никогда не появляется в logcat, если не запускается вручную через терминал. Тогда это работает.
Здесь также есть 90userinit
файл, который вызывается, /data/local/userinit.sh
если он существует. Я создал его с тем же содержанием, что и выше. Опять же, ничего не появляется в logcat. Что неудивительно, так как если 00banner
не будет работать, то и этого не будет.
Я искал что-нибудь с именем "init.rc", но ничего такого не существует нигде на моем устройстве.
Все мои скрипты имеют 755 разрешений.
Что еще я могу попробовать? (кроме приложений, которые запускают скрипты для меня)
источник
Ответы:
Существует простой способ добавить поддержку init.d для любого корневого Android для версий 4.0 и выше, Google сделал скрипт, который запускается при загрузке, как суперпользовательский скрипт,
install-recovery.sh
он используется для перепрошивки стокового восстановления при каждой загрузке, которую они считают хорошей безопасность для предотвращения пользовательских восстановлений, но он открыл новую дыру, которая может быть использована пользователями для подделки функции init.d. Зависимости : чтобы этот метод работал, нужно следующееrun-parts
символической ссылкой на ваш путь, как/system/xbin
/system
возможностью монтирования какrw
Метод I: (Самый простой способ!)
Метод II: (сложность: средняя)
Загрузите этот zip, распакуйте его и поместите init.sh на свою SDCard (в этом примере это может быть с одного
/sdcard
устройства на другое).Теперь откройте терминал или используйте
adb shell
с компьютера и запустите скрипт.su
cp /sdcard/init.sh /data/tmp/init.sh
chmod 777 /data/tmp/init.sh
/data/tmp/init.sh
скрипт запустится и попросит вас перезагрузиться дважды, вот и все, что у вас есть официальная поддержка init.d: D
Справка: [MOD] [APK + SCRIPT + ZIP] Включить Init.d для любых телефонов без необходимости в пользовательских ядрах !!!
источник
Редактировать: я видел конец сообщения, это один из способов, я постараюсь добавить без приложений как можно скорее (не дома, публикации с помощью мобильного телефона), но вы можете использовать это, если что-то другое не работает.
Вы можете попробовать использовать приложение под названием Tasker .
Это стоит 3,29 $ и требует root-доступа, но может запускать сценарии оболочки. Кроме того, у него есть пробная версия, так что вы можете попробовать перед покупкой.
Сначала создайте задание. Перейдите на вкладку «Задача», нажмите «+», введите название задачи. Теперь перейдите снова + знак и введите
shell
фильтр. Вы найдете вариантRun Shell
, выберите его и настройте в соответствии со своими потребностями.После этого вернитесь на первую вкладку - Профили, нажмите + знак, чтобы создать новый. Выберите Event как тип, зайдите System и выберите Device Boot. Вернитесь, и вам будет предложено выбрать задачу. Теперь выберите предварительно созданное задание, и вы готовы к работе!
источник
Это требует от вас прошить zip, но затем вы можете поместить свои скрипты в / system / etc / startup, после чего они должны автоматически запуститься с телефона.
http://forum.xda-developers.com/showthread.php?t=2664645
Также из моего комментария под вопросом. Я попытался просмотреть свою историю, но не смог найти ссылку, где люди утверждали, что у CM был свой собственный способ запуска скриптов при загрузке.
Редактировать. После еще нескольких копаний это не CM, по крайней мере, делает свое дело для скриптов. Это ядро. Не все ядра поддерживают init.d для Android. Если вы публикуете, какое устройство вы используете. Я могу найти ядро, которое поддерживает пользовательские скрипты при загрузке для вас.
источник
У меня также есть та же проблема при выполнении файла сценария в терминале в CM12.1. Решение состоит в том, чтобы скопировать скрипт в
/data
папку и выполнить его. Поэтому я думаю, что CM 12 разрешает выполнение сценария только из определенного места.источник
Простой способ (рабочий):
Подготовьте ваши команды после загрузки в скрипте, скажем / system / xbin / post-boot (установите exec perm)
Добавьте указанный выше путь к пользовательскому сценарию в конце /system/etc/init.qcom.post_boot.sh
Например:
echo / system / xbin / post-boot >> /system/etc/init.qcom.post_boot.sh
Выполнено!
(Если вы не можете найти qcom post_boot (устройства Qualcomm), поищите сценарии post_boot)
источник
Следующие шаги для запуска скриптов во время загрузки. (Обязательно adb)
это работает для меня. Я надеюсь, что это поможет вам.
источник