Я пытаюсь установить дату/время с помощью оболочки ADB, но оболочка возвращает текущее время.
Я пробовал:
adb shell date -s YYYYMMDD.HHmmss
и unix time like:
adb shell date 1318349236
любые идеи?
Я пытаюсь установить дату/время с помощью оболочки ADB, но оболочка возвращает текущее время.
Я пробовал:
adb shell date -s YYYYMMDD.HHmmss
и unix time like:
adb shell date 1318349236
любые идеи?
Чтобы сохранить пространство для хранения данных Android, как и многие другие встроенные системы, использует многозадачные бинарные файлы для реализации основных инструментов командной строки, таких как date
.
Android-устройство может содержать двоичные файлы toolbox
или toybox
(или обоих) в зависимости от версии. Вы можете проверить, какая реализация инструмента date
доступна на вашем устройстве, запустив команды toolbox date
и toybox date
. Затем вы можете использовать ту, которая печатает текущую дату. Например, для устройства Android 6.0+ это может выглядеть так:
$ adb shell toybox date
Mon Jul 31 21:09:28 CDT 2017
$ adb shell toolbox date
date: no such tool
Чтобы установить дату и время с помощью toolbox date
, используйте формат YYYYMMDD.HHmmss
:
adb shell "su 0 toolbox date -s 20161231.235959"
В случае toybox date
используйте формат MMDDhhmm[[CC]YY][.ss]
:
adb shell "su 0 toybox date 123123592016.59"
Android 6.0 имеет новый формат даты:
Default SET format is "MMDDhhmm[[CC]YY][.ss]", that (2 digits each) month, day, hour (0-23), and minute. Optionally century, year, and second.
И настройка с помощью -s
больше не работает. Это обновленная команда set:
Пример обновленной команды:
(в то время как внутри оболочки adb)
date 060910002016.00
приведет к:
Thu Jun 9 10:00:00 GMT 2016
Примечание:. Команда не будет видна сразу на устройстве, потому что она не запускает трансляцию смены времени, но она будет видна в течение минуты.
Чтобы обойти это, вы можете добавить эту трансляцию вручную следующим образом:
date 060910002016.00 ; am broadcast -a android.intent.action.TIME_SET
Чтобы вызвать это с помощью команды adb
:
adb shell 'date 060910002016.00 ; am broadcast -a android.intent.action.TIME_SET'
adb shell date -s `date +%G%m%d.%H%M%S`
Сначала он получает текущую дату вашего устройства и устанавливает его на цель Android. Этот подход должен работать на Linux/Mac/Cygwin.
Вы должны поместить значение даты, если хотите его изменить. "-s" изменяет формат SET. Формат по умолчанию: "MMDDhhmm [[CC] YY] [.ss]".
Я успешно протестировал следующие команды:
adb root
adb shell "date `date +%m%d%H%M%Y.%S`"
Чтобы сделать эту работу на моем Xperia S, мне пришлось разбить команды следующим образом:
> adb shell
# su -
# date /* see current date */
# date -s YYYYmmdd
Мотив: мое устройство вернулось к началу Linux-времени, и меня не особенно беспокоило со временем, все, что я хотел, - это установить правильную дату - что, кстати, я не мог сделать с помощью системных настроек, потому что мой пользовательский MIUI ROM продолжал сбой...
На некоторых устройствах, таких как RTAndroid, возможно, он тоже работает:
adb shell "su 0 date `date +%m%d%H%M%Y.%S`"
Развернув ответ на @uval, вы можете использовать следующее для обновления даты и времени на устройстве Android в зависимости от времени на вашем компьютере под управлением Windows:
set dateYYYY=%date:~10,4%
set dateMM=%date:~4,2%
set dateDD=%date:~7,2%
set timeHH=%time:~0,2%
set timeMM=%time:~3,2%
set timeSS=%time:~6,2%
adb shell su -c date %dateMM%%dateDD%%timeHH%%timeMM%%dateYYYY%.%timeSS%
adb shell su -c am broadcast -a android.intent.action.TIME_SET
Протестировано на корневом устройстве Android 6.0 и ПК под управлением Windows 10.
Правильный формат, который работал у меня, - yyyyMMddHHmm.ss
У меня не было проблем с Android 5, большинство ответов, которые я нашел без su в команде, работает.
Android 6 - тот, который привлек мое внимание.
На Android 6 это не дало мне ошибки, оно просто не установило его правильно, оно вернет его к тому, что было до команды. Я также столкнулся с /system/bin/sh: su: not found errors
, когда попробовал это fooobar.com/info/490932/...
и это fooobar.com/info/490932/...
После всех сеансов проб и ошибок я понял это.
Это формат даты, который я использую MMDDhhmm [[CC] YY] [. Ss]
adb shell date '0739010002017.00'
Изначально эта команда не работала, чтобы работать по порядку, она не работала сама по себе.
Я использовал эти 3 шага, и это работает для меня.
Во-первых, adb shell settings put global auto_time 1
(Включите автоматическую дату и время)
Во-вторых, adb shell date '0739010002017.00'
(установите желаемое время)
В-третьих, adb shell settings put global auto_time 0
(Отключите автоматическую дату и время)
Отметил: для моего конкретного проекта я не могу положиться на Время в сети и GPS. Вот почему у меня третий команда. которые отключают функцию.