запуск скрипта при загрузке android

Linux для человеков!

Обзоры

Фотогалереи

Помощь при использовании сайта

Новое из блога

Скрипт в автозапуск Android

запуск скрипта при загрузке android

запуск скрипта при загрузке android

запуск скрипта при загрузке android

Даже не верится, что нашлись люди которые пользуются запуском системных служб через стартовые скрипты в Android.

запуск скрипта при загрузке android

А у меня в TV-Box Mele A2000 (ICS 4.0) папки init.d не нашлось, а я так надеялся, хотел при запуске шары монтировать. Теперь и не знаю как быть, где там вообще автозапуск храниться.

запуск скрипта при загрузке android

Боюсь не смогу помочь. Во первых у вас ICS, а во вторых каждый вендор сам решает как устройству грузиться. В мире Android вообще многое сугубо индивидуальное в рамках одного устройства.

запуск скрипта при загрузке android

А если по данному пути /system/etc/init.d/ нет директории init.d?

запуск скрипта при загрузке android

Создать и попробовать закинуть в нее скрипт. Разумеется с правами на выполнение.

запуск скрипта при загрузке android

запуск скрипта при загрузке android

В следующий раз бери какого нибудь производителя который хоть исходники выкладывает с README внутри.

запуск скрипта при загрузке android

Как от рута запускать?

не прокатываеть. Any ideas?

Сначала сказал бы где это ты выполняешь, в терминале или при загрузке. И писать кавычки не надо. Если скрипт, то он должен начинаться с

запуск скрипта при загрузке android

Задача в том чтобы монтировать папки при старте системы.

Источник

Работа с cron под Android и добавление shell-скрипта в автозапуск при загрузке устройства

запуск скрипта при загрузке android

В связи с тем, что мобильные устройства уже давно имеют обширный функционал, то задачи автоматизации можно смело переносить и на них. И, как нельзя лучше, здесь так же хорошо подходит cron для их выполнения. Но если в «обычных» Linux системах настройка cron занимает мало времени, то Android устройство требует более сложной работы по его настройке.

Если тебе интересна тема автоматизации и ты хочешь, чтобы твои shell-скрипты запускались сразу же после загрузки устройства, да еще и могли бы запускаться по таймеру — добро пожаловать под кат!

Предисловие

Я занимаюсь автоматизацией мобильных устройств под Android. И во время выполнения автоматических скриптов происходит множество непредвиденных ситуаций, даже если для тестирования используются одинаковые устройства.

Самые популярные проблемы:

0. Скрипт автоматизации выполняет не то, что ты хотел
1. Мобильное приложение автоматически выгружается
2. Автоматическая перезагрузка телефона
3. Мобильное приложение автоматически не запускается после перезапуска
4. Wi-Fi модуль произвольно отключается, не находит сеть, не подключается к сети
5. Мобильная сеть неожиданно пропала
6. Телефон ушел в спящий режим
7. Отпал прокси или сам сервер или сервер вернул странный ответ

Из-за этого приходится постоянно следить за устройством и отлавливать эти непредвиденные ситуации.

запуск скрипта при загрузке android

Таким образом, я пришел к тому, что cron с «правильными» скриптами позволит отследить программные сбои и восстановить скрипт автоматизации или запустить его заново. Но как оказалось, хотя Android содержит ядро Linux, но есть особые нюансы, с которыми пришлось разбираться. Итак, давайте приступим к настройке!

Настройка Cron

Настраиваем окружение

Настройка ручного запуска

4. Создадим простой crontab файл:

Теперь у нас есть задание, которое каждую минуту будет добавлять слово text в файл /sdcard/test.txt
Запускаем: и получаем следующий лог:

Конечно, немного удивляет, ведь если мы выполним команду whoami то в результате она вернёт root.

5. Добавим пользователя root, раз crond просит:

Из-за отсутствия данного файла, я понял, что в Android системе он совсем не задействован. Если вы уверены в том, где вы будете хранить свои crontab файлы, то вы можете заменить строку /system/etc/crontabs на нужную вам. Снова выполняем команду

И получаем следующее:

Хотя, если верить логу задача в crond прописалась, но в моем случае файл не создался. Решить проблему можно очень просто:

Ну хочет он, чтобы существовала там директория, кто мы такие, чтобы ему запрещать! Запускаем снова и видим:

Ошибки ушли, и появилась строка crond: child running /system/bin/sh. Наконец-то cron у нас успешно завелся, и можно переходить ко второй части!

Автоматическая загрузка shell-скрипта

В Linux системе есть директория init.d, которая отвечает за автозапуск сразу же после загрузки системы, поэтому попробуем идти по этому пути!

1. Проверяем, существует ли данная директория у вас на устройстве (это /etc/init.d либо /system/etc/init.d — это тот же смонтированный раздел etc ). В моем случае её нет. Ну что, тогда создаем:

Теперь добавим туда какой-нибудь простенький скрипт, например:

Перезагружаем устройство и смотрим, случилось ли чудо… К сожалению, у меня файл не появился.

Исследуем систему дальше и ищем какой-нибудь init файл, который может запускать скрипты после запуска. У меня на устройстве оказался файл в /init.rc. Ну что, попробуем его изменить и перезагрузим устройство:

Но файл опять не создался. Идем смотреть на файл /init.rc и наша запись пропала и файл как бы и не менялся, т.к. дата создания стоит совсем какая-то странная (в моем случае 01 янв. 70 05:00:00).

Продолжаем разбираться, и оказывается что данный файл храниться в boot.img, и каждый раз достается из него. И для того, чтобы изменить функционал файла init.rc нужно выполнить все это.

Но есть более простой способ, который поможет решить данную задачу. Для этого способа мы можем использовать следующий shell-скрипт (скажем спасибо Ryuinferno):

Приступаем к внедрению скрипта! В моем случае он будет называться init.sh.
1. Загружаем файл на sdcard мобильного устройства:

2. Копируем в память мобильного устройства и устанавливаем нужные права:

3. Запускаем на выполнение:

И обращаем внимание на лог, который выводится. Вот мой лог:

Как видим из лога, ошибок нет, поэтому смело перезагружаем устройство! Возможно у кого-то уже все заработало и вы смогли найти файл /data/Test.log, но у меня его нет. Проверим директорию /system/etc/init.d используя команду ls:

Как видим, задачи успешно созданы. Возможно все же придется менять boot.img, но давайте в начале проверим, а где у нас файл install-recovery.sh с помощью команды

Как можем заметить, у нас 2 файла, которые лежат в разных местах. По дате создания мы можем заметить, что скрипт создал файл в директории /system/etc/install-recovery.sh, хотя, возможно, в некоторых случаях он должен создавать его в /system/etc. Давайте переименуем файл в bin и скопируем файл из etc:

Тут u:object_r:system_file:s0 и является контекстов безопасности.

И снова перезагружаем устройство… И вот, наконец-то долгожданный УСПЕХ! Файл /data/Test.log появился!

Раз все работает, идем в /system/etc/init.d и создаем shell-скрипт. А в нем как-раз запустим наш crond на выполнение:

После загрузки проверяем, запустился ли crond:

И на этом могли бы мы уже закончить, но давайте подождем минуту и посмотрим, произошла ли запись в наш файл… Ну как вы уже поняли, опять ни чего не сработало. Дело в том, что данный процесс нужно запустить от супер пользователя. Изменим скрипт в файле 99cronstart:

UPD: Возможно в вашем случае su будет иметь другой путь, тогда воспользуйтесь командой which su и замените путь, на ваш.

Теперь наше Android устройство поддерживает и задачи cron и может содержать shell-скрипты для автоматического запуска!

Ну и напоследок, скрипт, который будет запускать наше приложение, если его нет в процессах и сохранять информацию о том, что находилось на главном экране до запуска нашего приложения:

Источник

Как я могу запустить скрипт при загрузке?

Я привык запускать скрипты при загрузке в Linux, но я не уверен, как это сделать в Android. Я бы хотел, чтобы мой SSH-демон запускался, поэтому я всегда смогу подключиться. Как запустить произвольный скрипт при загрузке Android? Было бы предпочтительнее сделать это вне Далвика.

Просматривая мою файловую систему Android, я обнаружил, что у нее действительно есть /etc/init.d/ каталог. Посмотрев туда, я нашел /etc/init.d/20userinit следующие строки:

Разумеется, это именно то , что мне было нужно, я написал на своем компьютере следующий скрипт, а затем перенес его на свое устройство:

/data/init.sh запускается при загрузке, если у вас есть root, вы можете редактировать его как хотите. Быть осторожен 😉

Редактировать: По-видимому, вам может понадобиться вставить отредактированный скрипт в образ загрузки. Информация о том, как это сделать, здесь: http://forum.xda-developers.com/showthread.php?t=443994

Смотри в /etc/ каталог. Обычно он помещается в /system/ раздел, который вы можете смонтировать как RW:

Некоторые вышеупомянутые шаги могут быть заменены на:

а позже перемонтируем RO:

Теперь ваша задача найти исполняемый *rc файл или файл, который вы изменяете для достижения своей цели:

Google о каждом кандидате, чтобы узнать, как этот файл был использован.

Хорошим кандидатом для включения пользовательских скриптов являются строки из:

Например я обнаружил, /etc/mkshrc что используется оболочкой Korn. Я обновляю этот файл для расширения PATH env var, и теперь каждый раз, когда я делаю, у adb shell меня есть символические ссылки Busybox в моем PATH!

Смотрите также трудный путь (если вам не повезло с поиском волшебного файла): https://stackoverflow.com/questions/9768103/make-persistent-changes-to-init-rc

Я перепробовал все эти методы, и ни один из них не помог мне. Однако то, что сработало, было основано на ответе лорда-ральфа-адольфа здесь. Как запустить скрипт при загрузке в CM12.1?

в основном, найдите файл /system/etc/install-recovery.sh и добавьте следующую строку в начале /data/init.sh &

Готово! Теперь вы можете положить все, что вы хотите, /data/init.sh и он будет работать при запуске. Если файл /system/etc/install-recovery.sh не находится в вашей системе, то этот ответ не будет работать для вас. Не беспокойтесь о создании этого.

Простой способ (рабочий):

Подготовьте ваши команды после загрузки в скрипте, скажем / 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)

Источник

Работа с cron под Android и добавление shell-скрипта в автозапуск при загрузке устройства

запуск скрипта при загрузке android

В связи с тем, что мобильные устройства уже давно имеют обширный функционал, то задачи автоматизации можно смело переносить и на них. И, как нельзя лучше, здесь так же хорошо подходит cron для их выполнения. Но если в «обычных» Linux системах настройка cron занимает мало времени, то Android устройство требует более сложной работы по его настройке.

Если тебе интересна тема автоматизации и ты хочешь, чтобы твои shell-скрипты запускались сразу же после загрузки устройства, да еще и могли бы запускаться по таймеру — добро пожаловать под кат!

Предисловие

Я занимаюсь автоматизацией мобильных устройств под Android. И во время выполнения автоматических скриптов происходит множество непредвиденных ситуаций, даже если для тестирования используются одинаковые устройства.

Самые популярные проблемы:

0. Скрипт автоматизации выполняет не то, что ты хотел
1. Мобильное приложение автоматически выгружается
2. Автоматическая перезагрузка телефона
3. Мобильное приложение автоматически не запускается после перезапуска
4. Wi-Fi модуль произвольно отключается, не находит сеть, не подключается к сети
5. Мобильная сеть неожиданно пропала
6. Телефон ушел в спящий режим
7. Отпал прокси или сам сервер или сервер вернул странный ответ

Из-за этого приходится постоянно следить за устройством и отлавливать эти непредвиденные ситуации.

запуск скрипта при загрузке android

Таким образом, я пришел к тому, что cron с «правильными» скриптами позволит отследить программные сбои и восстановить скрипт автоматизации или запустить его заново. Но как оказалось, хотя Android содержит ядро Linux, но есть особые нюансы, с которыми пришлось разбираться. Итак, давайте приступим к настройке!

Настройка Cron

Настраиваем окружение

Настройка ручного запуска

4. Создадим простой crontab файл:

Теперь у нас есть задание, которое каждую минуту будет добавлять слово text в файл /sdcard/test.txt
Запускаем: и получаем следующий лог:

Конечно, немного удивляет, ведь если мы выполним команду whoami то в результате она вернёт root.

5. Добавим пользователя root, раз crond просит:

Из-за отсутствия данного файла, я понял, что в Android системе он совсем не задействован. Если вы уверены в том, где вы будете хранить свои crontab файлы, то вы можете заменить строку /system/etc/crontabs на нужную вам. Снова выполняем команду

И получаем следующее:

Хотя, если верить логу задача в crond прописалась, но в моем случае файл не создался. Решить проблему можно очень просто:

Ну хочет он, чтобы существовала там директория, кто мы такие, чтобы ему запрещать! Запускаем снова и видим:

Ошибки ушли, и появилась строка crond: child running /system/bin/sh. Наконец-то cron у нас успешно завелся, и можно переходить ко второй части!

Автоматическая загрузка shell-скрипта

В Linux системе есть директория init.d, которая отвечает за автозапуск сразу же после загрузки системы, поэтому попробуем идти по этому пути!

1. Проверяем, существует ли данная директория у вас на устройстве (это /etc/init.d либо /system/etc/init.d — это тот же смонтированный раздел etc ). В моем случае её нет. Ну что, тогда создаем:

Теперь добавим туда какой-нибудь простенький скрипт, например:

Перезагружаем устройство и смотрим, случилось ли чудо… К сожалению, у меня файл не появился.

Исследуем систему дальше и ищем какой-нибудь init файл, который может запускать скрипты после запуска. У меня на устройстве оказался файл в /init.rc. Ну что, попробуем его изменить и перезагрузим устройство:

Но файл опять не создался. Идем смотреть на файл /init.rc и наша запись пропала и файл как бы и не менялся, т.к. дата создания стоит совсем какая-то странная (в моем случае 01 янв. 70 05:00:00).

Продолжаем разбираться, и оказывается что данный файл храниться в boot.img, и каждый раз достается из него. И для того, чтобы изменить функционал файла init.rc нужно выполнить все это.

Но есть более простой способ, который поможет решить данную задачу. Для этого способа мы можем использовать следующий shell-скрипт (скажем спасибо Ryuinferno):

Приступаем к внедрению скрипта! В моем случае он будет называться init.sh.
1. Загружаем файл на sdcard мобильного устройства:

2. Копируем в память мобильного устройства и устанавливаем нужные права:

3. Запускаем на выполнение:

И обращаем внимание на лог, который выводится. Вот мой лог:

Как видим из лога, ошибок нет, поэтому смело перезагружаем устройство! Возможно у кого-то уже все заработало и вы смогли найти файл /data/Test.log, но у меня его нет. Проверим директорию /system/etc/init.d используя команду ls:

Как видим, задачи успешно созданы. Возможно все же придется менять boot.img, но давайте в начале проверим, а где у нас файл install-recovery.sh с помощью команды

Как можем заметить, у нас 2 файла, которые лежат в разных местах. По дате создания мы можем заметить, что скрипт создал файл в директории /system/etc/install-recovery.sh, хотя, возможно, в некоторых случаях он должен создавать его в /system/etc. Давайте переименуем файл в bin и скопируем файл из etc:

И снова перезагружаем устройство… И вот, наконец-то долгожданный УСПЕХ! Файл /data/Test.log появился!

Раз все работает, идем в /system/etc/init.d и создаем shell-скрипт. А в нем как-раз запустим наш crond на выполнение:

После загрузки проверяем, запустился ли crond:

И на этом могли бы мы уже закончить, но давайте подождем минуту и посмотрим, произошла ли запись в наш файл… Ну как вы уже поняли, опять ни чего не сработало. Дело в том, что данный процесс нужно запустить от супер пользователя. Изменим скрипт в файле 99cronstart:

Теперь наше Android устройство поддерживает и задачи cron и может содержать shell-скрипты для автоматического запуска!

Ну и напоследок, скрипт, который будет запускать наше приложение, если его нет в процессах и сохранять информацию о том, что находилось на главном экране до запуска нашего приложения:

Источник

Запуск скрипта при загрузке android

Нужно наличие папки Init.d изначально, простое создание и запихивание туда твиков не дадут никакого эффекта!

С недавних пор авторы прошивок начали лазить по XDA-Developers и добавлять в свои прошивки разные твики и скрипты взятые оттуда тем самым улучшая что-либо, ниже предложена большая часть твиков, их установки и тому подобное. Я разделил все твики и скрипты на несколько уровней сложности при установке.

Первый уровень. Редактирование Build.prop с помощью Root Explorer, но я рекомендую скидывать Build.prop к себе на компьютер и редактировать оттуда, так как в в файле уже могут находится строки которые вы хотите добавить, а двойное сочетание строк может привести к увеличению времени загрузки телефона, а если там вбиты ещё и разные значения то у вас есть все шансы залипнуть на бутлого.

Всем файлам в папке init.d нужно выставить соответствующие права.

УРОВЕНЬ 1. BUILD.PROP

Еще твики интернета Тут

Затем wipe оба caches и reboot.

Дополнения от пользователей Ⅳ представлены ниже, всю информацию о них спрашивать у тех кто её выложил!

2. Распаковываем его в init.d, в Root Explorer выставляем права «777» т.е. все галки
3.Ребутимся

# Move dalvik-cache to /cache

