Как установить скрипт android

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

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

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

Предисловие

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

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

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

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

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

Настройка Cron

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

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

Как видно из последней строки, инструкции по умолчанию должны храниться в директории /var/spool/cron/crontabs, которая автоматически не создается и если мы запустим команду и потом проверим запустился ли процесс через , то его там может и не быть, т.к. он не смог получить какие-либо инструкции. Поэтому давайте выполним команду и посмотрим в чем причина. Скорее всего у вас будет подобная ошибка:
crond: can’t change directory to ‘/var/spool/cron/crontabs’: No such file or directory . В данном случае это нормально, т.к. в будущем мы сами укажем путь до исолняемого crontab файла.

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:

UPD: Обратите внимание, что контекст безопасности у обоих файлов должен совпадать. И если вдруг при копировании у вас он сбился (хотя по идее, такого быть не должно), вам необходимо его будет восстановить (например, через утилиту chcon). Посмотреть полную информацию по файлу можно с помощью ls -lZ:

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

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

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

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

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

Читайте также:  Jewels legend для андроид

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

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

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

Источник

DroidScript – простой и функциональный инструмент для разработки мобильных приложений под Android

Что такое DroidScript?

DroidScript представляет собой приложение Android, которое включает в себя среду разработки и выполнения программного кода на Android устройстве. Он позволяет создавать приложения двух типов – JavaScript (с нативным интерфейсом) и HTML (гибридные).

Для создания нативного UI и доступа к программно-аппаратным ресурсам Android, JavaScript используется совместно с API DroidScript, который позволяет работать с WebView, SQLite, email, SMS, WebGL, сенсорами, Web-серверами, сокетами, спрайтовой анимацией и многим другим, а также осуществлять взаимодействие с внешними устройствами посредством Bluetooth, WiFi, USB и LAN.

Впечатляющая функциональность ”из коробки” – это одна из особенностей DroidScript. Другая особенность – простота его использования. В чём она состоит? Прежде всего, в кодировании. Ниже дан пример кода простого приложения:

Всё кодируется на JavaScript и API DroidScript без использования xml-разметки, подключения библиотек, создания классов и др.

В DroidScript нет визуальных средств проектирования интерфейса, как в Android Studio, AIDE или MIT App Inventor, но в нём можно реализовать LivePreview на Android для ещё более быстрой разработки интерактивных прототипов, а также расширить функциональность при помощи плагинов, написанных на JavaScript или Java.

Простота работы с DroidScript заключается не только в кодировании. Он изначально разрабатывался так, чтобы дать начинающим разработчикам под Android просто и быстро погрузиться в этот процесс.

Установка и настройка

В случае отсутствия под рукой телефона или планшета с операционной системой Android можно воспользоваться её эмулятором, например, BlueStacks или Nox APP Player.

Устанавливаем DroidScript из Google Play и открываем его. На экране появляется интерфейс с единственным приложением Hello World в области приложений.

Короткое касание пиктограммы приложения приведёт к его запуску. Для редактирования кода нужно выполнить долгое касание пиктограммы и выбрать опцию Edit в появившемся списке действий.

Панель управления включает в себя кнопки для доступа к документации, соединения с WiFi IDE, общим командам и примерам.

Настройка удалённой среды разработки WiFi IDE происходит так:

  1. Запускаем DroidScript и переходим в настройки по команде …/Settings для изменения пароля доступа или его сброса.
  2. В панели управления нажимаем кнопку со стрелкой вверх. Появляется диалог с адресом DroidScript.
  3. На настольном компьютере или ноутбуке открываем браузер и вводим полученный в предыдущем пункте адрес. Появляется диалог запроса пароля, если он не был сброшен. Вводим пароль, и после успешного получения доступа на экране отобразится интерфейс среды разработки.

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

В WiFi IDE заложена возможность расширения его функциональности за счёт добавления вкладок. Вкладка “Espruino” является примером данного расширения.

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

В самом простом случае приложение может состоять из одного файла с расширением js, в котором код хранится в исходном виде. Для обмена проектом в исходном коде его можно запаковать в spk-архив. Также возможна сборка проекта в apk-файл, но для этого необходимо купить и установить плагин ApkBuilder.

Когда впервые видишь столь простые интерфейсы DroidScript и WiFi IDE, после работы в десктопной или web-среде, то возникает логичный вопрос, а можно ли с помощью этого cделать что-то серьёзное? Безусловно! Как известно, и с помощью простых инструментов можно создавать впечатляющие вещи!

Источник

Build.prop и init.d скрипты и твики в Андроид

вкл. 31 Май 2016 . Опубликовано в Android — Общее

Build.prop и init.d скрипты и твики в Андроид. Хотели бы качественно улучшить работу Android смартфона или планшета в плане быстродействия и автономности и автоматизации? В этом вам помогут скрипты и твики в build.prop / init.d!

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

На данной странице вы найдете коллекцию скриптов и твиков Android build.prop и init.d.

Куда добавлять скрипты и твики Android?

На работу Android влияют изменения в конфигурационном файле build.prop, который находиться в корне раздела /system , а также скрипты в системе инициализации находящиеся в /system/etc/init.d, но для начала нужно активировать поддержку init.d на уровне ядра.

Твики build.prop

Отображаемый язык при первом запуске Android (или полного сброса)

Если же данных строк нет, но есть:

Включение Отладки по USB при первом запуске Android (или полного сброса)

Добавить или изменить:

Улучшить качество фотографий

Добавить или изменить:

Улучшить качество снимков (за счет уменьшения скорости работы)

Улучшить качество снимков и видеозаписи

Добавить или изменить:

Улучшить качество мобильной сети

Добавить или изменить:

Улучшить качество передаваемой речи в мобильной сети

Добавить или изменить:

Акселерация интерфейса за счет GPU устройства

Добавить или изменить:

Отключить анимацию при включение устройства

Добавить или изменить:

Установить скорость анимации включения

Ускорить загрузку устройства

Добавить или изменить:

Отключить логирование ошибок ядра

Ускорить работу потокового видео

Добавить или изменить:

Внесение лаунчера в память

Добавить или изменить:

Увеличение автономности работы Android при использование Wi-FI

Добавить или изменить:

Улучшить реакцию сенсора дисплея

Добавить или изменить:

Увеличение скорости скрола (но ухудшается плавность)

Улучшить качество приема 2G и 3G сетей

Добавить или изменить:

Google DNS

Изменение плотности экрана DPI

Скрипты init.d

Для того чтобы скрипты работали, необходимо:

  1. Ядро с поддержкой init.d
  2. Root права Android
  3. Установленный BusyBox
  4. Дописать в build.prop sys.initd=1

Все скрипты добавлять в папку init.d находящуюся по пути /system/etc.

Ниже будет представлено описание и ссылка на скрипт.

Скрипт sqlite — сжимает базы данных приложений и системы, тем самым ускоряя работу Android.

Скрипт zipaligin — оптимизирует работу установленных приложений, тем самым ускоряя работу Android.

Скрипт centisecs — ускоряет работу Android за счет оптимизаций работы записи данных на диск.

Скрипт zminfree — оптимизирует выгрузку приложений из оперативной памяти.

Скрипт batterystats — сбрасывает статистику работы батареи (использовать если неправильно отображает заряд батареи).

Скрипт wifi_idle_wait — Удержания соединения Internet по Wi-Fi при выключенном экране.

Источник

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