#android #sqlite #shell #adb
#Android #sqlite #оболочка #adb
Вопрос:
У меня есть рутированный телефон Android, и я хочу получать доступ к базе данных приложения через adb
, скажем, каждую минуту.
Итак, когда я захожу в оболочку adb с помощью adb
команды и внутри оболочки, я выполняю команду SQL, она работает, и я получаю результат:
# echo "select id,timestamp from record_table ORDER BY id DESC limit 1;" | sqlite3 /data/data/APPLICATION/databases/record_database
99|1599214373234
Однако, при выполнении этого напрямую через
$ adb shell "su -c echo "select id,timestamp from record_table ORDER BY id DESC limit 1;" | sqlite3 /data/data/APPLICATION/databases/record_database"
Я ничего не получил обратно на свой терминал. (Я думаю, нет проблем с экранированием кавычек, поскольку это привело бы к ошибке, и я также попробовал несколько других способов определить эту команду)
Я полагаю, что должно быть что-то с stdout / stderr adb, но после выполнения этого
adb shell su -c setprop log.redirect-stdio true
Это все еще не работает.
Кто-нибудь когда-либо сталкивался с этой проблемой?
Комментарии:
1. Я также попытался перенаправить на / data / local / tmp / random_file, но содержимое этого файла также пустое
Ответ №1:
Между тем, он заработал. Потребовалось более сложное экранирование символов: команда D не проходила через sqlite3, поэтому использование одинарных кавычек решило проблему. Извините за публикацию…
Правильная команда:
adb shell su -c "echo 'select * from record_table ORDER BY id DESC limit ${N};' | sqlite3 $DB_PATH"