Shell-включили андроид среда

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

За предишните броеве на списанието, аз написах една статия за Tasker - една система, която дава възможност за автоматизиране на работата на Android и да се замени стотици приложения на трети страни. За съжаление, Tasker Android ограничени функции на високо ниво и не позволява операции от ниско ниво, като например монтиране на файлови системи се променят параметрите на ядрото, системни променливи или стартират демони. Но всичко това може да бъде направено със скриптове.

Веднага казвам, че в тази статия ще се съсредоточи върху шел скриптове в традиционното разбиране за Linux, без използването на инструменти като SL4A, QPython или Roboto. Основната цел на тези скриптове - модифициране на параметрите на поведение система ядрото, работа с демони (ADB, например) и други подобни. Скриптове могат да започнат на етапа на стартиране на операционната система, новата инсталация на фърмуера, след тапас върху бутона или чрез традиция - от терминала.

В тази статия ще ви обясни как да се напише такъв сценарий, как да ги накара да се стартира автоматично се свързва с конкретни събития в системата. Като бонус, тя също така ще ви обясни как да се направи конзолата за възстановяване (възстановяване) извърши необходимите действия за вас, преди да инсталирате или непосредствено след инсталирането на новия фърмуер. Ние започваме.

Характеристики на Android-среда

В самата си основа, където няма Java и Dalvik, Android е минималистичен Linux-дистрибуция с всичките му присъщи атрибути: ядро ​​инициализация система, набор от библиотеки, демони, конзолни команди, и, разбира се, Шели. Последно - не е нищо друго освен една mksh на MirBSD, преименуван од; една проста черупка с поддръжка на език разполага класически корпус Борн от UNIX и автоматично довършване, като натиснете Tab.

Като основен комплект UNIX-команди се използват инструментариум, един вид олекотена алтернатива на BusyBox, което ви позволява да се обадя на няколко различни отбори от една и съща изпълними файлове (с помощта на символни връзки). Toolbox включва много ограничен набор от команди, която е само не не Впиши или Сортът, но дори и ср. Следователно, за да завърши работата със скриптове силно се препоръчва да инсталирате BusyBox, в полза на супермаркета, пълен с безплатни монтажници.

Основната цел на скриптове в Android - работа с помощните средства на ядрото и на системата. В основата на стандарта тук и износ на всички едно и също интерфейси / ргос и / Сис, чрез който можете да направляват желязото и състоянието на системата. Плюс това има набор от специфични инструменти за Android, които ще бъдат много полезни в развитието на сценария:

  • ч - за управление на пакетите ви позволява да инсталирате, изтриване, и да се премести на софтуер;
  • съм - управител дейност (активност), може да се използва за изпълнение на приложението;
  • dumpsys - зареже към конзолата масите на различна информация за състоянието на системата;
  • снимка на екрана - Utility за улавя;
  • screenrecord - инструмент за запис на скрийнкастове;
  • getprop / setprop - команди за четене и промяна на системата променливи;
  • старт / стоп - пускане и спиране на системни услуги;
  • вход - ви позволява да изпращате в текущия прозорец на ключови кодове (клавиатура емулация);
  • услуга - помощна програма за управление на Java-услуги, има много възможности;
  • SVC - ви позволява да управлявате Wi-Fi, USB-свързани и захранване.
Shell-включили андроид среда
Част dumpsys команден изход

Първият пример

Сега тя трябва да се изпълнява. Най-лесният начин да направите това с всички от една и съща ADB:

Разбира се, този метод не е много удобно. Така че имаме нужда от бърз начин да стартирате скрипта. Най-удобният от решенията ме намери - това QuickTerminal приложение. Инсталиране, тичам, отидете в раздела Quick Command, кликнете върху бутона "+", за шофиране име (произволно) и команда (ш /sdcard/apk_backup.sh), в Тип изход или изберете Dialog изход, или нищо. В първия случай, по време на изпълнение на скрипта на екрана ще се появи в резултат, във втория всички ще се проведе във фонов режим. Това е по-удобно. На следващо място, съхраняване и извличане на ключ, с който скрипт може да се управлява лесно и бързо.

Сега нека да напиша сценарий, който ще възстанови нашата архивиране:

В него ние използвахме командния ч с опцията за инсталиране и знамена -r -t и, които да попречат на системата да инсталирате приложението, дори и да са подписали или тест ключ вече е инсталиран. Можете да използвате и -s на флага, която принуждава заявлението да бъде инсталирано на картата с памет (ако има такава възможност), или -F - създаване на вътрешна памет.

Shell-включили андроид среда
Почти всички от екипа на Android са подробно помощ

С Рут, можете дори да направите резервно копие на настройките за всички приложения, използващи архивиране и архив директория / данни / данни /, но се възстанови, че ще бъде много проблематично, тъй като в Android, всяко приложение, изпълнен от името на специално създадени Linux потребител за това и магазини среда, в рамките на директорията собственост на този потребител. Проблемът тук е, че идентификатор Linux потребител за всяко приложение се генерира динамично, така че след възстановяване на резервно копие на нововъведената система за идентификаторите не съвпадат, и заявлението не може да чете настройките си. Вие трябва ръчно да разбера идентификатора на потребителя за всяко приложение и промените разрешенията за директорията на данни.

От друга страна, ние можем да използвате вградения в Android Backup мениджър, който позволява на приложения на трети страни да използват възможностите на системата за архивиране и възстановяване на приложения и техните данни. Можете да го управлявате от конзолата (и, следователно, с скриптове), но само по себе си тя не носи никаква архивиране, и разпределя работата на приложения на трети страни. Хелий - един от тези приложения. Ако инсталирате и да го създаде, архивиране и възстановяване на операциите може да бъде сценарист. Например, следния прост скрипт, за да направите резервно копие на всички приложения на трети страни:

Дизайн $ е необходимо да се намали с думата "пакети:», което добавя ч в началото на всеки пакет. За да възстановите резервно копие, можете да използвате една и съща хелий, а bmgr отбора:

Autoplay

"Това е готино, но скриптове трябва да се движат," - казвате и вие ще бъдете абсолютно прав. Без стартиране скриптове от малко помощ, но е лесно да се определи, ако използваме едни и същи калъфи. Той знае как да пуснете някой команден шел в отговор на всяко събитие. За да използвате тази функция, трябва само да създадете нов профил, изберете събитието (за бекъп-добрия случай ще бъде време), а след това да добавяте ефекти, изберете Script -> Run Shell, опитвайки се да карам на командата (ш /sdcard/script.sh), изберете, ако е необходимо, файл за записване на резултати и включват профила.

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

Така че ние можем да пробва стартиране? Например, ADB демон започне скрипт в режим на мрежата:

За да го свържете с компютър, въведена следната команда:

Ние също можем да се прилагат някои оптимизация на подсистемата за виртуална памет:

Или коригира lowmemorykiller механизъм (автоматично убиване на работещи приложения на компютъра няма достатъчно памет) до нашите нужди:

И разбира се, автоматична процедура за избор планировчика:

Всичко това може да бъде направено с помощта на специализиран софтуер, но защо зареждане на допълнителен софтуер, който също ще виси във фонов режим, когато можете да направите няколко прости скриптове?

Shell-включили андроид среда
Как да се стартира скрипт с помощта Tasker

Работещи скриптове преди и след EEPROM

Почти всеки, който се инсталира на притурката си на трета страна фърмуера, също поставя върху нея пакет с Google маркови приложения (Gapps), който включва Market, YouTube, Gmail, и друг софтуер. Всеки път, когато има актуализация на фърмуера раздел / система, тя съдържа и Gapps, напълно изтрити, но нашите приложения са винаги на място. Това е така, защото, наред с други неща, Gapps съдържа в състава си специален скрипт, който се намира в /system/addon.d/ директория и да стартирате конзолата за възстановяване преди и след инсталацията на фърмуера. Този скрипт прави архивирането и възстановяването на приложения на Google.

Ние можем да използваме тази възможност, за да извършат нашите собствени действия преди и след инсталацията на фърмуера. Ето, например, тя изглежда като възстановяването ми скрипт, който не го прави резервно копие, но почиства отломки от фърмуера веднага, след като е инсталиран:

Сценарият премахва мелодии, известия за синтезиране на говор двигател и множество приложения. Всички тези действия са предизвикани в отговор на прехвърлянето на сценария възстанови опции за командния ред (това прави конзолата за възстановяване след инсталирането на фърмуера), но също така са предвидени и възможности за лечение опции като резервно копие, предварително архивиране, след архивиране, предварително възстановяване и след възстановяване , Тук е просто все още мъниче, но ако искаме да резервно копие на някои файлове и приложения, преди да започнете инсталирането на фърмуера, бихме могли да ги добавите към архива на блок, както се прави в /system/addon.d/70-gapps.sh на скрипта:

Тази част от сценарий илюстрира перфектно как да направите резервно копие на файлове. Ключови елементи тук: listfiles функция, която показва при стартиране на операционната файловете, изброени, както и функцията на архивен файл, който е част от конзолата за възстановяване (дефинирани в /tmp/backuptool.functions файл). Това прави резервно копие на файловете в една линия.

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

Shell-включили андроид среда
Google App Script архивиране

Версия на Android 2.3 и по-долу, вместо mksh използва минималистични обвивка пепел, която е част от основата на BSD-системи.

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

Използването на скриптове в Android, можете да направите много повече, отколкото на резервни копия и да конфигурирате вашата система. Например, един скрипт, който се събужда на всеки десет минути, а ако нивото на батерията е станал по-малко от 30%, деактивирайте Wi-Fi и Bluetooth:

Script да работят във фонов режим, просто го наричат, както следва:

И това е скрипт, който ви позволява бързо да попълнят формуляри, които се нуждаят от въвеждане на електронна поща и парола (в приложения и уеб сайтове):

Тя може да се управлява по различен начин. Или преди стартирането на приложението, задаване на закъснение:

Не е толкова горещо, както ви е удобно, но тя работи. Как можем да използваме тази функционалност? Например, за да се направи проста скрипт clip.sh:

Или просто отворете прозореца за набиране с желания номер:

Около един и същи начин, можете да изпратите SMS:

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

вместо заключения

За някой, всичко споменато в тази статия може да изглежда малко пресилено. Кажете, всичко това може да се направи с помощта на стандартен софтуер и Tasker. Но защо използването на тежки Java-софтуер, където желаното действие може да се извърши с помощта на прост скрипт, който не заема твърде много памет и може лесно да бъде прехвърлена на друго устройство? Scripts са удобни, лесно, бързо работят и дават възможност за фина настройка за себе си.

Покажете тази статия на приятел: