1

Тема: OFF: Shell-скриптинг под Android

Кто-нибудь знаком с сабжем? Пытался написать скрипт для завершения приложения и запустить его через Tasker, но ничего не работает. Отзовитесь, кто в теме.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

2

Re: OFF: Shell-скриптинг под Android

Вот это подойдет или вот это.

3

Re: OFF: Shell-скриптинг под Android

Первое читал. Проблема в том, что у меня почему-то не запускаются ни скрипты, ни команды через таскер. Вы им пользуетесь?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: OFF: Shell-скриптинг под Android

Всё, разобрался, таскеру root-права предоставлены не были.

am kill com.example.project
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: OFF: Shell-скриптинг под Android

Никогда не держал в руках Андроид. Можно узнать, какие скрипты и шеллы есть стандартно?

6

Re: OFF: Shell-скриптинг под Android

Первая ссылка atomix'а.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: OFF: Shell-скриптинг под Android

Вот ещё хорошая ссылка: Android Shell

Попробовал "убить" процесс через консоль Android Terminal Emulator, с помощью команды kill. Так понял, помимо root прав на андроиде, нужно не забыть ввести команду su в консоли, чтобы действовать от имени суперпользователя.

Чтобы запустить процесс нужно знать класс приложения и класс активности окна, каковые можно выловить например так:


dumpsys|grep <ключевая строка названия класса приложения>

dumpsys|grep boatbrowser

или


dumpsys window|grep <ключевая строка названия класса приложения>|grep ActivityRecord

dumpsys window|grep boatbrowser|grep ActivityRecord

Покажет что то вроде:


AppWindowToken{423d8080 token=Token{421e3470 ActivityRecord{42202fd8 u0 com.boatbrowser.free/.BrowserActivity}}}
...

Получается, что:


com.boatbrowser.free/.BrowserActivity

это и есть строка запуска приложения, осталось запустить:


am start -n com.boatbrowser.free/.BrowserActivity

8 (изменено: Poltergeyst, 2017-12-09 23:50:09)

Re: OFF: Shell-скриптинг под Android

Если батарея андроида изнашивается, а рекалибровка уже не помогает, можно попробовать переделать андроид-планшет под питание от сети, без батареи. Нужно изьять батарею, отсоединить от батареи контроллер питания, подпаять к нему выводы зарядного устройства(вместо батареи, соблюдая полярность) и восстановить схему.
Осталось проверить запуск планшета и откалибровать уже несуществующую батарею, например, с помощью программы battery calibration, чтобы андроид сбросил статистику использования изьятой физической батареи и не сходил с ума по поводу её отсутствия.

Зарядное устройство должно быть импульсным и давать хороший ток 1000-2000 mA при напряжении 4.7-5.3 v, т.е. эмулировать мощность аккумулятора.

(у меня это прокатило на Tesla)

9

Re: OFF: Shell-скриптинг под Android

Выводит список имён процессов, запущенных от имени пользователя(используется Android Terminal Emulator):


# user process names list
echo 'USER PROCESSES'
ps | grep u$USER_ID | grep -E -o '[0-9a-zA-Z\./:_-]{1,}$'

10 (изменено: Poltergeyst, 2017-04-16 23:38:53)

Re: OFF: Shell-скриптинг под Android

Остановка всех сторонних приложений и очистка их кэша, за исключением Tasker и брандмауэра :


except='tasker|firewall'

p=`pm list packages -3 -e | grep -E -v $except`

for pkg in $p;
do
name=${pkg:8};
echo 'shutdown '${name};
am force-stop ${name};
usleep 100;
done

for pkg in $p;
do
pth=/data/data/${pkg:8}/cache/;
echo 'clear '${pth};
rm -r -f  ${pth}*;
usleep 100;
rm -r -f  ${pth}.*;
usleep 100;
done

Аналогичный сценарий, чистит процессы сторонних пакетов(установленных пользователем), а также процессы, классы которых читаются из файла, например:
shutdown.txt


android.process.media
com.android.music
com.android.musicfx
com.android.email
com.android.htmlviewer

pcleaner.sh


pcleaner()
{
p=''
n=0
except='tasker|firewall'

if [ $1 -eq 1 ]
then
  p=`cat /system/bin/shutdown.txt`
else
  p=`pm list packages -3 -e|grep -E -v $except`
  n=8
fi

# stop processes
#---------------------------------------------
for pkg in $p;
do
name=${pkg:${n}};
echo 'shutdown '${name};

pkill ${name};
usleep 100;

am force-stop ${name};
usleep 100;
done

# clear cache
#---------------------------------------------
for pkg in $p;
do
pth=/data/data/${pkg:${n}}/cache/;
echo 'clear '${pth};

rm -r -f  ${pth}*;
usleep 100;
rm -r -f  ${pth}.*;
usleep 100;
done
}
pcleaner 1
sleep 3
pcleaner 2

Очистка кэша всех приложений(осторожно):


for f in `busybox find /data/data -type d -iname "cache*"`
do
echo $f; 
rm -r -f $f/*; 
usleep 100;
rm -r -f $f/.*; 
usleep 100;
done

Подстановочная команда ограничена символом `, не следует путать с одиночной кавычкой '.

11

Re: OFF: Shell-скриптинг под Android

Набор сервисного номера, например *104#:


am start -a android.intent.action.CALL tel:*104%23

Специальный символ # заменяется кодом %23, иначе он не будет пропущен.

12

Re: OFF: Shell-скриптинг под Android

Проверить флэш-накопители андроида на предмет неполадок файловой системы можно, например, с помощью команды fsck_msdos. Сначала нужно обнаружить путь к накопителю, с помощью команды mount без параметров (или mount | grep sdcard). В выводе команды содержатся строки содержащие пути к накопителям, наподобие:


/dev/block/vold/179:7 /storage/sdcard0
...
/dev/block/vold/179:97 /storage/sdcard1

Осталось запустить проверку:


#Внутренняя флэш память
fsck_msdos /dev/block/vold/179:7

#Внешняя SD карта
fsck_msdos /dev/block/vold/179:97

13 (изменено: Poltergeyst, 2017-04-17 21:20:33)

Re: OFF: Shell-скриптинг под Android

Android USB тетеринг с помощью Proxoid

P.S.
Для Windows приемлема связка Proxoid (на андроиде) и adb (на настольном компьютере), с командой adb forward tcp:8080 tcp:8080, которая свяжет настольный компьютер и андроид.

14 (изменено: Poltergeyst, 2023-09-29 23:16:39)

Re: OFF: Shell-скриптинг под Android

Можно попробовать запустить часы в режиме screensaver shell-командой. ActivityRecord часов в режиме screensaver, можно обнаружить через logcat. Сначала выполнить команду:


logcat -f /storage/sdcard0/Download/evtlog.txt -b events

или, например:


logcat -b events|sed -n '/create_activity/p' >/storage/sdcard0/Download/evtlog.txt

после чего вручную запустить часы в режиме screensaver и остановить запись лога.

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

com.android.deskclock/.ScreensaverActivity

Осталось запустить:


su
am start -n com.android.deskclock/.ScreensaverActivity