Как написать скрипт на телефоне

Добрый день.

Все мы (ну или почти все) когда-то пользовались смартфонами под управлением ОС 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/bash

tr -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 :D

Нам потребуется:

  1. Идея!
  2. Желание!
  3. Прямые руки
  4. Программа — Android Script Creator
  5. Поисковая система (ну а мало-ли вдруг)

Начнем!

Скрипт:

Скачиваем программу, распаковываем ее куда нибудь, желательно с коротким путем, например «D:ASC».

Запускаем программу и видим следующее:

Создание update-script для Android в пару кликов мышки

Как вы могли заметить, я уже вставил в программу скрипт.

Данный скрипт очищает статус батареи на 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-script для Android в пару кликов мышки

Принципе здесь можно все так и оставить, как вариант можете поменять имя скрипта с стандартного «Update» на другое (дописывать формат вот так «Update.zip» не нужно, просто пишите «Update»), или путь куда программа будет сохранять ваши скрипты. Когда наберетесь опыта и знаний будите менять вообще все опции =).

А мы просто жмем на кнопку «Собрать».

И видим следующие:

Создание update-script для 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 (или полного сброса)

Изменить строки:

ro.product.locale.language=enro.product.locale.region=US

на

ro.product.locale.language=ruro.product.locale.region=RU

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

ro.product.locale=en-US

изменить на

ro.product.locale=ru-RU

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

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

ro.adb.secure=0ro.secure=0ro.debuggable=1persist.sys.usb.config=mtp,adbpersist.service.adb.enable=1persist.service.debuggable=1

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

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

ro.media.enc.jpeg.quality=100

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

persist.sys.use_dithering=1

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

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

ro.media.dec.jpeg.memcap=8000000ro.media.enc.hprof.vid.bps=8000000

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

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

net.ipv4.ip_no_pmtu_disc=0net.ipv4.route.flush=1net.ipv4.tcp_ecn=0net.ipv4.tcp_fack=1net.ipv4.tcp_mem=187000 187000 187000net.ipv4.tcp_moderate_rcvbuf=1net.ipv4.tcp_no_metrics_save=1net.ipv4.tcp_rfc1337=1net.ipv4.tcp_rmem=4096 39000 187000net.ipv4.tcp_sack=1net.ipv4.tcp_timestamps=1net.ipv4.tcp_window_scaling=1net.ipv4.tcp_wmem=4096 39000 187000net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960net.tcp.buffersize.umts=4096,87380,256960,4096,16384,256960net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960net.tcp.buffersize.edge=4096,87380,256960,4096,16384,256960

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

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

ro.ril.enable.amr.wideband=1

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

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

debug.sf.hw=1debug.performance.tuning=1video.accelerate.hw=1debug.egl.profiler=1debug.egl.hw=1debug.composition.type=gpu

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

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

debug.sf.nobootanimation=1

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

boot.fps=20

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

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

ro.config.hw_quickpoweron=true

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

ro.kernel.android.checkjni=0ro.kernel.checkjni=0

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

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

media.stagefright.enable-player=truemedia.stagefright.enable-meta=truemedia.stagefright.enable-scan=truemedia.stagefright.enable-http=truemedia.stagefright.enable-rtsp=truemedia.stagefright.enable-record=false

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

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

ro.HOME_APP_ADJ=1

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

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

wifi.supplicant_scan_interval=180pm.sleep_mode=1ro.ril.disable.power.collapse=0

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

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

debug.performance.tuning=1video.accelerate.hw=1

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

persist.sys.scrollingcache=3
ro.config.tima=0ro.config.knox=0ro.securestorage.knox=falsesecurity.mdpp=Nonesecurity.mdpp.result=Nonewlan.wfd.hdcp=disable

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

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

persist.cust.tel.eons=1ro.ril.gprsclass=10ro.ril.hsdpa.category=8ro.ril.hsupa.category=6ro.ril.hsxpa=1

Google DNS

net.dns1=8.8.8.8net.dns2=8.8.4.4net.rmnet0.dns1=8.8.8.8net.rmnet0.dns2=8.8.4.4net.ppp0.dns1=8.8.8.8net.ppp0.dns2=8.8.4.4net.wlan0.dns1=8.8.8.8net.wlan0.dns2=8.8.4.4net.eth0.dns1=8.8.8.8net.eth0.dns2=8.8.4.4net.gprs.dns1=8.8.8.8net.gprs.dns2=8.8.4.4

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

ro.sf.lcd.density=

читайте подробней в статье про 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 при выключенном экране.

Скачать 

Некоторое время назад мне была поставлена следующая задача: разработать прототип приложения под Android для беспроводной связи с Arduino в реальном времени. Погружаться ради этого с головой в Java, Qt или C# было непрактично, поэтому решил искать готовое решение на скриптовом движке. PhoneGap? Интересно, но не для работы с Bluetooth. Что-то из мобильных сред разработки? Возможно, но хотелось работать в привычной десктопной среде, а не на планшете с небольшим экраном. Вскоре желаемое нашлось – мобильная среда разработки DroidScript с возможностью подключения к ней из браузерной WiFi IDE, которую можно установить на Windows, Mac и Linux.

Что такое DroidScript?

DroidScript представляет собой приложение Android, которое включает в себя среду разработки и выполнения программного кода на Android устройстве. Он позволяет создавать приложения двух типов – JavaScript (с нативным интерфейсом) и HTML (гибридные). Для создания нативного UI и доступа к программно-аппаратным ресурсам Android, JavaScript используется совместно с API DroidScript, который позволяет работать с WebView, SQLite, email, SMS, WebGL, сенсорами, Web-серверами, сокетами, спрайтовой анимацией и многим другим, а также осуществлять взаимодействие с внешними устройствами посредством Bluetooth, WiFi, USB и LAN. Впечатляющая функциональность ”из коробки” – это одна из особенностей DroidScript. Другая особенность – простота его использования. В чём она состоит? Прежде всего, в кодировании. Ниже дан пример кода простого приложения:

// функция инициализации function OnStart() {   // создаём линейный компоновщик во всю область экрана   var lay = app.CreateLayout( "linear", "FillXY" );     // создаём кнопку с шириной 30% и высотой 10% относительно размеров экрана   var btn = app.CreateButton( "Кнопка", 0.3, 0.1 );    // задаём размер надписи на кнопке   btn.SetTextSize( 18 );    // задаём обработчик нажатия на кнопку   btn.SetOnTouch( function(){      app.ShowPopup( "Привет, Андроид!" ); // всплывающее сообщение     app.Vibrate( "0,100,30,100,50,300" ); // вибросигнал   });    // добавляем кнопку компоновщику   lay.AddChild( btn );    // добавляем компоновку объекту приложения для её отображения на экране   app.AddLayout( lay ); }

Всё кодируется на 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делать что-то серьёзное? Безусловно! Как известно, и с помощью простых инструментов можно создавать впечатляющие вещи!

Содержание

  • Документация
  •  Куда добавлять скрипты и твики Android?
  • Твики build.prop
  • Скрипты init.d
  • Особенности Android-окружения
  • Первый пример
  • Автозапуск
  • Запуск скриптов до и после установки прошивки
  • INFO
  • Что еще?
  • Вместо выводов

Документация

  • Официальная страница
  • Официальный форум DroidScript
  • Вики DroidScript
  • Справочное руководство по DroidScript на русском языке
  • Также отдельные энтузиасты выкладывают учебные пособия на YouTube.

112 18,3k 112

Данные скрипты-твики для init.d призванны улучшить работу гуглофона и настроить его под свои нужды. Для работы твиков необходима поддержка init.d прошивкой вашего аппарата, а также BusyBox. Однако, поддержку init.d можно эмулировать с помощью таких программ как mcTweaker или Script Manager, включив соответствующие пункты в программах. Причем в mcTweaker реализовано множество твиков для вашего аппарата.Напомню, что в кастомных прошивках BusyBox может быть установлен, да и многие твики уже реализованы!Все Вы делаете на свой страх и риск! Для манипуляций нужен root-доступ!

Общая информация:

Каждый файл скрипта начинается со строчки:

Образец файла скрипта

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

Твики скорости интернет-соединения

Твики управления памятью виртуальной машины

Твики ядра

Увеличиваем время жизни аккумулятора

Твик скорости чтения sd-карты(увеличение кеша карты)

echo «2048» > /sys/devices/virtual/bdi/179:0/read_ahead_kb;

Дефрагментация файлов баз данных?

Отключаем логгеры(не будут записываться лог-файлы)

rm /dev/log/main

Твики управления кэша

Твики процессора

Перенос dalvik-кеша в раздел cache, чтобы разгрузить раздел data

Удаление кэша, tmp-файлов и прочего мусора

Изменение приоритета процессов-только стандартных

Желательно перед использованием проверить название процессов на вашем аппарате. Призвано увеличить плавность работы аппарата и сделать отклик более приятным.

В прикрепленном архиве лежат готовые скрипты-твики, которые осталось только закинуть в папку init.d. Нумерация скриптов сохранена!Все манипуляции над вашим аппаратом лежат на вашей совести! При использовании программ-твикеров типа mcTweaker удаляйте свои пользовательские скрипты да бы избежать неприятных ситуаций и всегда делайте бэкап!

СКАЧАТЬ:

Tweaks [Размер файла — 3,44 Kb]

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

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

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

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

Твики build.prop

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

Изменить строки:

ro.product.locale.language=enro.product.locale.region=US

на

ro.product.locale.language=ruro.product.locale.region=RU

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

ro.product.locale=en-US

изменить на

ro.product.locale=ru-RU

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

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

ro.adb.secure=0ro.secure=0ro.debuggable=1persist.sys.usb.config=mtp,adbpersist.service.adb.enable=1persist.service.debuggable=1

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

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

ro.media.enc.jpeg.quality=100

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

persist.sys.use_dithering=1

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

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

ro.media.dec.jpeg.memcap=8000000ro.media.enc.hprof.vid.bps=8000000

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

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

net.ipv4.ip_no_pmtu_disc=0 net.ipv4.route.flush=1 net.ipv4.tcp_ecn=0 net.ipv4.tcp_fack=1 net.ipv4.tcp_mem=187000 187000 187000 net.ipv4.tcp_moderate_rcvbuf=1 net.ipv4.tcp_no_metrics_save=1 net.ipv4.tcp_rfc1337=1 net.ipv4.tcp_rmem=4096 39000 187000 net.ipv4.tcp_sack=1 net.ipv4.tcp_timestamps=1 net.ipv4.tcp_window_scaling=1 net.ipv4.tcp_wmem=4096 39000 187000net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960net.tcp.buffersize.umts=4096,87380,256960,4096,16384,256960net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960net.tcp.buffersize.edge=4096,87380,256960,4096,16384,256960

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

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

ro.ril.enable.amr.wideband=1

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

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

debug.sf.hw=1debug.performance.tuning=1video.accelerate.hw=1debug.egl.profiler=1debug.egl.hw=1debug.composition.type=gpu

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

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

debug.sf.nobootanimation=1

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

boot.fps=20

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

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

ro.config.hw_quickpoweron=true

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

ro.kernel.android.checkjni=0ro.kernel.checkjni=0

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

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

media.stagefright.enable-player=true media.stagefright.enable-meta=true media.stagefright.enable-scan=true media.stagefright.enable-http=true media.stagefright.enable-rtsp=true media.stagefright.enable-record=false

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

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

ro.HOME_APP_ADJ=1

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

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

wifi.supplicant_scan_interval=180pm.sleep_mode=1ro.ril.disable.power.collapse=0

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

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

debug.performance.tuning=1video.accelerate.hw=1

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

persist.sys.scrollingcache=3

ro.config.tima=0ro.config.knox=0ro.securestorage.knox=falsesecurity.mdpp=Nonesecurity.mdpp.result=Nonewlan.wfd.hdcp=disable

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

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

persist.cust.tel.eons=1ro.ril.gprsclass=10ro.ril.hsdpa.category=8ro.ril.hsupa.category=6ro.ril.hsxpa=1

Google DNS

net.dns1=8.8.8.8net.dns2=8.8.4.4net.rmnet0.dns1=8.8.8.8net.rmnet0.dns2=8.8.4.4net.ppp0.dns1=8.8.8.8net.ppp0.dns2=8.8.4.4net.wlan0.dns1=8.8.8.8net.wlan0.dns2=8.8.4.4net.eth0.dns1=8.8.8.8net.eth0.dns2=8.8.4.4net.gprs.dns1=8.8.8.8net.gprs.dns2=8.8.4.4

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

ro.sf.lcd.density=читайте подробней в статье про DPI

Скрипты init.d

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

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

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

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

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

Скачать скрипт init.d

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

Скачать скрипт init.d

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

Скачать скрипт init.d

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

Скачать скрипт init.d

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

Скачать скрипт init.d

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

Скачать скрипт init.d

Вот и все! Больше статей и инструкций читайте в разделе Статьи и Хаки Android. Оставайтесь вместе с сайтом Android +1, дальше будет еще интересней!

Android основан на ядре Linux, включает в себя набор стандартных UNIX-команд и простой шелл sh. Все это значит, что мы можем не только использовать командную строку для выполнения низкоуровневых операций, но и писать шелл-скрипты, которые будут выполнять функции, недоступные из графического интерфейса. В этой статье мы поговорим о том, что с их помощью можно сделать и зачем все это нужно.

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

Сразу оговорюсь, что в этой статье речь пойдет о шелл-скриптах в традиционном для Linux понимании, без использования инструментов вроде SL4A, QPython или Roboto. Главное назначение таких скриптов — изменение поведения системы, параметров ядра, работа с демонами (ADB, например) и тому подобное. Скрипты могут стартовать на этапе загрузки ОС, установки новой прошивки, после тапа по кнопке или же по традиции — из терминала.

В статье я расскажу, как писать такие скрипты, как заставить их стартовать автоматически, привязывать к определенному системному событию. В качестве бонуса также объясню, как заставить консоль восстановления (recovery) выполнить необходимые тебе действия перед установкой или сразу после установки новой прошивки. Начинаем.

Особенности Android-окружения

В самой своей основе, там, где нет Java и Dalvik, Android представляет собой минималистичный Linux-дистрибутив со всеми свойственными ему атрибутами: ядром, системой инициализации, набором библиотек, демонов, консольных команд и, конечно же, шеллом. Последний — это не что иное, как mksh из MirBSD, переименованный в sh; простой командный интерпретатор с поддержкой языковых конструкций классического Bourne shell из UNIX и автодополнением по нажатию Tab.

В качестве комплекта базовых UNIX-команд здесь используется toolbox, своего рода урезанная альтернатива BusyBox, которая позволяет вызывать несколько разных команд из одного бинарника (с помощью симлинков). Toolbox включает в себя очень ограниченный набор команд, в котором нет не только grep или sort, но даже cp. Поэтому для полноценной работы со скриптами настоятельно рекомендуется установка BusyBox, благо в маркете полно бесплатных инсталляторов.

Сам шелл располагается не совсем по адресу, поэтому «шибанг» в скриптах будет выглядеть несколько по-иному, а именно #!/system/bin/sh. Зато о расположении бинарников можно не думать вообще, так как в переменной $PATH всегда прописаны правильные значения. Каталогов для поиска команд тут всегда три: /system/bin/, /system/sbin/ и /system/xbin/ для внешних бинарников. Туда обычно устанавливается BusyBox.

Основное назначение скриптинга в Android — работа с ядром и системными утилитами. Ядро тут стандартное и экспортирует все те же интерфейсы /proc и /sys, через которые можно рулить железом и состоянием системы. Плюс есть набор специфичных для Android утилит, которые будут очень полезны при разработке скриптов:

  • pm — менеджер пакетов, позволяет устанавливать, удалять и перемещать софт;
  • am — менеджер активностей (Activity), может быть использован для запуска приложений;
  • dumpsys — дамп в консоль массы различной информации о состоянии системы;
  • screencap — утилита для снятия скриншота;
  • screenrecord — утилита для записи скринкастов;
  • getprop/setprop — команды для чтения и изменения системных переменных;
  • start/stop — запуск и остановка системных служб;
  • input — позволяет отправлять в текущее окно кей-коды (эмуляция клавиатуры);
  • service — утилита для управления Java-сервисами, имеет очень много возможностей;
  • svc — позволяет управлять Wi-Fi, USB-подключением и питанием.

Хакер #185. Докажи баг!

Первый пример

Теперь давайте попробуем написать первый скрипт. Делать это лучше на компе, а еще лучше в Linux или редакторе, который умеет создавать текстовые файлы без символа возврата каретки (который при открытии в Android будет выглядеть как ^M в конце каждой строки). Наш первый скрипт будет состоять всего из двух строк, которые делают бэкап всех установленных приложений на карту памяти. Его код (требует BusyBox):

#!/system/bin/sh    mkdir /sdcard/backup  cp /data/app/*.apk /sdcard/backup  

Сохраняем (пусть он называется apk_backup.sh) и перекидываем на смартфон с помощью ADB:

$ adb push apk_backup.sh /sdcard/  

Теперь его нужно запустить. Проще всего сделать это с помощью все того же ADB:

$ adb shell sh /sdcard/apk_backup.sh  

Примерно таким же образом скрипт можно запустить из консоли на самом смартфоне/планшете:

$ sh /sdcard/apk_backup.sh  

Само собой, такой способ не очень удобен. Поэтому нам нужен какой-то быстрый способ запуска скрипта. Наиболее удобное из найденных мной решений — это приложение QuickTerminal. Устанавливаем, запускаем, переходим на вкладку Quick Command, нажимаем кнопку «+», вбиваем имя (произвольное) и команду (sh /sdcard/apk_backup.sh), в поле Output Type выбираем либо Dialog Output, либо Nothing. В первом случае во время выполнения скрипта на экране появится окно с результатом, во втором все пройдет в фоне. Кому что удобнее. Далее сохраняем и получаем кнопку, с помощью которой скрипт можно будет запустить быстро и легко.

Теперь напишем скрипт, который восстановит наш бэкап:

#!/system/bin/sh    for i in /sdcard/backup/*; do  pm install -t -r $i  done  

В нем мы задействовали команду pm с опцией install и флагами -t и -r, которые заставляют систему устанавливать приложения, даже если они подписаны тестовым ключом или уже установлены. Также можно использовать флаг -s, который принуждает приложения к установке на карту памяти (если такая возможность есть), или -f — установка во внутреннюю память устройства.

Почти все команды Android имеют подробную справку

Почти все команды Android имеют подробную справку

Имея рут, можно даже сделать бэкап настроек всех приложений с помощью копирования и архивации каталога /data/data/, однако восстановить его будет очень проблематично, так как в Android каждое приложение исполняется от имени созданного специально для него Linux-юзера и хранит настройки внутри каталога, принадлежащего этому пользователю. Проблема здесь в том, что идентификатор Linux-юзера для каждого приложения генерируется динамически, поэтому после восстановления бэкапа в заново установленной системе идентификаторы не будут совпадать и приложения не смогут прочитать свои настройки. Придется вручную выяснять ID юзера для каждого приложения и менять права доступа на каталоги с данными.

С другой стороны, мы можем использовать встроенный в Android Backup Manager, позволяющий сторонним приложениям использовать возможности системы для бэкапа и восстановления приложений и их данных. Управлять им можно из консоли (а значит, и с помощью скриптов), но сам по себе он никакого бэкапа не производит, а возлагает эту работу на сторонние приложения. Helium — одно из таких приложений. Если установить и настроить его, операцию бэкапа и восстановления можно будет заскриптовать. Например, следующий простой скрипт сделает резервную копию всех сторонних приложений:

#!/system/bin/sh  # Получаем список всех сторонних приложений  for i in `pm list packages -e`; do  # Добавляем каждое из них в очередь  bmgr backup ${i:8}  done  # Запускаем операцию бэкапа  bmgr run  

Конструкция ${i:8} здесь нужна, чтобы обрезать слово «packages:», которое pm добавляет в начало имени каждого пакета. Чтобы восстановить бэкап, можно использовать либо тот же Helium, либо команду bmgr:

$ bmgr list sets # Получаем список бэкапов  $ bmgr restore  # Восстанавливаем нужный бэкап  

Автозапуск

«Это все круто, но скрипты должны запускаться сами», — скажешь ты и будешь абсолютно прав. Без автозапуска от скриптов толку мало, но это легко исправить, если воспользоваться все тем же Tasker. Он умеет запускать любые шелл-команды в ответ на любое событие. Чтобы воспользоваться этой функциональностью, достаточно создать новый профиль, выбрать событие (для бэкапа лучшим событием будет время), затем добавляем действие, выбираем Script -> Run Shell, вбиваем команду (sh /sdcard/script.sh), выбираем, если необходимо, файл для записи результата и включаем профиль.

Другой популярный способ автозапуска — это использование средств автоматического исполнения скриптов при загрузке в сторонних прошивках. Сегодня почти все сколько-нибудь известные кастомные прошивки умеют стартовать скрипты из каталога /system/etc/init.d/, а в стоке такую функциональность можно получить с помощью приложения Universal init.d из маркета. С последним, однако, надо быть осторожным, так как оно запускает скрипты не на раннем этапе загрузки, как это происходит в том же CyanogenMod, а уже после полной загрузки системы.

Итак, что мы можем поместить в автозагрузку? Например, скрипт запуска демона ADB в сетевом режиме:

#!/system/bin/sh  setprop service.adb.tcp.port 5555  stop adbd  start adbd  

Для подключения к нему с ПК набираем такую команду:

$ adb connect IP-смартфона  

Также мы можем применить некоторые оптимизации подсистемы виртуальной памяти:

#!/system/bin/sh  echo "4096" > /proc/sys/vm/min_free_kbytes  echo "0" > /proc/sys/vm/oom_kill_allocating_task;  echo "0" > /proc/sys/vm/panic_on_oom;  echo "0" > /proc/sys/vm/laptop_mode;  echo "0" > /proc/sys/vm/swappiness  echo "50" > /proc/sys/vm/vfs_cache_pressure  echo "90" > /proc/sys/vm/dirty_ratio  echo "70" > /proc/sys/vm/dirty_background_ratio  

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

#!/system/bin/sh  echo "2048,3072,6144,15360,17920,20480" > /sys/module/lowmemorykiller/parameters/minfree  

Ну и конечно же, автоматический выбор планировщика процессов:

#!/system/bin/sh  echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  

Все это можно сделать с помощью специализированного софта, но зачем загружать систему дополнительным ПО, которое еще и будет висеть в фоне, когда можно обойтись несколькими простыми скриптами?

Как запустить скрипт с помощью Tasker

Как запустить скрипт с помощью Tasker

Запуск скриптов до и после установки прошивки

Почти каждый, кто устанавливает на свой гаджет стороннюю прошивку, также ставит поверх нее пакет с фирменными приложениями Google (gapps), который включает в себя маркет, YouTube, Gmail и другой софт. Каждый раз, когда происходит обновление прошивки, раздел /system, содержащий ее и gapps, полностью стирается, но приложения Google всегда остаются на месте. Это происходит потому, что, кроме всего прочего, gapps содержит в своем составе специальный скрипт, который размещается в каталоге /system/addon.d/ и запускается консолью восстановления до и после установки прошивки. Этот скрипт делает бэкап и восстановление приложений Google.

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

#!/sbin/sh    # Загружаем подсобные функции  . /tmp/backuptool.functions    # Рингтон и звук уведомления, которые должны остаться в системе  RINGTONE=Machina  NOTIFICATION=Argon    case "$1" in  backup)      # Пусто :)  ;;  restore)      # Рингтоны, уведомления и звук будильника      cd /system/media/audio/ringtones/      rm [!${RINGTONE}]*.ogg      cd /system/media/audio/notifications/      rm [!${NOTIFICATION}]*.ogg      rm /system/media/audio/alarms/*        # Языки синтеза и офлайн-распознавания речи      rm /system/tts/lang_pico/*      rm -rf /system/usr/srec/config/*        # Приложения      A=/system/app/      rm $A/Email.apk      rm $A/Exchange2.apk      rm $A/LockClock.apk      rm $A/PicoTts.apk      rm $A/Term.apk      rm $A/ThemeChooser.apk      rm $APPS/WAPPushManager.apk      rm $A/LiveWallpapers.apk      rm $A/LiveWallpapersPicker.apk      rm $A/VisualizationWallpapers.apk      A=/system/priv-app/      rm $A/CMUpdater.apk      rm $A/ThemeManager.apk  ;;  pre-backup)      # ...  ;;  post-backup)      # ...  ;;  pre-restore)      # ...  ;;  post-restore)      # ...  ;;  esac  

Скрипт удаляет рингтоны, уведомления, движок синтеза речи и несколько приложений. Все эти действия запускаются в ответ на передачу скрипту опции командной строки restore (это делает консоль восстановления после установки прошивки), однако также предусмотрены и варианты обработки таких опций, как backup, pre-backup, post-backup, pre-restore и post-restore. Здесь это просто заглушки, но если бы мы захотели сделать бэкап некоторых файлов и приложений перед установкой прошивки, мы могли бы добавить их в блок backup, как это сделано в скрипте /system/addon.d/70-gapps.sh:

. /tmp/backuptool.functions    list_files() {  cat <

Этот кусок скрипта прекрасно иллюстрирует, как сделать бэкап файлов. Ключевые элементы здесь: функция listfiles, которая при запуске выводит листинг файлов, и функция backupfile, которая является частью консоли восстановления (определена в файле /tmp/backuptool.functions). Она делает бэкап файлов в цикле.

Содержимое /system/addon.d/ в CyanogenMod 11 на Motorola Defy

Содержимое /system/addon.d/ в CyanogenMod 11 на Motorola Defy
Скрипт бэкапа приложений Google
Скрипт бэкапа приложений Google

INFO

По словам разработчика mksh, изначально пользовательские версии Android-смартфонов вообще не должны были иметь в своем составе шелл, но после выпуска смартфона для разработчиков HTC (T-Mobile) G1 он фактически стал стандартной частью системы.

Версии Android 2.3 и ниже вместо mksh использовали минималистичный шелл ash, который входит в базовый комплект всех BSD-систем.

Чтобы получить одни и те же скрипты на всех устройствах, можно использовать приложение DropSync или FolderSync (автоматическая синхронизация через Dropbox).

Что еще?

С помощью скриптов в Android можно сделать намного больше, чем бэкапы и настройка параметров системы. Вот, например, скрипт, который просыпается каждые десять минут и, если уровень заряда батареи стал меньше 30%, отключает Wi-Fi и Bluetooth:

#!/system/bin/sh    while true; do  if [ `cat /sys/class/power_supply/battery/capacity` -lt 30 ]; then      svc wifi disable      service call bluetooth_manager 8  fi  sleep 600  done  

Чтобы скрипт работал в фоне, достаточно вызвать его следующим образом:

$ script.sh &  

А это скрипт, который позволяет быстро заполнять формы, требующие ввода имэйла и пароля (в приложениях и на веб-сайтах):

#!/system/bin/sh    adb shell input text "user@gmail.com"  adb shell input keyevent 23  adb shell input keyevent 20  adb shell input text "ПАРОЛЬ"  adb shell input keyevent 23  adb shell input keyevent 20  

Запускать его можно разными способами. Либо перед запуском приложения, установив задержку:

$ sleep 15; sh /sdcard/script.sh  

Либо повесить на какое-то событие Tasker, например на взмах смартфоном. Другой вариант — использовать буфер обмена. В Android, чтобы вставить нужный текст в буфер обмена, достаточно выполнить такую команду:

$ service call clipboard 2 i32 1 i32 1 s16 "Этот текст появится в буфере обмена"  

Не ахти как удобно, зато работает. Как мы можем использовать такую функциональность? Например, сделать простенький скрипт clip.sh:

#!/system/bin/sh  service call clipboard 2 i32 1 i32 1 s16 "$1"  

Соль в том, что скрипт можно вызывать через удаленный ADB либо вообще поместить в /system/etc/init.d/, заменив $1 на нужный текст. Так нужные нам данные всегда будут под рукой, а бесполезный на смартфоне механизм копирования/вставки получит хоть какое-то назначение. Консольные команды можно использовать и для более высокоуровневых операций, например позвонить по указанному номеру:

$ am start -a android.intent.action.CALL tel:123  

Или просто открыть окно номеронабирателя с нужным номером:

$ am start -a android.intent.action.DIAL tel:123  

Примерно таким же образом можно отправить SMS:

#!/system/bin/sh  am start -a android.intent.action.SENDTO -d sms:$1 --es sms_body "$2" --ez exit_on_sent true  sleep 1  input keyevent 22  sleep 1  input keyevent 66  

Скрипт принимает два аргумента: номер телефона и содержимое SMS. После запуска он откроет окно SMS-приложения, вставит в него нужный текст, а затем нажмет кнопку Enter для отправки, после чего окно закроется.

Другие полезные при скриптинге команды:

  • Перезагрузка в режим recovery:
    $ su -c reboot recovery  
  • Мягкая перезагрузка (без перезапуска ядра):
    $ setprop ctl.stop zygote  
  • Открыть нужное приложение (в данном примере — «Настройки»):
    $ am start -n com.android.settings/com.android.settings.Settings  
  • Открыть веб-страницу:
    $ am start -a android.intent.action.VIEW http://www.google.com  
  • Сообщить приложениям о низком уровне заряда батареи (есть софт, который при этом снижает свою активность):
    $ am broadcast -a android.intent.action.BATTERY_LOW  
  • Изменить MAC-адрес:
    $ ip link set eth0 address 00:11:22:33:44:55  
  • Активировать вибратор:
    $ echo 100 > /sys/devices/virtual/timed_output/vibrator/enable  
  • Включить фонарик:
    $ echo 1 > /sys/devices/platform/flashlight/leds/flashlight/brightness  
  • Проиграть файл (может не сработать):
    $ stagefright -a -o file.mp3  
  • Отключить указанное приложение (можно организовать цикл для отключения bloatware по списку):
    $ pm disable com.google.android.calendar  
  • Получить список приложений, которые имеют уведомления в строке состояния:
    $ dumpsys statusbar | grep StatusBarNotification | awk '{ print $2 }' | cut -d '=' -f2  
  • Оптимизировать внутренние базы данных с настройками (можно добавить скрипт в автозагрузку, требуется BusyBox):
    #!/system/bin/sh  for i in `find /data -iname "*.db"`; do  sqlite3 $i 'VACUUM;'  done  
  • Переключить Wi-Fi-тизеринг на основной интерфейс (нужно для обмана операторов, которые ограничивают скорость соединения при раздаче интернета по Wi-Fi):
    $ settings put global tether_dun_required 0

Для «отлова» нажатий кнопок можно использовать команду getevent

Для «отлова» нажатий кнопок можно использовать команду getevent

Вместо выводов

Для кого-то все описанное в статье может показаться несколько надуманным. Дескать, все это можно сделать с помощью стандартного софта и Tasker. Но зачем использовать тяжелый Java-софт там, где нужное действие можно выполнить с помощью простенького скрипта, который не занимает лишней памяти и может быть легко перенесен на другое устройство? Скрипты удобны, просты, быстро отрабатывают и дают возможность тонкой настройки под себя.

Используемые источники:

  • https://4pda.biz/android-obshchee/2612-build-prop-i-init-d-skripty-i-tviki-v-android.html
  • https://m.habr.com/ru/post/326460/
  • https://upgrade-android.ru/stati/stati/441-skripty-tviki-dlya-init-d.html
  • https://androidp1.ru/skripty-i-tviki-v-android-build-prop-i-init-d/
  • https://xakep.ru/2014/10/24/android-shell-script/

СХОЖИЕ СТАТЬИБОЛЬШЕ ОТ АВТОРА

ОСТАВЬТЕ ОТВЕТ

Войти с помощью: 

You have entered an incorrect email address!

Please enter your email address here

Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.

Предисловие.

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)

Разберемся как этот код работает.

  1. В начале я с помощью функции find, нашел регион в котором находится наша картинка.
  2. Далее, подсветил этот регион с помощью функции highlight на 2 секунды.
  3. И кликнул по нему.

В итоге, получили красную рамку на 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 — свайп по экрану.

Подробная информация в документации.

Итоговый результат.

Недавно мы делали веб-игру про сбор пирамиды. Там мы использовали 3Д-движок и симуляцию физики. И в целом получилась залипательная веб-игра. Вот предыдущие этапы: 

  1. Сделали трёхмерную браузерную игру, где нужно ставить блоки друг на друга и набрать как можно больше очков.
  2. Адаптировали игру под мобильные телефоны, чтобы тачскрин нормально обрабатывал все нажатия и жесты.

Ключевое слово — веб: игра работает только в браузере и только при наличии интернета. На этот раз мы превратим страницу с игрой в полноценное приложение для Android. При этом мы не будем пользоваться онлайн-конструкторами, а сделаем всё по-настоящему — в среде разработки и с кодом на Java.

Наш план таков: 

  1. Подготовить файлы для упаковки в игру: скачать скрипты из интернета, перепривязать их к нашей игре на компьютере.
  2. Сделать новый проект в Android Studio.
  3. В проекте сделать WebView — это виртуальное окно браузера внутри приложения. В нём будет работать игра.
  4. Настроить WebView так, чтобы он поддерживал нашу игру и все нужные функции.
  5. Упаковать получившийся проект в виде приложения для Android.

Результат можно скачать сразу: вот приложение, которое получилось у нас таким нехитрым способом:

 ⭐️ Скачать apk 

Подготовка

Главное, что нам понадобится из инструментов, — официальная среда разработки Android Studio. У нас есть про неё отдельная статья: что это такое, зачем нужно и как установить. Качаем с официального сайта и устанавливаем.

Так как наша игра должна работать без интернета, то это значит, что все ресурсы тоже должны быть доступны локально, прямо с телефона. В HTML-файле мы подключаем два внешних скрипта — их тоже нужно будет скачать:

<!-- подключаем Three.js -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js'></script>
<!-- подключаем Cannon.js -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/cannon.js/0.6.2/cannon.min.js'></script>
<!-- подключаем наш скрипт -->
<script src="./script.js"></script>

Для этого копируем адрес скрипта из кода страницы, вставляем в браузер и сохраняем то, что открылось, как js-файл.

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

Делаем сами себе игру для Android

После этого исправляем пути к скриптам в html-файле, чтобы они подтягивались из той же папки, а не из интернета:

<!-- подключаем Three.js -->
<script src='three.min.js'></script>
<!-- подключаем Cannon.js -->
<script src='cannon.min.js'></script>
<!-- подключаем наш скрипт -->
<script src="script.js"></script>

Сохраняем страницу и открываем её в браузере. Если мы всё сделали правильно, то «Пирамида» запустится как обычно — с красивой графикой и реакцией на нажатия.

Создаём новый проект в Android Studio

Запускаем Android Studio и выбираем Empty Activity:

Делаем сами себе игру для Android

После этого выбираем язык Java, а всё остальное оставляем без изменений:

Делаем сами себе игру для Android

Если это ваш первый запуск, программа начнёт качать разные служебные файлы — это нормально, нужно просто немного подождать.

Делаем сами себе игру для Android

Когда всё загрузится и запустится, перед нами появится окно с новой программой в Android Studio. 

Добавляем файлы

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

  1. Создать папку внутри проекта в Android Studio.
  2. Найти папку на диске.
  3. Скопировать в папку все нужные файлы.

Создаём папку так: в левой верхней части щёлкаем правой кнопкой мыши по папке app и в появившемся меню выбираем New → Folder → Assets Folder:

Делаем сами себе игру для Android

Перед нами появится окно, которое спрашивает, к чему будет относиться папка. Ничего не меняем и просто нажимаем Finish:

Делаем сами себе игру для Android

Теперь щёлкаем правой кнопкой мыши на появившейся папке и выбираем Open in → Explorer:

Делаем сами себе игру для Android

Перед нами появится окно проводника с нашей папкой assets. Заходим в неё и копируем туда все игровые файлы, которые мы собрали в самом начале:

Делаем сами себе игру для Android

Смотрим в панель файлов Android Studio, чтобы убедиться, что всё получилось и система увидела наши файлы:

Делаем сами себе игру для Android

Пишем код

Нам было бы здорово видеть и дизайн, и код, поэтому выбираем слева в колонке файлов res → layouts → activity_main.xml и переключаем вид в режим Split в правом верхнем углу:

Делаем сами себе игру для Android

В этом же файле activity_main.xml есть блок, который начинается с команды <TextView — удаляем весь блок (название и 7 команд ниже) и вместо него пишем <WebView>. Среда разработки умная, поэтому, как только мы начнём писать код, она автоматически предложит нам создать новый блок. Нажимаем энтер, когда появится подсказка:

Делаем сами себе игру для Android

Вот команды, которые нужно добавить в этот файл:

<WebView
android:layout_width="match_parent"   
android:layout_height="match_parent"  
android:id="@+id/webview"></WebView>

В итоге у нас должен получиться такой блок:

Делаем сами себе игру для Android

Нажимаем ⌘+S или Ctrl+S, чтобы всё сохранить .

Теперь переходим к другому файлу — MainActivity.java — и добавляем в него такой код:

Делаем сами себе игру для Android

setContentView(R.layout.activity_main);
WebView webView=findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("javascript:addLayer(x, z, width, depth, direction)");
webView.loadUrl("javascript:generateBox(x, y, z, width, depth, falls)");
webView.loadUrl("javascript:addOverhang(x, z, width, depth)");
webView.loadUrl("javascript:cutBox(topLayer, overlap, size, delta)");
webView.loadUrl("javascript:init()");
webView.loadUrl("javascript:startGame()");
webView.loadUrl("javascript:eventHandler()");
webView.loadUrl("javascript:splitBlockAndAddNextOneIfOverlaps()");
webView.loadUrl("javascript:missedTheSpot()");
webView.loadUrl("javascript:animation(time)");
webView.loadUrl("javascript:updatePhysics(timePassed)");
webView.loadUrl("javascript:window.addEventListener()");

webView.loadUrl("file:///android_asset/index.html");

Смысл тут в том, что мы сначала создаём новый элемент — просмотрщик веб-контента, потом разрешаем ему выполнять скрипты, а затем перечисляем все функции, которые у нас объявлены в основном скрипте вместе с параметрами вызова. Это нужно для того, чтобы Java знала, что это можно выполнять.

Нажимаем Shift+F10, чтобы запустить приложение в эмуляторе, — видим, что справа появился виртуальный телефон с началом нашей игры, но ничего не двигается. Это связано с тем, что встроенный эмулятор плохо работает с трёхмерной графикой и не может показать всё, что мы от него хотим. Главное, зачем нам это было нужно, — убедиться, что программа нашла все наши файлы, загрузила их и скрипт тоже заработал.

Делаем сами себе игру для Android

Компилируем приложение

Если нам нужен apk-файл, который можно установить на телефон, чтобы проверить игру по-настоящему, нам надо скомпилировать весь проект. Для этого выбираем в верхнем меню Build → Build Bundle(s) / APK(s) → Build APK(s):

Делаем сами себе игру для Android

Когда всё будет готово, внизу появится уведомление, что файл готов. Нажимаем на locate, чтобы перейти к файлу в проводнике:

Делаем сами себе игру для Android

Делаем сами себе игру для Android

Этот файл можно скачать себе на телефон с Android, установить его и поиграть в «Пирамиду» даже без интернета.

Вёрстка:

Кирилл Климентьев

Если вы новичок в Написание сценария Начать работу может быть непростой задачей. Требует Создать сценарий Красиво отформатированное хорошее приложение для написания информации и несколько доступных опций.

В последний раз смотрел Netflix Я тоже готовился начать Написание рассказов Для создания документов Документальный. после чтения Множество сценариев Особенно те, кто рассказывал о ДТП Чернобыль Я заметил одну особенность. все написано Скрипт в определенном формате , что заставило меня задуматься, почему это не просто написано в таком приложении, как Wordpad Его просто распечатывают. Одна из причин заключается в том, что сценарий создается не только одним человеком, который его редактирует и читает, но и многими, будь то директора, продюсеры, редакторы или агенты.

Но если тыПросто планируйте написать о хобби Или вы хотите поэкспериментировать, вам не нужно устанавливать отдельное приложение, чтобы поставить Ваши мысли в сценарии. По крайней мере, технически. Итак, открываем приложение делать заметки И только начни!

Лучшие приложения для написания скриптов для Android и iOS - Пояснения

Мы используем синтаксис Fountain, который, по сути, представляет собой правила, позволяющие сделать любой текст похожим на сценарий. Вот несколько примеров.

1. Название сцены начинается с INT или же EXT (начиная с точки), указывая, следует ли Сценография на открытом воздухе или в помещении.

.INT DzTechs Cabin

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

DZTECHS

Hey, This is testing the Fountain syntax.

3. Переход будет добавлен в верхнем регистре с пустой строкой до и после него. Он также заканчивается на CUT TO: text.

Begins to talk to DzTechs

CUT TO:

EXT. Cafeteria

4. Чтобы выделить высказывание в сценарии, вы можете использовать _подчеркивание_, * Выделить курсивом *, **жирный**  , с этими тегами для подтверждения.

Begins to talk to **DzTechs**

Хотя я могу двигаться дальше, но я не хочу, я оставляю это тебе эта ссылка , который содержит все основы, если вам действительно интересно. Вот результат, наслаждайтесь!

.INT DzTechs Cabin

DZTECHS

Hey, This is testing the Fountain suntax. 

Begins talking to DzTechs

CUT TO:

EXT. Cafteria

Заметка: Помните, что вы можете просто написать в Fountain, но чтобы преобразовать его в скрипт, вам понадобится приложение для этого, в то время как вы можете использовать Dubscript или Fade In для выполнения необходимого преобразования, вот Список приложений это может помочь вам в этом.

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

1. Кельткс

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

Вы можете просто щелкнуть значок добавления, чтобы начать писать сценарий. Есть возможность выбирать между форматом кино, театра и комикса. Так что у вас есть из чего выбирать. После присвоения желаемого заголовка вы можете выбрать заголовок экрана и продолжить сценарий, выбрав предустановленные макеты для персонажей, диалога, перехода и т. Д. Если сценарий богат диалогами, вам не нужно каждый раз вводить символ, просто выберите вариант во всплывающем окне, чтобы установить символ.

Лучшие приложения для написания скриптов для Android и iOS - Пояснения

Есть возможность добавлять к скрипту дополнительные комментарии, а также просматривать сцены в режиме списка. В правом верхнем углу у вас есть возможность преобразовать весь скрипт в формат PDF. Я не всегда могу получить доступ к сценариям на моем телефоне, иногда мой ноутбук или iPad удобнее рядом со мной, Celtx доступен на всех платформах, и вы можете войти в систему и синхронизировать все свои данные в режиме реального времени. Поддержка проверки орфографии и возможность изменять цвет переднего плана, фона и сцены изображения полезны, чтобы придать приложению более индивидуальный вид. Он основан на браузере, поэтому к нему можно получить доступ с любого компьютера. Кроме того, он доступен как для iOS, так и для Android.

Заметка: Тем не менее, пользователи, просмотревшие его в Play Store, столкнулись с некоторыми проблемами, такими как задержка отображения символов и частые сбои приложения. При запуске приложения я не столкнулся ни с одной из этих проблем.

Положительные:

  1. Синхронизация в реальном времени между устройствами
  2. Облачное хранилище резервных копий

Минус:

  1. Скрипт нельзя скачать из самого приложения на компьютер
  2. Это зависит от браузера и поэтому не может быть загружено

Получить скрипт Celtx (iOS | Android)

2. Мобильная версия Fade In Mobile Basic

Это облегченная версия самого приложения. Вам не нужно входить в систему, поэтому вы можете сразу начать использовать его. Он также предлагает минимальный пользовательский интерфейс, а в правом углу есть знак плюса для добавления новых сценариев. У вас может быть обычный холст со всеми параметрами макета внизу, такими как заголовок сцены, персонаж, переход и т. Д. Кроме того, есть дополнительное преимущество определения форматирования текста, так что текст можно легко добавить курсивом, подчеркиванием или зачеркиванием.

Вы можете просматривать сценарий с точки зрения сцен, а также выполнять поиск по нему. Все тексты можно сохранить в формате PDF, а также распечатать. Если вы хотите добавить к скрипту свои комментарии. Вы можете это сделать, и это добавляет отдельный значок везде, где вы добавляете комментарий. Быстрый вариант смены темы на темный режим может пригодиться тем, кто ее предпочитает.

Лучшие приложения для написания скриптов для Android и iOS - Пояснения

Что касается настроек, вы можете изменить шрифт со Standard Courier на другие шрифты, такие как American Typewriter, Lato, Monospace и т. Д. Приложение также предоставляет довольно много опций для изменения внешнего вида, таких как включение темного заголовка сцены, изменение цвета страницы и использование полной ширины сцены. Вы также можете импортировать или экспортировать сценарии в Google Drive, Dropbox и OneDrive, поэтому нет никаких шансов потерять ваши данные.

Полная версия приложения доступна по цене 4.99 доллара США, если вы планируете использовать ее на профессиональном уровне и хотите импортировать и редактировать сценарии, чего нет в базовой версии.

Положительные:

  1. Простое создание скрипта для новичков
  2. Импорт создает копию в локальном хранилище
  3. Его можно экспортировать в EPUB
  4. Доступно для Windows, Mac, Linux, Android и iOS.

Минус:

  1. Импортированные сценарии доступны только для чтения в базовой версии
  2. традиционный интерфейс

Получить Fade In Mobile Basic (iOS | Android)

3. Автор сценария Dubscript

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

Приложение в основном разделено на два окна, القراءة والكتابة. Начиная с раздела الكتابة Вместо того, чтобы писать в формате сценария, вы пишете простым текстом, который автоматически преобразуется в формат сценария. Кроме того, изначально отображаются образец текста и удобочитаемый вывод. Так что вы можете легко поиграть с ним и посмотреть, как он отражается.

Лучшие приложения для написания скриптов для Android и iOS - Пояснения

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

Положительные:

  1. Может читать файлы Final Draft (.fdx), Web (.html) и Trelby (.trelby)
  2. Отличный выбор для новичков
  3. Полезная боковая панель
  4. Работает на Chromebook
  5. Настраиваемый текст водяного знака

Минус:

  1. Доступно только на Android

Получить Dubscript Сценарист (Android).

4. Юскрипт

Может быть Google Chrome Мощный зверь, устанавливающий на него приложения и расширения. Ну, YouMeScript — еще одно приложение, которое может помочь нам писать сценарии на любом компьютере с помощью Google Chrome.

Вы должны добавить его по ссылке ниже и получить к нему доступ, набрав chrome: // apps / в адресной строке. Не требуется вход в систему и без рекламы. Так что все, что у вас есть, — это аккуратный дизайн, с которым можно работать. Когда вы открываете приложение, вы видите пример сценария, который можно изменить.

Лучшие приложения для написания скриптов для Android и iOS - Пояснения

Вы также можете импортировать сценарии в форматах Simple Text и Fountain. Более того, у вас есть возможность открывать или сохранять свои сценарии в Google Drive для чего требуется одноразовое разрешение. Все параметры макета и страницы доступны на панели инструментов справа. В дополнение к этому, есть также встроенная проверка орфографии и словарь, которые являются дополнительным бонусом.

Профессиональная версия стоит 19.99 доллара США в год, что дает вам офлайн-поддержку, автоматическое аварийное резервное копирование и облака. Гифки , картинки и многое другое.

Положительные:

  1. Прост в использовании
  2. Поддержка Chromebook
  3. Поддержка Google Диска

Минус:

  1. Автономное редактирование только в профессиональной версии

Получите YouMeScript (Chrome).

5. Фонтанизация

я сделал Гугл документы Возможность работать в коллективном пространстве очень проста. Скорее всего, вы не только сами пишете сценарий, но и можете поделиться им с другими. Что, если вы можете использовать Google Docs и преобразовать его в формат скрипта. С помощью этой опции вы получите удобство и простоту получения документов с требуемым форматом сценария в качестве вывода.

Просто воспользуйтесь ссылкой ниже и установите расширение YouMeScript для Chrome. Это добавит их в Google Docs, чтобы вы могли получить к ним доступ из раздела Add-ons в верхней части страницы Google Docs. После того, как вы закончите писать свой скрипт в виде обычного текста, вы можете одним щелчком мыши преобразовать его в скрипт. Он отформатирован на языке разметки Fountain. Вы можете подумать о том, как различать заголовок, символы и т. Д., Но с определенными стандартными правилами их легко освоить с помощью документации и превратить в скрипт. Например, имя персонажа может быть выделено жирным шрифтом или начинать сцену с int. или доб.

أفضل التطبيقات لكتابة السيناريوهات لنظامي Android و iOS - شروحات

Положительные:

  1. Прост в использовании
  2. Не устанавливайте дополнительное ПО
  3. Идеально подходит для тех, кто хочет работать с Google Документами

Минус:

  1. Не замена специализированному приложению
  2. Он не предоставляет все параметры форматирования

получить Fountainize (Google Docs).

6. Wknd Read (программа для чтения скриптов)

Я уверен, что вы устали писать сценарии, поэтому иногда вам просто нужно немного места, чтобы найти время, чтобы прочитать. Если нет, то чтение сценария понравившегося фильма может помочь вам выбраться из этой колеи. Ой! Если у вас есть iPad, вы действительно можете начать любить сценарии чтения, и это то, что случилось со мной :).

С Weekend Read вы можете работать с PDF файлы и файлы окончательных черновиков и даже файлы с обычным текстом. Существует быстрый переключатель для переключения между оригиналом и расширенным документом, чтобы вы могли легко его прочитать. У фильмов есть длинные сценарии, и если вы планируете читать их на iPad, вам будет очень сложно переключаться между страницами. В Weekend Read вы можете быстро прокручивать страницу в средстве просмотра, проводя пальцем справа налево. Все тексты сохраняются в автономном режиме, но вы также можете загрузить их в Dropbox. Также есть возможность загружать файлы по URL-адресу. Кроме того, вы можете изменить формат шрифта, выбрать размер текста и включить полужирный режим.

Лучшие приложения для написания скриптов для Android и iOS - Пояснения

Библиотека может содержать до четырех документов, но если вы думаете творчески, вы можете обновить ее, чтобы добавить больше контента, за 9.99 доллара США.

Положительные:

  1. Интерфейс с минимальным
  2. Отлично, если вы любите читать сценарии
  3. Несколько вариантов шрифта

Минус:

  1. Сценарии не могут быть изменены
  2. Доступно только на iOS

Get Weekend Read (iOS).

7. Писательский дуэт

Если вы подумываете о совместном сочинении, вы, должно быть, уже слышали о Writer Duet. Вы можете открывать несколько проектов во вкладках и легко переключаться между ними. Все ваши проекты хранятся в портфолио. Вы можете просто начать печатать, используя различные параметры, такие как сцена, движение и персонаж, на панели инструментов в верхней части приложения. Доступ к параметрам форматирования можно быстро получить одним нажатием на клавиатуре, как параметр в правом верхнем углу. Вы также можете открыть дополнительные инструменты и параметры формата из параметров меню.

Есть встроенная функция проверки орфографии. Более того, такая опция, как «Время», позволяет отслеживать изменения, внесенные несколькими людьми, а также просматривать удаленный текст. Другие дополнительные функции включают поддержку добавления изображений в сценарий из URL-адреса.

Лучшие приложения для написания скриптов для Android и iOS - Пояснения

Но, как я уже сказал, самое приятное в этом приложении — это возможность сотрудничать. Таким образом, вы можете присоединиться или пригласить других для совместной работы с вами, используя частный URL-адрес для совместной работы.

Что касается возможностей экспорта, вы не будете разочарованы. Вы можете экспортировать то, что вы создали, в PDF, Fountain, Celtx, Rich Text Format и многие другие.

Положительные:

  1. Хороший выбор для сотрудничества
  2. Множество полезных инструментов
  3. Несколько вариантов экспорта

минусы:

  1. Не для новичков
  2. Некоторые диалоговые окна не полностью отображаются в портретном режиме

Получить Writer Duet для (Android | iOS)

заключительные замечания

Итак, это был список лучшие приложения писать сценарии. Чтобы дать вам обзор, если вы ищете многоплатформенный вариант, Celtx — лучший вариант, который имеет синхронизацию в реальном времени и кросс-платформенную синхронизацию. Fade In также является хорошим вариантом, но бесплатная версия позволяет вам лишь мельком увидеть приложение, поэтому, если вы просто пробуете, вы можете попробовать. Многие из вас также могут быть новичками, с образцом сценария и советами на боковой панели Dubscript полезен для новичков, но доступен только на Android. YouMeScript и Fountainize основаны на Chrome и Google Docs, если вы не используете их часто, они могут быть не совсем подходящими. Ну если это Вы сосредоточены на сотрудничестве WriterDuet — это то, что нужно, даже если к нему немного сложно привыкнуть.

Понравилась статья? Поделить с друзьями:
  • Как написать скрипт на питоне 1000 7
  • Как написать скрипт на макрос
  • Как написать скрипт на python для телеграм
  • Как написать скрипт на php
  • Как написать скрипт на javascript