恢复快照后,仿真的Android设备不会重新同步时间/日期

Shi*_*aze 22 android android-emulator

如果我在仿真设备上进行全新启动,它会从主机操作系统获得正确的当前时间; 但是,如果我从快照重新加载设备,它将从创建快照的那一刻起获取时间/日期(例如,当我关闭模拟器时).时间/日期在任何时间后都不会重新同步.我发现的唯一方法是从快照恢复后手动更新时间.

Android虚拟设备具有默认属性:

  • Target = Android 4.0.3 - API等级15

  • CPU/ABI = ARM(armeabi-v7a)

  • SD卡= N/A.

  • Snapshot =已启用

  • 摘要LCD密度= 240

  • 最大VM应用程序堆大小= 48

  • 设备RAM大小= 512

我在OS X Snow Leopard和Windows 7上尝试过模拟器,两者都表现出同样的问题.有没有办法让模拟器在从快照恢复后自动同步时间?

Art*_*yom 32

我一直遇到同样的问题,似乎没有一种标准的方法来做到这一点.但是,可以使用dateADB shell 的命令更新仿真器的日期和时间,该命令可与标准命令结合使用,以在操作系统上显示日期和时间,以将仿真器日期和时间更新为当前日期和时间.

要设置模拟器的日期和时间,需要在操作系统中执行以下命令:

adb shell date -s YYYYmmdd.HHMMSS
Run Code Online (Sandbox Code Playgroud)

其中YYYYmmdd是日期而HHMMSS是时间.

Linux的

从UNIX风格的shell中将模拟器日期和时间设置为当前日期和时间相对简单,因此以下命令适用于Linux:

adb shell date -s `date +"%Y%m%d.%H%M%S"`
Run Code Online (Sandbox Code Playgroud)

苹果系统

adb -e shell su root date `date +"%m%d%H%M%y"`
Run Code Online (Sandbox Code Playgroud)

视窗

在Windows(我使用的)上,最简单的方法是通过Windows PowerShell:

adb shell date -s $(get-date -format yyyyMMdd.HHmmss)
Run Code Online (Sandbox Code Playgroud)

在命令提示符中,它有点棘手,因为无法指定自定义格式来显示日期和时间.我发现以独立于语言环境的格式获取它的最好方法是使用命令wmic os get LocalDateTime(第2行).可以解析其日期时间格式以适应ADB shell所需的格式:符号:~可用于使用格式打印环境变量内容的子字符串%var:~<start-index>,<number-of-chars>%.我们还需要忽略除第2行之外的所有内容,因此您需要运行的完整命令如下:

for /f "skip=1 delims=" %A in ('wmic os get localDateTime') do @for /f "delims=" %B in ("%A") do @cmd /v /c "set wmicdate=%B & adb shell date -s !wmicdate:~0,8!.!wmicdate:~8,6!"
Run Code Online (Sandbox Code Playgroud)

对于好奇:这首先将日期时间保存到%wmicdate%变量中,然后通过适当地解析它将其传递给ADB.将!用于替代%读取即时的变量.这一切都在cmd使用/v选项启动的子进程中完成,该选项启用此即时变量读取.


编辑:修复了macOS命令(感谢@ user836003).

  • 这是在MacOS上适用于我的命令:adb -e shell su root date \`date +"%m%d%H%M%y"\` (5认同)

Jon*_*Jon 5

在运行版本 6 API 23 的较新 Android 模拟器上,以下 powershell 命令对我有用。

Windows Powershell

adb shell date $(get-date -format MMddHHmmyyyy.ss)

在 Android 模拟器版本 7 API 24上:

adb shell su root date $(get-date -format MMddHHmmyyyy.ss)


She*_*ouk 1

我之前已经搜索过很多次这个问题的解决方案,当我看到你的问题时,我再次搜索,但除了你和我之外,我找不到其他人甚至抱怨这个问题,也许其他人不会创建时间至关重要的应用程序,或者他们在真实设备上进行测试。

结论:不,没有解决办法,您必须手动设置它或不使用快照。