Android Script Creator — Создание скриптов (update.zip) для Android. Данная статья будет интересная для пользователей Android устройств, с кастомным рекавери. Первое что хочу отметить, программа за вас все сделать не сможет, поэтому предается использовать мозг и Google
Нам потребуется:
- Идея!
- Желание!
- Прямые руки
- Программа — Android Script Creator
- Поисковая система (ну а мало-ли вдруг)
Начнем!
Скрипт:
Скачиваем программу, распаковываем ее куда нибудь, желательно с коротким путем, например «D:ASC».
Запускаем программу и видим следующее:
Как вы могли заметить, я уже вставил в программу скрипт. Данный скрипт очищает статус батареи на Motorola Razr Maxx, конкретно у меня Motorola XT912.
Сам скрипт:
# Created by Octanium (Octanium91 on XDA)
# Wiping battery for Motorola RAZR
# =)
ui_print("--------------------------------------------------------------");
ui_print("| ~ Wiping battery status for Motorola RAZR ~ |");
ui_print("| Created by Octanium in Android Script Creator! |");
ui_print("--------------------------------------------------------------");
ui_print(«Mount data ...»);
mount(«ext3», «EMMC», "/dev/block/userdata", "/data");
ui_print(«Clean folder: battd ...»);
delete_recursive("/data/battd");
ui_print(«Delete file: batterystats.bin ...»);
delete("/data/system/batterystats.bin");
ui_print(«Delete file: batterystats-checkin.bin ...»);
delete("/data/system/batterystats-checkin.bin");
ui_print(«Unmount data ...»);
unmount("/data");
Подробней о командах:
# — все что дальше этого знака рекавери выполнять не будет, т.к. это комментарий
ui_print — выдает сообщение на экран, синтаксис ui_print(«- Сообщение -«);
mount — монтирует раздел, для того что-бы к нему был доступ. У разных моделей смартфонов, разные параметры для монтирования! У меня это mount(«ext3», «EMMC», «/dev/block/userdata», «/data»);, для раздела Data
delete_recursive — рекурсивное удаление, удаляет все файлы в папке, синтаксис delete_recursive(«- путь к папке -«);
delete — удаляет файл, синтаксис delete(«- путь к файлу -«);
unmount — размонтирует раздел, синтаксис unmount(«- раздел -«);
В любом случае скрипт вы можете выдрать даже с какого-то форума, потом вставить в программу. Информации касательно того как правильно писать скрипт в интернете достаточно.
Сборка скрипта:
Жмем на кнопку с лева «Сборка».
И видим следующее:
Принципе здесь можно все так и оставить, как вариант можете поменять имя скрипта с стандартного «Update» на другое (дописывать формат вот так «Update.zip» не нужно, просто пишите «Update»), или путь куда программа будет сохранять ваши скрипты. Когда наберетесь опыта и знаний будите менять вообще все опции =).
А мы просто жмем на кнопку «Собрать».
И видим следующие:
Вот и все! Закидываем скрипт в память смартфона и пробуем шить.
Если скрипт не работает: гуглим, пробуем собирать еще раз (с другими опциями), корректируем скрипт.
Надеюсь эта информация была кому-то полезна. Спасибо за внимание!
Добрый день.
Все мы (ну или почти все) когда-то пользовались смартфонами под управлением ОС Symbian. Многим из нас не хватало функционала уже существующего ПО, и тогда на смартфоне появлялся Python и множество самописных программ на нём же. Такие программы назывались скриптами, а написать скрипт мог любой желающий, вооружившись одним лишь текстовым редактором.
Теперь же многие из нас обзавелись смартфонами, управляемыми ОС Android, которая, как известно, создана на базе ядра Linux.
А одной из отличительных особенностей GNU/Linux является bash — одна из наиболее популярных современных разновидностей командной оболочки UNIX.
Цитата: Advanced Bash-Scripting Guide
Shell — это командная оболочка. Но это не просто промежуточное звено между пользователем и операционой системой, это еще и мощный язык программирования. Программы на языке shell называют сценариями, или скриптами. Фактически, из скриптов доступен полный набор команд, утилит и программ Unix. Если этого недостаточно, то к вашим услугам внутренние команды shell — условные операторы, операторы циклов и пр., которые увеличивают мощь и гибкость сценариев. Shell-скрипты исключительно хороши при программировании задач администрирования системы и др., которые не требуют для своего создания полновесных языков программирования.
Вооружаемся всем необходимым:
- во-первых, нам нужно получить права пользователя root;
- во-вторых, нам нужен эмулятор терминала — этот (требует Android 1.5+) или любой другой;
- в-третьих, нам нужен BusyBox — набор UNIX-утилит командной строки — этот (требует Android 1.6+) или любой другой;
- в-четвёртых, нам пригодится текстовый редактор — этот (требует Android 1.6+) или любой другой.
Опционально можно поставить
модифицированный bash
, положив его в
/system/bin/
.
Итак, весь необходимый софт установлен. Запустив эмулятор терминала, попробуем выполнить какую-нибудь команду, например, посмотрим информацию о системе:
sh-4.1$ uname -a
Linux localhost 2.6.35.7-CL709629 #10 PREEMPT Fri Apr 13 18:06:10 IST 2012 armv7l GNU/Linux
Особой пользы нам эта команда не принесла, попробуем выполнить что-нибудь более полезное.
Подробнее о командах вы можете узнать, например, в том же самом Advanced Bash-Scripting Guide или спросить у наших линуксоидов .
Наверное, сейчас нам пригодится новый пароль из, допустим, 30 случайно взятых символов (букв, цифр и знаков препинания):
sh-4.1$ tr -cd '[:punct:]+[:alnum:]' < /dev/urandom | fold -w30 | head -n1
{EMn!v'u<AqcAH'YD/U6bQ?>dS!W^d
Скриншот
Как вы уже догадались, довольно неудобно каждый раз вводить в терминале такую команду. Поэтому, чуть-чуть изменив текст, мы создадим скрипт, который генерирует пароль указанной пользователем длины и НВПС сохраняет его в текстовый файл:
#!/system/bin/bashtr -cd '[:punct:]+[:alnum:]' < /dev/urandom | fold -w $1 | head -n1 > /sd/pwd.txt
echo "Check /mnt/sdcard/external_sd/pwd.txt"
Скриншот
Скрипт написан и сохранён. Пытаемся его выполнить, но результат не радует:
sh-4.1$ /sd/pwg.sh 15
sh: /sd/pwg.sh: Permission denied
А всё потому, что у нас карта памяти отформатирована в файловой системе FAT. (Есть предположение, что на носителе с файловой системой ext4 всё заработает искаропки). Посему кладём наш скрипт в
/system/xbin/
, не забыв после этого разрешить системе его выполнение командой
chmod 777 /system/xbin/pwg.sh
или с помощью вашего любимого файл-менеджера.
Запускаем скрипт:
sh-4.1$ pwg.sh 50
Check /mnt/sdcard/external_sd/pwd.txt
Скриншот
Всё работает, задача выполнена.
Скриншот
Бонус: можно заставить систему выполнять скрипт при загрузке, о чём подробнее написано
здесь
.
The End.
Данная статья будет интересная для пользователей Android устройств, с кастомным рекавери.
Первое что хочу отметить, программа за вас все сделать не сможет, поэтому предается использовать мозг и Google
Нам потребуется:
- Идея!
- Желание!
- Прямые руки
- Программа — Android Script Creator
- Поисковая система (ну а мало-ли вдруг)
Начнем!
Скрипт:
Скачиваем программу, распаковываем ее куда нибудь, желательно с коротким путем, например «D:ASC».
Запускаем программу и видим следующее:
Как вы могли заметить, я уже вставил в программу скрипт.
Данный скрипт очищает статус батареи на Motorola Razr Maxx, конкретно у меня Motorola XT912.
Сам скрипт:
# Created by Octanium (Octanium91 on XDA)
# Wiping battery for Motorola RAZR
# =)
ui_print(«—————————————————————«);
ui_print(«| ~ Wiping battery status for Motorola RAZR ~ |»);
ui_print(«| Created by Octanium in Android Script Creator! |»);
ui_print(«—————————————————————«);
ui_print(«Mount data …»);
mount(«ext3», «EMMC», «/dev/block/userdata», «/data»);
ui_print(«Clean folder: battd …»);
delete_recursive(«/data/battd»);
ui_print(«Delete file: batterystats.bin …»);
delete(«/data/system/batterystats.bin»);
ui_print(«Delete file: batterystats-checkin.bin …»);
delete(«/data/system/batterystats-checkin.bin»);
ui_print(«Unmount data …»);
unmount(«/data»);
Подробней о командах:
# — все что дальше этого знака рекавери выполнять не будет, т.к. это комментарий
ui_print — выдает сообщение на экран, синтаксис ui_print(«- Сообщение -«);
mount — монтирует раздел, для того что-бы к нему был доступ. У разных моделей смартфонов, разные параметры для монтирования! У меня это mount(«ext3», «EMMC», «/dev/block/userdata», «/data»);, для раздела Data
delete_recursive — рекурсивное удаление, удаляет все файлы в папке, синтаксис delete_recursive(«- путь к папке -«);
delete — удаляет файл, синтаксис delete(«- путь к файлу -«);
unmount — размонтирует раздел, синтаксис unmount(«- раздел -«);
В любом случае скрипт вы можете выдрать даже с какого-то форума, потом вставить в программу. Информации касательно того как правильно писать скрипт в интернете достаточно.
Сборка скрипта:
Жмем на кнопку с лева «Сборка».
И видим следующее:
Принципе здесь можно все так и оставить, как вариант можете поменять имя скрипта с стандартного «Update» на другое (дописывать формат вот так «Update.zip» не нужно, просто пишите «Update»), или путь куда программа будет сохранять ваши скрипты. Когда наберетесь опыта и знаний будите менять вообще все опции =).
А мы просто жмем на кнопку «Собрать».
И видим следующие:
Вот и все! Закидываем скрипт в память смартфона и пробуем шить.
Если скрипт не работает: гуглим, пробуем собирать еще раз (с другими опциями), корректируем скрипт.
Надеюсь эта информация была кому-то полезна. Спасибо за внимание!
П.С. это моя первая статья, прошу прощение если что-то не так.
Предисловие.
AnkuLua — приложение для Android, позволяющее создавать ботов с использованием сканирования экрана телефона. Данная программа, почти, полная копия SikuliX, поэтому, если вы читали предыдущую статью, вы найдете много общего. К тому же, она не требует root.
Подготовка
Сперва скачайте и установите эти 3 программы:
- QuickEdit — удобный редактор кода
- ScreenMaster — программа для создания скриншотов
- AnkuLua — программа для запуска ботов