busybox chown 1000:1000 /cache/dalvik-cache
busybox chmod 0771 /cache/dalvik-cache

Почему HTC по сравнению с Motorola показывает такие большие результаты в Quadrant?
Точно работает на моторолах, на других аппаратах не проверял.

а) Увеличение очков в quadrant на 600, возможно производительность вырастит где-нибудь ещё.
Спойлер (+/-)
Я все делал прямо в телефоне, через root explorer
Но вы можете выгрузить /system/build.prop и поменять заветные свойства на компьютере, если не уверены в своих силах.

6) Меняем false на true
7) Сохраняем файл обратно
8) Монтируем систему обратно в ro
9) Перезагружаем телефон

Не удается найти некоторые приложения в маркете, что делать?

Должно работать на любом аппарате.

Не находит некоторые приложения на рынке, хотя эти приложения совместимы с аппаратом. Это обычно бывает из-за того, что прошивка неофициальная (или стоковая 2.3). Для того, чтоб маркет «увидел» программы, которые «видел» раньше на стоковых прошивках, нужно изменить некоторые строки в /system/build.prop для того, чтоб маркет принимал вашу прошивку за стоковую
Например, у вас установлен CyanogenMod 7 RC1.5 (Android 2.3.5). Открываем каким-либо проводником с рут доступом файл /system/build.prop и ищем строки
Код
ro.build.description=umts_jordan-user 2.3.5 JOREM_U3_3.4.2-179-4 1315058180 release-keys
ro.build.fingerprint=MOTO/MB525_JOREM_U3/umts_jordan/jordan:2.3.5/3.4.2-179-4/1315058180:user/release-keys

Меняем их на следующие:

Сохраняем изменённый файл и проверяем права (должны быть rw-r—r—), делаем вайп кешей.
Попробуйте установить время вручную на 11:55 и пусть оно перйдёт за полночь. Проверьте маркет снова. Если вы все еще не видите приложений, то есть два варианта:
1. нужно сохранить данные программ с помощью титаним бекап и сделать полный вайп, затем восстановить данные.
2. Если у вас кастомная прошивка, которая устанавливается через CWM, то нужно поправить файл /system/build.prop в исходнике прошивки, удалить файлы подписи (файлы CERT.RSA, CERT.SF и MANIFEST.MF, лежащие в папке [ваша прошивка].zip/META-INF/) и перепрошить телефон снова, без полного вайпа (только вайп кешей).В этом случае потерь данных можно избежать.

Как улучшить работу GPS?
должно работать на всех аппаратах

Подредактировал файл /etc/location.cfg следующим образом:

От себя могу добавить скрипт переноса дальвик кэша в /cache 🙂 (для увеличения места под установку пользовательских приложений), вот он:
—————————————————————————-
#!/system/bin/sh
#
# Move dalvik-cache to /cache

busybox chown 1000:1000 /cache/dalvik-cache
busybox chmod 0771 /cache/dalvik-cache

вот еще скриптики для init.d(правда я их не пробовал, но должно работать):
Данный скрипт ставит частоту при выключенном экране(известный всем профиль Screen Off из SetCPU) и при включенном(рабочее состояние).

Как поставить и редактировать:

сами скрипты:
запуск скрипта при загрузке androidcpuclock.rar ( 1,54 КБ )

Задумка создать такую тему интересная, но я считаю что шапка должна разбиваться на версии ядер и андроида!

Во первых все твики и скрипты которые мы все юзаем не на всех аппаратах работают!

Так вот, если в ядре нет поддержки какой либо функции, то до одного места те скрипты и твики, они ничего давать не будут.

Вот к примеру скрипт cpuclock от Р500 что выложен выше, так же может не корректно работать на разных версиях того же 32/35 ядра, так как там вбиты все доступные частоты для разгона, а каждый ромодел может добавить свои или переделать, потому этот скрипт не заработает на ГТ540, тем более на других телефонах.
Я это все веду к тому что здесь каждый твик и скрипт индивидуальный для каждого телефона и для каждого ядра! А в наше время уже столько ковырятелей развелось, что можно утонуть в море Ядер и Прошивок!

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

А еще стоит добавить ссылку на Бузибокс который очень необходим для всех этих манипуляций!

Кому надо вот зип: запуск скрипта при загрузке androidzip.zip ( 220,77 КБ )
(говорят некачается)
вот другой запуск скрипта при загрузке androidzip.rar ( 107,09 КБ )

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *