Тема: OFF: Shell-скриптинг под Android
Кто-нибудь знаком с сабжем? Пытался написать скрипт для завершения приложения и запустить его через Tasker, но ничего не работает. Отзовитесь, кто в теме.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Кто-нибудь знаком с сабжем? Пытался написать скрипт для завершения приложения и запустить его через Tasker, но ничего не работает. Отзовитесь, кто в теме.
Вот это подойдет или вот это.
Первое читал. Проблема в том, что у меня почему-то не запускаются ни скрипты, ни команды через таскер. Вы им пользуетесь?
Всё, разобрался, таскеру root-права предоставлены не были.
am kill com.example.project
Никогда не держал в руках Андроид. Можно узнать, какие скрипты и шеллы есть стандартно?
Первая ссылка atomix'а.
Вот ещё хорошая ссылка: 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
Если батарея андроида изнашивается, а рекалибровка уже не помогает, можно попробовать переделать андроид-планшет под питание от сети, без батареи. Нужно изьять батарею, отсоединить от батареи контроллер питания, подпаять к нему выводы зарядного устройства(вместо батареи, соблюдая полярность) и восстановить схему.
Осталось проверить запуск планшета и откалибровать уже несуществующую батарею, например, с помощью программы battery calibration, чтобы андроид сбросил статистику использования изьятой физической батареи и не сходил с ума по поводу её отсутствия.
Зарядное устройство должно быть импульсным и давать хороший ток 1000-2000 mA при напряжении 4.7-5.3 v, т.е. эмулировать мощность аккумулятора.
(у меня это прокатило на Tesla)
Выводит список имён процессов, запущенных от имени пользователя(используется Android Terminal Emulator):
# user process names list
echo 'USER PROCESSES'
ps | grep u$USER_ID | grep -E -o '[0-9a-zA-Z\./:_-]{1,}$'
Остановка всех сторонних приложений и очистка их кэша, за исключением 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
Подстановочная команда ограничена символом `, не следует путать с одиночной кавычкой '.
Набор сервисного номера, например *104#:
am start -a android.intent.action.CALL tel:*104%23
Специальный символ # заменяется кодом %23, иначе он не будет пропущен.
Проверить флэш-накопители андроида на предмет неполадок файловой системы можно, например, с помощью команды 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
Android USB тетеринг с помощью Proxoid
P.S.
Для Windows приемлема связка Proxoid (на андроиде) и adb (на настольном компьютере), с командой adb forward tcp:8080 tcp:8080, которая свяжет настольный компьютер и андроид.
Можно попробовать запустить часы в режиме 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
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться