Read only file system android adb
Platform-tools: r31.0.3
ADB: 1.0.41 (31.0.3-7562133)
Fastboot: 31.0.3-7562133
Make_f2fs: 1.14.0 (2020-08-24)
Mke2fs: 1.46.2 (28-Feb-2021)
Последнее обновление утилит в шапке: 01.08.2021
ADB (Android Debug Bridge — Отладочный мост Android) — инструмент, который устанавливается вместе с Android-SDK и позволяет управлять устройством на базе ОС Android.
Работает на всех Android-устройствах, где данный функционал не был намеренно заблокирован производителем.
Здесь и далее: PC — ПК, компьютер к которому подключено устройство.
ADB — консольное приложение для PC, с помощью которого производится отладка Android устройств, в том числе и эмуляторов.
Работает по принципу клиент-сервер. При первом запуске ADB с любой командой создается сервер в виде системной службы (демона), которая будет прослушивать все команды, посылаемые на порт 5037.
Официальная страница
ADB позволяет:
- Посмотреть какие устройства подключены и могут работать с ADB.
- Просматривать логи.
- Копировать файлы с/на аппарат.
- Устанавливать/Удалять приложения.
- Удалять (очищать) раздел data.
- Прошивать (перезаписывать) раздел data.
- Осуществлять различные скрипты управления.
- Управлять некоторыми сетевыми параметрами.
Поставляется ADB в составе инструментария разработчика Андроид (Android SDK), который, в свою очередь входит в состав Android Studio.
Если что-то неправильно, то в списке подключенных устройств (List of devices attached) будет пусто.
Скрытые команды 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 boot [ ] Скачать и загрузить kernel.
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.
Команду logcat можно использовать с машины разработки
$ adb logcat
или из удаленного shell
# logcat Каждое сообщение лога в Android имеет тэг и приоритет
Тэг – это строка указывающая компонент системы, от которого принято сообщение (например: View для системы view)
Приоритет – имеет одно из нижеследующих значений (в порядке от меньшего к большему):
V — Verbose (Низший приоритет).
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (Наивысший приоритет, при котором ничего не выводится).
Получить список тэгов, используемых в системе, вместе с их приоритетами можно запустив logcat. В первых двух столбцах каждого из выведенных сообщений будут указаны / .
Пример выводимого logcat сообщения:
I/ActivityManager( 585): Starting activity: Intent
Для уменьшения вывода лога до приемлемого уровня нужно использовать выражения фильтра. Выражения фильтра позволяют указать системе нужные комбинации и , остальные сообщения система не выводит.
Выражения фильтра имеют следующий формат : . где указывает нужный тэг, указывает минимальный уровень приоритета для выбранного тэга. Сообщения с выбранным тэгом и приоритетом на уровне или выше указанного записываются в лог. Можно использовать любое количество пар : в одном выражении фильтра. Для разделения пар : используется пробел.
Пример ниже выводит в лог все сообщения с тэгом «ActivityManager» с приоритетом «Info» или выше, и сообщения с тэгом «MyApp» и приоритетом «Debug» или выше:
adb logcat ActivityManager:I MyApp:D *:S
Последний элемент в выражении фильтра *:S устанавливает приоритет «silent» для всех остальных тэгов, тем самым обеспечивая вывод сообщений только для «View» и «MyApp». Использование *:S – это отличный способ для вывода в лог только явно указанных фильтров (т.е. в выражении фильтра указывается «белый список» сообщений, а *:S отправляет все остальное в «черный список»).
При помощи следующего выражения фильтра отображаются все сообщения с приоритетом «warning» или выше для всех тэгов:
adb logcat *:W
Если 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.
Контроль формата вывода лога
Сообщения лога в дополнение к тэгу и приоритету содержат несколько полей метаданных. Можно изменять формат вывода сообщений показывая только конкретные поля метаданных. Для этого используется параметр -v и указывается один из ниже перечисленных форматов вывода.
brief Показывать приоритет/тэг и PID процесса (формат по умолчанию).
process Показывать только PID.
tag Показывать только приоритет/тэг.
thread Показывать только процесс:поток и приоритет/тэг.
raw Показать необработанное сообщение, без полей метаданных.
time Показывать дату, время вызова, приоритет/тэг и PID процесса.
long Показывать все поля метаданных и отдельно сообщения с пустыми строками.
При запуске logcat можно указать формат вывода используя параметр -v:
adb logcat [-v
Источник
Файловая система только для чтения на Android
Я недавно рутировал свой Droid X и все вроде отлично работает. Я сделал некоторые изменения, build.prop и когда adb push build.prop /system/ я получаю, я получаю следующую ошибку: failed to copy ‘c:\build.prop’ to ‘/system//build.prop’: Read-only file system .
Как я могу это исправить?
Не на всех телефонах и версиях Android установлены одинаковые вещи.
Ограничение параметров при перемонтировании было бы наилучшим.
Просто перемонтируйте как rw (чтение / запись):
После внесения изменений перемонтируйте в ro (только для чтения):
работает для меня и, кажется, самое простое решение.
Получил это на форуме Android, где я задавал тот же вопрос. Надеюсь, это поможет кому-то еще.
На эмуляторе терминала на телефоне:
Затем в командной строке cmd выполните adb push
Хотя я знаю, что вопрос касается реального устройства, в случае, если кто-то попал сюда с похожей проблемой в эмуляторе, с какими-либо инструментами, самыми последними по состоянию на февраль 2017 года, эмулятор должен быть запущен из командной строки с помощью:
Для чего-либо, чтобы быть доступным для записи /system . Без этого флага ни одна комбинация remount или mount не позволит писать /system .
После запуска эмулятора с этим флагом достаточно одного adb remount после, adb root чтобы получить разрешения для отправки /system .
Вот пример командной строки, которую я использую для запуска своего эмулятора:
Значение для -avd флагов происходит от:
Я думаю, что самый безопасный способ это перемонтировать / system как read-write, используя:
и когда закончите, перемонтируйте его только для чтения:
На моем Samsung galaxy mini S5570 (после получения рута на мобильном телефоне):
Кулак, как корень, я побежал:
как обычный пользователь:
Предоставление прав root на сенсорном экране
перечислите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что / dev / stl12 был смонтирован в / system как ro (только готово), поэтому нам просто нужно сделать:
Попробуйте следующее в командной строке:
Это работает для меня и является самым простым решением.
Вот что сработало для меня. У меня было эмулированное устройство Android 7.1.1 (Nougat).
На терминале я нажал следующую команду. Одна вещь, которую нужно отметить, это флаг -writable-system
На другой вкладке
Все изменения, внесенные вами в содержимое / system, сохранятся после перезапуска.
Я проверил с эмулятором и следующий работал.
- перезагрузка adb
- корень adb && adb remount && adb push
/ рабочий стол / hosts / system / etc / hosts
Как уже упоминалось выше, выполните второй шаг за один выстрел.
Откройте эмулятор терминала на телефоне: тогда
после запуска этого демона
затем только чтение преобразуется в чтение-запись.
работает для меня
Я нашел эту статью в Google и подумал, что добавлю шаги, необходимые для Sony Xperia Z (4.2.2).
У Sony есть сторожевой процесс, который обнаруживает, когда вы изменили ro на rw на / и / system (это единственные, которые я пытался изменить) и, возможно, другие.
Ниже было то, что я побежал, чтобы выполнить изменения, которые я пытался достичь. Я вставил их в окно, потому что удаление бита выполнения из / sbin / ric должно быть выполнено быстро, чтобы остановить его перезапуск. (Я пытался stop ric ; это не работает — хотя это работало на предыдущей версии Android на телефоне).
Я изменил файл hosts здесь, так что это место, где вы вносите необходимые изменения в файловую систему. Чтобы оставить вещи такими, какими мы их нашли, сделайте так:
В этот момент RIC должен автоматически перезапустить. (Он перезапустился для меня автоматически.)
Добавим немного больше к ответу Яна Бергстрёма: поскольку Android — это система на основе Linux, а путь в Linux содержит косую черту (../), при использовании команды push используйте «/» для определения пути назначения на устройстве Android.
Например, команда выглядит так: adb push C: \ Users \ admin \ Desktop \ 1.JPG sdcard / pictures /
Обратите внимание, что здесь, обратная косая черта используется для определения пути к исходному файлу, который должен быть передан с компьютера с Windows, а прямая косая черта используется для определения пути назначения, потому что Android — это система на основе Linux. Вам не нужно выступать в роли пользователя root, чтобы использовать эту команду, а также, она отлично работает на производственных устройствах.
Иногда вы получаете сообщение об ошибке, потому что адресата в телефоне не существует. Например, некоторые андроид телефон внешнего хранилища /storage/emulated/legacy вместо /storage/emulated/0 .
Спасибо, Сержио , за команду «mount» без идеи параметров. Мне нужно сделать adb push в /data/data/com.my.app/lib течение некоторого тестового вопроса, и получить «только для чтения файловой системы» сообщение.
Команда ls показывает мне:
root@android:/ # ls -l /data/data/com.my.app/
drwxrwx—x u0_a98 u0_a98 2016-05-06 09:16 cache drwxrwx—x u0_a98 u0_a98 2016-05-06 09:04 files lrwxrwxrwx system system 2016-05-06 11:43 lib -> /mnt/asec/com.my.app-1/lib
Итак, понятно, что каталог «lib» отделен от других каталогов приложений.
команда mount -o rw,remount /mnt/asec не решила проблему «r / o fs», она хочет, чтобы параметр устройства был указан перед параметром каталога.
Команда «df» тоже не помогла, но показывает, что мой /mnt/asec/com.my.app-1 каталог находится в отдельной точке монтирования.
Тогда я смотрю mount и вуаля!
root@android:/ # mount . /dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0
Следующие шаги уже описаны вверх: перемонтировать в RW, нажать и перемонтировать обратно в RO.
это то же самое, что нужно распаковать и перепаковать файл initrc.img и отредактировать init файл с кодом mount / system
Копировать файлы на SD-карту?
Ну, я полагаю, вам нравится копировать данные на SD-карту с компьютера разработчиков? Возможно, вы укоренили устройство и сделали доступной область, к которой обращаетесь?) У меня была примерно такая же проблема при загрузке файлов данных для моего приложения (Android Studio 1.3.2 в Win7), но.
- Сначала нужно найти командную оболочку adb по следующему пути: PATH =% PATH%; C: \ Users \ XXXXX \ AppData \ Local \ Android \ sdk \ platform-tools (папка AppData скрыта, поэтому необходимо установить в настройках папки не скрываются скрытые файлы и папка для ее поиска, путь работает независимо)
- Вы должны правильно указать путь к папке, или вы получите сообщение об ошибке только для чтения, скорее всего, оно должно начинаться с / sdcard или это область только для чтения. Как только я без проблем запихнул файл в эмулятор.
Так, например, команда adb может выглядеть так:
Источник