Далее, в папке с вашим будущим ботом, создайте lua скрипт(текстовый файл с расширением .lua) и папку image.

- В папке image, будут хранится изображения, которые бот будет искать на экране.
- Lua скрипт будет содержать код бота.
Теперь, откройте AnkuLua, и запустите созданный Lua скрипт.
Далее, с помощью QuickEdit откройте Lua скрипт бота. Подготовка завершена, время написать Hello World.
Пишем Hello World (v1).
В Lua скрипт, пропишите следующий код.
print("hello world")
Сохраните и запустите скрипт, нажатием на кнопку проигрывания.

В итоге, получили сообщение на экране.
Пишем Hello World (v2).
Можно написать Hello World и так.
type("hello world")
Тогда, hello world, напечатается в активном окне.

Настраиваем Screen Master.
Сперва настроим ScreenMaster. В настройках выберите:
- Формат изображения — PNG
- Качество изображения — 100%.

Т.к. бот будет искать картинку на экране, картинка должна быть максимального качества.
Скриншоты с этой программы, будут помещаться в папку ScreenMaster.
Кликаем по картинке.
Для примера, создадим бота, который будет открывать QuickEdit, кликая по его картинке.
Сначала, обрежьте его картинку, примерно вот так:

Важно, не задевать элементы фона, иначе бот не сможет найти картинку.
Далее, переместите эту картинку в папку image в директории бота и переименуйте в qe.png (для удобства).
В Lua скрипте, пропишите следующее:
click("qe.png")
Сохраните и запустите скрипт. Если скрипт найдет картинку, то он кликнет по ней, и откроет программу.
Подсвечиваем цель.
Точно так же как и SikuliX, здесь можно подсвечивать регион. Измените код на это:
btn = find("qe.png")
btn:highlight(2)
click(btn)
Разберемся как этот код работает.
- В начале я с помощью функции find, нашел регион в котором находится наша картинка.
- Далее, подсветил этот регион с помощью функции highlight на 2 секунды.
- И кликнул по нему.
В итоге, получили красную рамку на 2 секунды возле картинки.

Создаем диалог.
Сейчас я вам покажу, как создать диалог с выбором скрипта.
Перепишите следующий код.
function mainMenu()
rg1 = 0 --переменная в которой будет хранится индекс выбранной радио-кнопки
dialogInit() --создаем окно диалога
addTextView("Text View") --Добавляем в него текстовую строку
newRow() --переходим на следующий ряд
addRadioGroup("rg1", 0) -- создаем радио группу, значение выбранной кнопки записывается в rg1, если ничего не выбрано, rg1 = 0
addRadioButton("Choice 1", 1) --если выбрал "Choice 1" то rg1 = 1
addRadioButton("Choice 2", 2) --если выбрал "Choice 2" то rg1 = 2
dialogShow("TestBot") --Выводим диалог на экран, передавав название "TestBot"
end
mainMenu() --вызываем функцию создания диалога
Весь код я объяснил в комментариях (—).

Таким образом, в зависимости от значения rg1, вы можете выбрать нужную функцию и сделать многофункционального бота, примерно так:
function mainMenu()
rg1 = 0 --переменная в которой будет хранится индекс выбранной радио-кнопки
dialogInit() --создаем окно диалога
addTextView("Text View") --Добавляем в него текстовую строку
newRow() --переходим на следующий ряд
addRadioGroup("rg1", 0) -- создаем радио группу, значение выбранной кнопки записывается в rg1, если ничего не выбрано, rg1 = 0
addRadioButton("Choice 1", 1) --если выбрал "Choice 1" то rg1 = 1
addRadioButton("Choice 2", 2) --если выбрал "Choice 2" то rg1 = 2
dialogShow("TestBot") --Выводим диалог на экран, передавав название "TestBot"
if rg1 == 1 then
doSomething1()
end
else if rg1 == 2 then
doSomething2()
end
end
mainMenu() --вызываем функцию создания диалога
Где, doSomething1 и doSomething2, функции отвечающие за нужные вам действия.
Узнаем координаты нажатия.
В AnkuLua есть функция getTouchEvent, которая ждет пока ты нажмешь на экран, после чего выводит информацию о нажатии. Из всей этой информации, нам понадобятся только координаты.
Перепишите этот код:
function showTouchCoords()
local action, locTable, touchTable = getTouchEvent()
print(locTable)
end
Теперь, при вызове функции showTouchCoords, экран подсветится желтым.

И после касания, выведет координаты нажатия.

Кликаем на координаты.
Чтобы кликнуть по координатам, нужно передать Location в функцию click.
click(Location(500,500))
Данная комманда, кликает на координаты 500, 500.
Прочие функции.
Здесь я распишу остальные функции которые вам могут понадобится в написании бота.
- toast(текст) — показывает всплывающее сообщение снизу.
- exists(картинка) — возвращает True, если картинка найдена.
- wait(картинка) — ждет появления картинки.
- keyevent(4) — нажимает кнопку назад.
- keyevent(3) — жмет кнопку домой.
- keyevent(187) — жмет кнопку переключения приложений.
- swipe — свайп по экрану.
Подробная информация в документации.
Итоговый результат.
