这是一篇写于约一年前Oreo刚发布时的草稿,但却从未发出。现做出一些修改再发。
在Android Oreo中,NTP服务器由2.android.pool.ntp.org更变为了time.android.com(见core/res/res/values/config.xml#1719)。
<string translatable="false" name="config_ntpServer">time.android.com</string>
众所周知,android.com在中国无法正常访问,这也就是为什么升级到Oreo后无法同步时间。
受到@Noisyfox的启发,参照了「关于 android 5.0-7.1.2 网络图标上的感叹号及其解决办法 - 狐狸的小小窝」一文,用「aptive_portal_https_url」关键字进行搜索,找到core/java/android/provider/Settings.java#8853。
public static final String CAPTIVE_PORTAL_HTTPS_URL = "captive_portal_https_url";
再以NTP为关键字,找到core/java/android/provider/Settings.java#7894。
/** Preferred NTP server. {@hide} */
public static final String NTP_SERVER = "ntp_server";
可知通过调整「ntp_server」可以更改Android时间同步服务器地址。
解决
尝试在Android上运行(需root):
su
settings put global ntp_server ntp1.aliyun.com
或是在ADB上运行:
adb shell "settings put global ntp_server ntp1.aliyun.com"
由于Android的时间同步服务并不是时刻运行的,可尝试重启后开关一下自动同步时间,应该就会生效了。