Adb скрипт bat для установки файла в телефон
I wrote a Windows batch file that replaces Amazon lockscreen ads with user images on rooted kindle fire hd 7", 2013 (kfsowi). Just learned I botched the adb commands because I was running "adb insecure" so was getting su access without writing it into the adb commands.
What I need: To run in batch file, I need one-line adb shell su commands to pull from/push to /data on this device. (Or I could use adb -d shell su -c "mount -o remount rw, /data on one line followed by the pull or push)
I have fixed an ls command like this:
Now I need same for pull and push. The problem:
- With adb insecure, this works fine: adb pull "/data/securedStorageLocation" "C:/destination"
- Without adb insecure I get: remote object '/data/securedStorageLocation/' does not exist
Above happens even if I first run: adb -d shell su -c "mount -o remount rw, /data
Can someone tell me how to do the pull and push with adb shell and su?
EDIT: adb root command doesn't gain root on this device
To use adb push or adb pull in root mode, the adb daemon on the device must be running in root mode (which is what ADBInsecure does).
@Izzy How can I get into root mode without adb insecure if >adb root< command doesn't work? I want to distribute this. Is there any other way to push and pull the directory? thx
I don't know (always used "ADB Insecure", as I couldn't get adb root to work either). Worth a separate question, maybe?
Выводы
Как видишь, с помощью ADB можно сделать много интересного. И чем больше пользуешься консолью, тем быстрее можно выполнить некоторые действия без установки дополнительного софта на устройство. Надеюсь, данная статья помогла разобраться с ADB и подтолкнула к чтению документации и поиску новых полезных команд.
6 Answers 6
Well, you have to do a few commands, as I don't believe it will work in one.
- adb shell
- su
- cd /data/path/of/file
- cp /data/path/of/file/copyme /data/local/tmp
- chown shell.shell /data/local/tmp/copyme
- exit
- exit
- adb pull /data/local/tmp/copyme /destination/copyme
This works for me every time.
Thanks for this discussion. It led me to a solution that worked well enough for me while backing up my phone that won't mount its internal ext4, before I do something drastic while trying to fix it (apparently this needs root permissions).
Note that adb shell generally sets up a text terminal (so can convert single end-of-line characters to CRLF, mangling binary data like partition images or TAR archives). While you can work around this in Unix/Linux versions of adb (e.g. add stty raw to your shelled command) or use some newer adb with exec-out option, on Windows it still writes CRLF to its output. The neat trick is to pass data through base64 encoding and decoding (binaries are available for Windows en-masse). Also note that errors or verbose messages printed to stderr in shell end up on stdout of adb shell program in the host system - so you want to discard those after inevitable initial experimentation.
Can be easily scripted by Windows to cover all the partitions (can look the list up by ls -la /dev/block/ and/or by cat /proc/diskstats or cat /proc/partitions ), e.g.:
(Note to use %%P in CMD batch files, or %P in interactive shell).
Don't forget that there are also mmcblk0boot[01] partitions, and that the mmcblk0 overall contains all those partitions in a GPT wrapping, just like any other harddisk or impersonator of one :)
To estimate individual partition sizes, you can look at the output of:
Unfortunately, I did not quickly and easily manage to tar cf - mmcblkp0* and get the partition contents, so I could pipe it to e.g. 7z x -si and get the data out as multiple files in a portable one-liner as well.
- Посмотреть какие устройства подключены и могут работать с ADB.
- Просматривать логи.
- Копировать файлы с/на аппарат.
- Устанавливать/Удалять приложения.
- Удалять (очищать) раздел data.
- Прошивать (перезаписывать) раздел data.
- Осуществлять различные скрипты управления.
- Управлять некоторыми сетевыми параметрами.
Распаковываем архив (рекомендуется распаковывать в корень диска или в другую папку, не содержащую русских букв и пробелов в пути). Например: C:\\adb
Настройки соединения, устройства. Драйверы.
Настраиваем телефон.
Для этого перейдите в: "Настройки" - "О телефоне" - 7 раз нажмите на номер сборки. В настройках для разработчиков активируйте отладку по USB.
При подключении USB-кабеля выбираем "Передача файлов".
Проверяем соединение на компьютере.
Перейдите в, раннее распакованную, папку с утилитами. В ней, в адресной строке папки, сверху, напишите - "cmd" (без кавычек) и нажмите Enter.
Проверьте доступность устройства и правильность установки драйверов. Для этого выполните adb или fastboot команду:
Если все хорошо, драйвера успешно установлены и телефон правильно подключен - вы увидите следующий ответ:
Если что-то неправильно, то в списке подключенных устройств (List of devices attached) будет пусто.
Так как adb/fastboot - консольные утилиты, работать с ними надо из командной строки.
Перейдите в, раннее распакованную, папку с утилитами. В ней, в адресной строке папки, сверху, напишите - "cmd" (без кавычек) и нажмите Enter.
Далее работаем посредством нужных вам команд.
Скрытые команды ADB
adb -d Команда посылается только на устройство подключенное через USB.
Внимание: Выдаст ошибку, если подключено больше одного устройства.
adb -e Команда посылается на устройство в эмуляторе.
Внимание: Выдаст ошибку, если подключено больше одного эмулятора.
adb -s Команда посылается на устройство с указанным серийным номером:
adb -p Команда посылается на устройство с указанным именем:
Если ключ -p не указан, используется значение переменной ANDROID_PRODUCT_OUT.
adb devices Список всех подсоединенных устройств.
adb connect [:] Подсоединиться к андроид хосту по протококу TCP/IP через порт 5555 (по умолчанию, если не задан).
adb disconnect [[:]] Отсоединиться от андроид подключенного через TCP/IP порт 5555 (по умолчанию, если не задан).
Если не задан ни один параметр, отключиться от всех активных соединений.
adb push Копировать файл/папку PC->девайс.
adb pull [] Копировать файл/папку девайс->PC.
adb sync [] Копировать PC->девайс только новые файлы.
Ключи:
-l Не копировать, только создать список.
adb shell Запуск упрощенного unix shell.
Примеры использования
adb emu Послать команду в консоль эмулятора
adb install [-l] [-r] [-s] Послать приложение на устройство и установить его.
Пример: adb install c:/adb/app/autostarts.apk Установить файл autostarts.apk лежащий в папке /adb/app/ на диске с:
Ключи:
-l Блокировка приложения
-r Переустановить приложение, с сохранением данных
-s Установить приложение на карту памяти
Установка split apk
adb uninstall [-k] Удаление приложения с устройства.
Ключи:
-k Не удалять сохраненные данные приложения и пользователя.
adb wait-for-device Ждать подключения устройства.
adb start-server Запустить службу/демон.
adb kill-server Остановить службу/демон.
adb get-state Получить статус:
offline Выключен.
bootloader В режиме начальной загрузки.
device В режиме работы.
adb get-serialno Получить серийный номер.
adb status-window Непрерывный опрос состояния.
adb remount Перемонтировать для записи. Требуется для работы скриптов, которые изменяют данные на.
adb reboot bootloader Перезагрузка в режим bootloader.
adb reboot recovery Перезагрузка в режим recovery.
adb root Перезапуск демона с правами root
adb usb Перезапуск демона, прослушивающего USB.
adb tcpip Перезапуск демона, прослушивающего порт TCP.
adb ppp [параметры] Запуск службы через USB.
Note: you should not automatically start a PPP connection. refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
Параметры:
defaultroute debug dump local notty usepeerdns
FastBoot - консольное приложение для PC. Используется для действий над разделами
fastboot devices Список присоединенных устройств в режиме fastboot.
fastboot flash Прошивает файл .img в раздел устройства.
fastboot erase Стереть раздел.
Разделы: boot, recovery, system, userdata, radio
Пример: fastboot erase userdata Стирание пользовательских данных.
fastboot update Прошивка из файла имя_файла.zip
fastboot flashall Прошивка boot + recovery + system.
fastboot getvar Показать переменные bootloader.
Пример: fastboot getvar version-bootloader Получить версию bootloader.
fastboot flash:raw boot [] Создать bootimage и прошить его.
fastboot devices Показать список подключенных устройств.
fastboot continue Продолжить с автозагрузкой.
fastboot reboot Перезагрузить аппарат.
f astboot reboot-bootloader Перезагрузить девайсв режим bootloader.
Перед командами fastboot можно использовать ключи:
-w стереть данные пользователя и кэш
-s Указать серийный номер устройства.
-p Указать название устройства.
-c Переопределить kernel commandline.
-i Указать вручную USB vendor id.
-b Указать в ручную базовый адрес kernel.
-n Указать размер страниц nand. по умолчанию 2048.
@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash radio radio.img
fastboot reboot
@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash userdata data.img
fastboot flash system system.img
fastboot flash boot boot.img
fastboot reboot
@echo off
adb devices
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot oem writecid 11111111
fastboot reboot-bootloader
fastboot getvar cid
fastboot reboot
@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash recovery recovery.img
fastboot reboot
@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу.
pause
fastboot flash boot boot.img
fastboot reboot
Если logcat запускается на машине разработчика (не через удаленный adb shell), можно также установить значение выражения фильтра по умолчанию задав переменную окружения ANDROID_LOG_TAGS:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
Следует обратить внимание что задав переменную окружения ANDROID_LOG_TAGS она не будет работать в эмуляторе/устройстве, если вы будете использовать logcat в удаленном shell или используя adb shell logcat.
Вышеописанная команда export работает в ОС *nix и не работает в Windows.
Контроль формата вывода лога
Просмотр альтернативного буфера лога
Просмотр stdout и stderr
ˇ
Скрипты на shell под Android
adb shell Команда посылается через shell
Пример: adb shell rm -r /system/sd/app Удаление приложений, установленных на карту памяти.
Пример: adb shell rm -r /system/sd/app-private Удаление приложений, установленных на карту памяти в раздел private.
Пример: adb shell cat /proc/mtd Выдаст информацию о разделах внутренней памяти девайса.
Выдаст что-то вроде:
dev: size erasesize name
mtd0: 000a0000 00020000 "misc"
mtd1: 00420000 00020000 "recovery"
mtd2: 002c0000 00020000 "boot"
mtd3: 0fa00000 00020000 "system"
mtd4: 02800000 00020000 "cache"
mtd5: 0af20000 00020000 "userdata"
Пример: adb shell df Выдаст информацию о свободных ресурсах в разделах памяти аппарата.
Выдаст что-то вроде:
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 160664 0 160664 0% /dev
/dev/block/mtdblock4 40960 1292 39668 3% /cache
/dev/block/mtdblock3 256000 146888 109112 57% /system
/dev/block/mtdblock5 179328 125728 53600 70% /data
/dev/block/mmcblk0p1 15521280 10056880 5464400 65% /sdcard
Создаем в папке с ADB файл с расширением .cmd или .bat (проверяем что .cmd или .bat это расширение файла а не его имя) и пишем туда:
скопировать блок (задаем блок и выходящие имя)
узнать какие блоки то в общем есть
Пример:
adb shell mount -o rw /dev/block/mtdblock3 /system
adb shell mount -o rw /dev/block/mtdblock5 /data
Монтировать разделы /system и /data в режиме ClockworkMod recovery.
разблокировать от графического ключа на блокировке (после команды ввести любой жест)
I want to batch install apks from my desktop directly. Such as I downloaded many apks on the desktop and want to install apks without actually touching my android.
Продвинутый уровень
В одной из своих статей я показывал, как можно доставать информацию из баз данных различных приложений. Ну а теперь посмотрим, как проделать это прямо из консоли, не качая базы на комп и не устанавливая на устройство просмотрщики баз. Для этого используется команда sqlite3. Выведем на экран историю браузера Chrome:
Чтобы база читалась, необходимо выгрузить браузер из работающих приложений. Прервать выполнение скрипта sqlite можно, нажав Ctrl + Z, а выйти — командой .quit. Если в ответ на команду ты получишь ошибку /system/bin/sh: sqlite3: not found, значит, на смартфоне нет sqlite3 и ее придется скачать, закинуть в /system/bin и дать файлу все права. Я использую sqlite3, который вытащил когда-то из Titanium Backup.
История браузера Chrome
Также с помощью sqlite3 можно выдернуть все контакты с телефона. Для этого в консоли на компе должен использоваться шрифт Lucida Console и перед началом выполнения команд необходимо перевести кодировку на UTF-8. Иначе вместо русских букв будут отображаться непонятные символы. Сами команды выглядят так:
Если все сделано правильно, то в консоли ты увидишь таблицу с порядковым номером записи, номером телефона и контактами, отсортированными по имени. Для контактов с более одного номера будет несколько записей подряд.
Вывод контактов из базы contacts2.db
Можно вывести данные не на экран, а сразу в текстовый файл. Для этого команды нужно изменить:
Альтернативный способ вывода контактов в файл — команда, требующая установленного BusyBox:
Установка программ
ADB можно использовать для установки приложений без необходимости копировать их на смартфон. Достаточно выполнить такую команду:
В команду также можно добавить дополнительные ключи. Полезными будут -е — переустановить приложение с сохранением данных и -d — установить версию меньше текущей.
Программы можно и удалять, но для этого нужно знать название пакета (как узнать, расскажу чуть позже). На примере игры Angry Birds Seasons команда будет выглядеть так:
Снятие логов
После этого можно запускать проблемное приложение и смотреть, что именно вызывает ошибку. Также поддерживается вывод информации из альтернативных буферов. Этим способом можно посмотреть, что приложения делают в фоне и, например, какие события происходят после включения экрана:
Вывод команды adb logcat -b events
Снятие графического ключа, PIN, facelock
Допустим, ты забыл PIN или не совсем трезвым поставил графический ключ, ну или друзья пошутили и поставили распознавание по лицу. Так вот, если устройство по какой-то причине заблокировано, то блокировку можно снять (при условии включенной отладки по USB) через ту же консоль:
Команда удалит все пароли и графические ключи. Сами файлы в зависимости от прошивки и модели устройства могут быть: gesture.key, password.key, cm_gesture.key, personalpattern.key, personalbackuppin.key. Также за блокировку отвечают файлы locksettings.db, locksettings.db-shm, locksettings.db-wal.
После этого достаточно перегрузить устройство и ввести любой ключ, пароль. Если это не помогает, можно попробовать следующее:
9 Answers 9
That's done easiest using adb (see the ADB tag-wiki for details on what ADB is and how to get/install it on your machine). As you don't state the OS you're using on your desktop, I write how it could be done on Linux (which I work with); should be easily adaptable to other platforms:
- put all your downloaded .apk files into a single folder
- connect your Android device, and make sure it's recognized ( adb devices should list a connected device)
- open a terminal/command prompt, and change to the directory where your .apk files reside
- run for file in *.apk; do adb install $file; done
- watch all the apps getting installed, without requiring any further interaction :)
NOTE: If you have .apk files which have "spaces" in their names such as 'Xposed Framework', 'Adobe Flash Player' etc. then you will have to rename them, as ADB cannot handle that. Either remove the spaces altogether, or replace them e.g. by underscores. Linux provides a Perl script for that ( /usr/bin/rename ) which you can use:
It replaces all space character with _ , which makes names like this Xposed_Framework , Adobe_Flash_Player which are recognizable by adb.
If you have apks in different folders (like if you used adb pull ) then you can use my script below:
for /r %f in (*.apk) do adb install -r "%f"
Just run it in the folder above all your APK Files and it will recurse and install all of them.
I tried this and I am getting this C:\Users\AndroidApps>adb install "C:\Users\username\Downloads\AosApp\AppName.apk" 'adb' is not recognized as an internal or external command, operable program or batch file.
For windows, open command line:
So you have a problem that you have tons of apps to install and you didn't do a backup like Titanium Backup or other backup-restore app. But one-by-one installing and confirming and waiting would take forever, not to mind it's so tedious!
I tried to find an app that could do it to save me the effort, but after trying them all, none of them worked. So I was doing it one-by one and it was taking so long that I decided to just do it with ADB.
No worries, I am here to save you, if you are using Windows. You can solve this using ADB. You might not know how to use ADB so I will write the full instructions here. Don't worry, it's easy.
How to do it in Windows:
- Be sure your phone's drivers are installed. For example, Samsung drivers or LG drivers form the manufacturer's website.
- Go into Settings > Developer Options (Click on Settings > About Phone > Software > Build Number 7 times to activate Developer mode)
- Turn on USB Debugging
- Turn OFF Verify apps over USB
- Connect your phone via a USB cable to your computer.
- On your phone select the popup that says allow USB Debugging. If you don't see it or missed it, just turn off and back on USB Debugging and it should pop up again if your phone is connected.
Now you are ready for the next step.
On your Windows computer:
- Download Android SDK Platform Tools
- Extract the platform-tools folder into your computer. I recommend the root of your C: drive, so that it is located at C:\platform-tools\
- Get all your APK files you want to batch install and put them into a folder and put it into your platform-tools folder. For example, you might make a folder named "apks" located at C:\platform-tools\apks\
- Open a CMD (Command Prompt) window. (Ideally, right-click and run as administrator just to be sure. It may not be necessary.)
Now, your phone is connected and you have ADB installed on your computer, so you are ready to enter the following into your command line.
First, test to see if your device is connected.
If your phone is properly connected, you will see something like this:
where Z1Z1Z1Z1Z1Z1 is the device ID of your phone.
If you saw that, you are successful. Proceed to do the install commend:
If it worked, success! Enjoy watching everything get installed quick. It's probably faster to do this than to manually install 300+ apks on your phone.
ISSUES AND SOLUTIONS
If you get the error more than one installed and you saw emulator-5556 under your device, try this (or you can skip to the end and see the way to get around this problem):
- reboot phone
- adb kill server in the CMD window
- When phone finished rebooting, type: adb devices
- If it worked and only your phone shows, then great!
- Type again adb kill server in the CMD window (don't check adb devices again)
- If you still see emulator then try these instructions.
Then run the final command and watch everything get installed.
- If you get error "FAILED ALREADY EXISTS" it is because the app already exists on your phone and it won't reinstall it, it will only install apps which are not installed yet.
- If you get your phone crash and disconnect, it's because the screen timed out while it was installing. You could swipe the screen on the desktop occasionally and it should prevent it from sleeping and blocking your install making you start over.
All apps might not install because your computer is too fast for the command prompt and some might say "more than one device/emulator", while others install normally. In this case, I have a solution.
- Type adb devices . Take note of your device ID like the Z1Z1Z1Z1Z1Z1 in the output above.
- Specify your device ID after -s .
See an example command below:
where Z1Z1Z1Z1Z1Z1 is the device ID of your phone.
This is going to make sure that ADB ignores any other devices and it will prevent the "multiple devices" error.
В четвертой, заключительной статье из цикла об Android Debug Bridge, мы разберемся, какие полезные скрипты можно создавать при помощи данной мощнейшей утилиты.
Но это еще не всё – сейчас мы на конкретных примерах рассмотрим скрипты, которые можно создавать на основе ADB, чтобы автоматизировать выполнение некоторых полезных функций. Для того, чтобы создать скрипт, необходимо создать файл скрипта с расширением .cmd или .bat в папке, где находится сам ADB (важно – обратите внимание, чтоб .bat или .cmd было расширением файла, а не частью его имени), после чего прописать содержимое скрипта в созданный файл.
adb shell rm /system/app/HtcDirect.apk
adb shell rm /system/app/HtcDirect.odex
@remУдаление клиентов для зарубежных социальных сетей и их виджетов.
adb shell rm /system/app/com.htc.idlescreen_SN.apk
adb shell rm /system/app/com.htc.idlescreen_SN.odex
adb shell rm /system/app/Facebook.apk
adb shell rm /system/app/Facebook.odex
adb shell rm /system/app/com.htc.FriendStream3DWidget.apk
adb shell rm /system/app/com.htc.FriendStream3DWidget.odex
adb shell rm /system/app/Flickr.apk
adb shell rm /system/app/Flickr.odex
adb shell rm /system/app/teeter.apk
adb shell rm /system/app/teeter.odex
adb shell rm /system/app/com.htc.Twitter3DWidget.apk
adb shell rm /system/app/com.htc.Twitter3DWidget.odex
adb shell rm /system/app/Twitter.apk
adb shell rm /system/app/Twitter.odex
adb shell rm /system/app/HtcTwitter.apk
adb shell rm /system/app/HtcTwitter.odex
adb shell rm /system/app/HtcRecommends.apk
adb shell rm /system/app/HtcRecommends.odex
adb shell rm /system/app/HtcRecommendsWidget.apk
adb shell rm /system/app/HtcRecommendsWidget.odex
adb shell rm /system/app/HtcFacebook.apk
adb shell rm /system/app/HtcFacebook.odex
adb shell rm /system/app/FriendStream.apk
adb shell rm /system/app/FriendStream.odex
@remУдаление приложения для просмотра роликов и его виджета.
adb shell rm /system/app/htcwatchwidget3d.apk
adb shell rm /system/app/htcwatchwidget3d.odex
adb shell rm /system/app/WatchApp.apk
adb shell rm /system/app/WatchApp.odex
@remУдаление стандартного почтового клиента. Впоследствии можно использовать более удобную замену, например приложение AndroMail.
adb shell rm /system/app/htcmailwidgets3d.apk
adb shell rm /system/app/htcmailwidgets3d.odex
adb shell rm /system/app/Mail.apk
adb shell rm /system/app/Mail.odex
adb shell rm /system/app/Gmail.apk
adb shell rm /system/app/Gmail.odex
@remУдаление отображения различных зарубежных акций и соответствующих виджетов.
adb shell rm /system/app/com.htc.TrendsWidget.apk
adb shell rm /system/app/com.htc.TrendsWidget.odex
adb shell rm /system/app/Stock.apk
adb shell rm /system/app/Stock.odex
adb shell rm /system/app/IdleScreen_Stock.apk
adb shell rm /system/app/IdleScreen_Stock.odex
adb shell rm /system/app/FusionStockWidget.apk
adb shell rm /system/app/FusionStockWidget.odex
adb shell rm /system/app/DCSStock.apk
adb shell rm /system/app/DCSStock.odex
@remУдаление стандартного предустановленного музыкального плеера. Можно установить замену, к примеру Meridian Player или Power AMP.
adb shell rm /system/app/com.htc.MusicWidget.apk
adb shell rm /system/app/com.htc.MusicWidget.odex
adb shell rm /system/app/HtcStreamPlayer.apk
adb shell rm /system/app/HtcStreamPlayer.odex
@remУдаление стандартного приложения и виджета с мировым временем.
adb shell rm /system/app/WorldClock.apk
adb shell rm /system/app/WorldClock.odex
@rem Удаление приложений для слежения, карт, улиц, путешествий, геотэгов, навигации. Как замену можно установить, например, Навител.
adb shell rm /system/app/HtcLaputa.apk
adb shell rm /system/app/HtcLaputa.odex
adb shell rm /system/app/HtcLaputaInstaller.apk
adb shell rm /system/app/HtcLaputaInstaller.odex
adb shell rm /system/app/TripWidget3D.apk
adb shell rm /system/app/TripWidget3D.odex
adb shell rm /system/app/Street.apk
adb shell rm /system/app/Street.odex
adb shell rm /system/app/NetworkLocation.apk
adb shell rm /system/app/NetworkLocation.odex
adb shell rm /system/app/Maps.apk
adb shell rm /system/app/Maps.odex
adb shell rm /system/app/HtcLocationPicker.apk
adb shell rm /system/app/HtcLocationPicker.odex
adb shell rm /system/app/HtcLocationService.apk
adb shell rm /system/app/HtcLocationService.odex
adb shell rm /system/app/HtcLocationsWidget3d.apk
adb shell rm /system/app/HtcLocationsWidget3d.odex
adb shell rm /system/app/HtcLocationsWidgetSettings3d.apk
adb shell rm /system/app/HtcLocationsWidgetSettings3d.odex
adb shell rm /system/app/HtcNavigateWidget3d.apk
adb shell rm /system/app/HtcNavigateWidget3d.odex
@remУдаление приложений для синхронизации сомнительной полезности.
adb shell rm /system/app/MyHTC.apk
adb shell rm /system/app/MyHTC.odex
adb shell rm /system/app/HtcHubSyncProvider.apk
adb shell rm /system/app/HtcHubSyncProvider.odex
@remУдаление стандартного неуклюжего и неудобного приложения для чтения книг. Рекомендуем использовать замену, например MoonReader, FBReader и так далее.
adb shell rm /system/app/EReader.apk
adb shell rm /system/app/EReader.odex
adb shell rm /system/app/MyShelf_Widget.apk
adb shell rm /system/app/MyShelf_Widget.odex
@rem Удаление Google Talk.
adb shell rm /system/app/Talk2.apk
adb shell rm /system/app/Talk2.odex
adb shell rm /system/app/com.htc.htcmsgwidgets3d.apk
adb shell rm /system/app/com.htc.htcmsgwidgets3d.odex
@rem Удаление стандартных обоев.
adb shell rm /system/app/MagicSmokeWallpapers.apk
adb shell rm /system/app/MagicSmokeWallpapers.odex
adb shell rm /system/app/VisualizationWallpapers.apk
adb shell rm /system/app/VisualizationWallpapers.odex
@remУдаление стандартного приложения и виджетов для отображения и прогноза погоды. Рекомендуем использовать замену, например, Gismeteo.
adb shell rm /system/app/Weather.apk
adb shell rm /system/app/Weather.odex
adb shell rm /system/app/WeatherAgentService.apk
adb shell rm /system/app/WeatherAgentService.odex
adb shell rm /system/app/WeatherLiveWallpaper.apk
adb shell rm /system/app/WeatherLiveWallpaper.odex
adb shell rm /system/app/WeatherProvider.apk
adb shell rm /system/app/WeatherProvider.odex
adb shell rm /system/app/WeatherSyncProvider.apk
adb shell rm /system/app/WeatherSyncProvider.odex
adb shell rm /system/app/IdleScreen_Weather.apk
adb shell rm /system/app/IdleScreen_Weather.odex
adb shell rm /system/app/HtcWeather3DWidget.apk
adb shell rm /system/app/HtcWeather3DWidget.odex
adb shell rm /system/app/HtcWeatherWallpaper.apk
adb shell rm /system/app/HtcWeatherWallpaper.odex
@remУдаление предустановленного виджета для просмотра фотографий.
adb shell rm /system/app/HtcPhotoGridWidget3D.apk
adb shell rm /system/app/HtcPhotoGridWidget3D.odex
adb shell rm /system/app/HtcPhotoWidget.apk
adb shell rm /system/app/HtcPhotoWidget.odex
@rem Перезагрузка устройства.
Остановка фоновой службы (демона) ADB:
taskkill /F /IM adb.exe
Прошивка на устройство своего радио. Для этого переименовываем радио в radio.img и копируем в папку с ADB:
echo Нажмите любую клавишу после завершения загрузки bootloader
fastboot flash radio radio.img
Восстановление данных и прошивки из резервной копии (backup):
echo Нажмите любую клавишу после завершения загрузки bootloader
fastboot flash userdata data.img
fastboot flash system system.img
fastboot flash boot boot.img
Прошивка собственной анимации, отображаемой при загрузке девайса. Качаем заинтересовавшую нас бут-анимацию, переименовываем в файл bootanimation.zip, копируем в папку с ADB:
adb push bootanimation.zip /data/local
Дебрендинг Android-устройства (получение SuperCID):
echoНажмите любую клавишу после завершения загрузки bootloader
fastboot oem writecid 11111111
fastboot getvar cid
Прошивка своего Recovery. Распаковываем образ с нужным Recovery, переименовываем в recovery.img, копируем данный файл в папку с ADB:
echoНажмите любую клавишу после завершения загрузки bootloader
fastboot flash recovery recovery.img
Прошивка загрузочного раздела Android. Переименовываем часть прошивки, которая отвечает за загрузку, в boot.imp и копируем в папку с ADB:
echo Нажмите любую клавишу после завершения загрузки bootloader
fastboot flash boot boot.img
Это основные скрипты, которые помогут автоматизировать взаимодействие с вашим Android-устройством посредством ADB. Надеемся, они помогут вам настроить свой любимый девайс на основе ОС Android под себя.
Существует множество инструментов для работы с подключенным с помощью USB-кабеля или Wi-Fi смартфоном. Особо развитые инструменты позволяют перемещать файлы, устанавливать и удалять софт, просматривать контакты, делать скриншоты экрана и даже отправлять СМС, однако ни один графический инструмент не сравнится с мощью, которую может дать консоль Android. В этой статье мы поговорим об ADB (Android Debug Bridge) — стандартном инструменте для отладки и работы с консолью Android с компа.
Описанные в статье команды можно выполнять непосредственно на устройстве, скачав из маркета эмулятор терминала, но удобнее это делать, конечно же, с компа через adb.
Запись видео, происходящего на экране устройства
Данная команда начнет записывать видео с разрешением 1280 x 720 (если не указать, то будет использовано нативное разрешение экрана устройства), с битрейтом 6 Мбит/с, длиной 20 с (если не указать, то будет выставлено максимальное значение 180 с), с показом логов в консоли. Записанное видео будет находиться в /sdcard (файл video.mp4).
Все запущенные из консоли и в adb shell процессы, занимающие некоторое время для выполнения, можно прервать с помощью комбинации Ctrl + C. Выйти из шелла и вернуться к выполнению обычных команд adb — Ctrl + D.
Основы работы с ADB
Для начала работы с ADB его следует активировать на устройстве и установить утилиту adb и драйверы на комп. Первая задача выполняется с помощью включения «Отладки по USB» в пункте настроек «Для разработчиков» (если этот пункт скрыт, нажми семь раз на номер сборки в меню «О телефоне»).
Для установки ADB на комп качаем Adb Kit и распаковываем в любую папку (рекомендую использовать названия папок без русских символов). Также скачиваем и устанавливаем драйверы ADB.
Работать с adb нужно из командной строки. Нажимаем Win + R и вводим cmd, далее переходим в папку, в которой лежит adb. Для моей папки команда будет следующей:
Чтобы не проделывать все эти манипуляции каждый раз, можно добавить нужную папку в переменную Path. Для этого необходимо зайти в «Панель управления -> Система -> Дополнительные параметры системы -> Переменные среды», найти переменную Path и добавить в конец строки, через точку с запятой, путь до папки с adb. Теперь после запуска консоли можно сразу вводить необходимые команды.
Добавление adb в переменную Path
Проверим наше подключение к телефону с помощью следующей команды (она должна вывести список подключенных устройств):
С ADB можно работать через Wi-Fi. Для этого нужны права root и приложение WiFi ADB. Запускаем приложение, жмем переключатель и подсоединяемся к смартфону с помощью команды connect и показанного приложением IP-адреса:
Далее работа с ADB ничем не отличается.
Скопировать вывод консоли после выделения мышкой, а также вставить скопированную команду или имя файла в консоль можно правой кнопкой мыши. Включается в свойствах консоли.
Управление приложениями
Для управления приложениями используются две команды: pm (package manager) — менеджер пакетов и am (activity manager) — менеджер активностей. У данных команд есть немало ключей, которые можно посмотреть на портале разработчиков. Остановимся на некоторых.
Для начала получим список установленных на устройстве приложений в виде названий пакетов, которые пригодятся позже:
Добавив в конец -s, ты увидишь только системные приложения, -3 — только сторонние, -f покажет пути установки пакетов, а -d — отключенные приложения. Далее, зная названия пакетов, можно совершать над ними различные насильственные действия :). Например, отключить ненужный календарь:
Ну а совсем удалить можно так:
Для использования activity manager понадобятся более глубокие знания структуры Android и понимание того, что такое Avtivity и Intent. Это позволит тебе запускать различные приложения, например браузер или настройки:
Завершить работу приложения можно противоположной командой:
Ну а убить все запущенные приложения — такой командой:
Тот же activity manager поможет сделать звонок на нужный номер телефона:
А так можно открыть страницу в браузере:
Запуск браузера из консоли
В данной команде input keyevent эмулирует нажатие кнопок и может использоваться как для хардварных, так и для кнопок внутри приложения. В нашем примере 22 соответствует перевод фокуса вправо (джойстик вправо — dpad right), а 66 — Enter.
С помощью команды input можно, например, разблокировать телефон. Для этого необходимо ввести:
Но данная команда не сработает на последних версиях Android. Для управления питанием и беспроводными коммуникациями там используется утилита svc. Например, включить передачу данных через мобильную сеть или управлять Wi-Fi можно через команды
Также можно заставить смартфон оставаться включенным при подключении к USB-порту/зарядке/Wi-Fi-сети или всегда:
Возвращаясь к команде input, стоит выделить еще одну команду для вставки текста в текущее поле. Кому-то это может показаться более привлекательным способом набора текста с компа, чем нажимать на кнопки небольшой области экрана. Выглядит команда так:
Кроме опции text, у команды input есть и другие. Полная форма команды такова:
В качестве источника можно указывать trackball, joystick, touchnavigation, mouse, keyboard, gamepad, touchpad, dpad, stylus, touchscreen. В качестве команд будут:
- text (Default: touchscreen) [delay]
- keyevent [–longpress] … (Default: keyboard)
- tap (Default: touchscreen)
- swipe [duration(ms)] (Default: touchscreen)
- press (Default: trackball)
- roll (Default: trackball)
Как видно из команд, можно, хотя и с трудом, управлять устройством через команды input touch и input swipe при разбитом экране, если не поддерживается работа мышки через USB-OTG. Например, вытянуть шторку с уведомлениями получится так (отсчет координат идет от левого верхнего угла):
А так можно узнать разрешение экрана:
Для Nexus 5 разрешение выдаст 1080 х 1920. Тогда нажать на кнопку «Меню приложений» стандартного лаунчера от Google, которая находится над кнопкой «Домой», можно так:
Скрипты
Бэкап приложений
В Android есть встроенные функции бэкапа, которые также можно запустить с помощью командной строки. Для этого используется команда adb backup и набор опций:
- -f указывает имя создаваемого файла и его расположение на компе. При отсутствии ключа будет создан файл backup.ab в текущем каталоге;
- -apk|-noapk указывает, включать ли в бэкап только данные приложения или сам .apk тоже (по умолчанию не включает);
- -obb|-noobb указывает, включать ли в бэкап расширения .obb для приложений (по умолчанию не включает);
- -shared|-noshared указывает, включать ли в бэкап содержимое приложения на SD-карте (по умолчанию не включает);
- -all указывает на необходимость бэкапа всех установленных приложений;
- -system|-nosystem указывает, включать ли в бэкап системные приложения (по умолчанию включает);
Если мы хотим создать бэкап всех несистемных прог, включая сами .apk, в определенное место, то команда будет выглядеть так:
После ввода необходимо подтвердить начало выполнения бэкапа на самом устройстве. Для восстановления полученного бэкапа нужно выполнить соответствующую команду:
Процесс бэкапа
Консоль в консоли
Наряду с упомянутой консолью, которая является DOS-консолью под Windows, в Android существует и своя. Она вызывается через adb shell и представляет собой по сути стандартную Linux-консоль, но с неполным набором команд, расширить который можно, установив из маркета BusyBox. Использовать эту консоль можно двумя способами. В интерактивном режиме она запускается командой
В консоли появляется знак $ (далее по тексту этот знак будет означать необходимость ввода предварительной команды adb shell), и после этого можно вводить серию команд, получая после каждой отклик. Второй способ — если необходимо ввести только одну команду, можно писать ее подряд за adb shell.
В шелле работают стандартные команды для копирования, перемещения и удаления файлов: cp, mv и rm. Можно менять каталоги (cd) и смотреть их содержимое (ls). Кроме стандартных Linux-команд, о которых можно узнать из любого справочника, в Android есть несколько своих специализированных инструментов, но, чтобы использовать некоторые из них, придется получить на смартфоне права root, а после запуска консоли выполнять команду su:
Вывод свободного пространства на устройстве командой adb shell df
Пример работы команды ls для вывода информации о разделах
Создание скриншота
Выполняется одной строчкой:
После этого картинку нужно выдернуть из устройства командой adb pull:
В recovery скриншот можно сделать следующей командой:
Затем необходимо преобразовать файл fb0 в нормальное изображение с помощью FFmpeg, который нужно скачать и положить в папку с adb. Расширение необходимо ставить своего устройства:
Системные утилиты
Кратко остановлюсь на нескольких полезных командах (работоспособность некоторых, однако, может зависеть от версии прошивки и модели телефона).
Изменение DPI. Не требует root и работает на Android 5.0+. Стандартное значение для Nexus 5 — 480. При значении 420 на рабочем столе стокового лаунчера помещается пять иконок в ряд вместо четырех:
Подключение /system в режиме записи. Для части команд, которые меняют системные файлы, необходимо сначала перемонтировать раздел /system на запись. Это необходимо в том числе при удалении системных приложений. Перемонтирование выполняется следующей командой:
Мягкая перезагрузка:
Перевод смартфона в режим энергосбережения Doze (Android M+):
. повторяем действия, пока не увидим idle.
Батарейка в процентах (Android 4.4+):
Читайте также: