修改安卓系统NTP时间服务器

概述

除了系统自带的应用外,其他任何第三方APP都没有权限修改系统的NTP时间服务器;原版安卓的NTP服务器是Google官方提供的公共NTP:time.google.com

修改方式

修改安卓系统的NTF时间服务器有三种方式:

1. 修改安卓系统源码,此方式对技术要求较高;

2. 越狱安卓系统,通过root权限修改ntp服务器,此方式存在安全风险,并会导致安卓设备直接失去保修;

3. 通过adb命令行修改,adb的权限非常大,操作失误会导致安卓设备变成板砖。

通过adb命令修改NTP服务器

相对来说,通过adb命令修改安卓NTP服务地址的方式成本最低,因此本文主要介绍这种方式:

1. 准备一台能翻墙的电脑,翻墙速度必须足够快(后续下载的工具和SDK大约有10GB左右);

2. 通过Google官网下载Android Studio,并下载相应的SDK;

3. 准备一台安装了NTP服务器的电脑;

4. 准备一台安卓设备,并开启“开发者选项”和“Debug调试模式”。

关键步骤 - 安装配置NTP服务器

1.0> 安装NTP服务器(此处以Ubuntu为例)

## 安装ntp server
apt install ntp

## 开机自启
sudo systemctl enable ntp

## 启动
sudo systemctl start ntp

2.0> 配置 NTP 广播服务

## 编辑配置文件
sudo vim /etc/ntp.conf

## 配置如下内容(如下表示向 192.168.1 网段的所有IP周期性的广播时间信息)
broadcast 192.168.1.255

3.0> 自定义器 NTP 服务器的时间(如果在外网,可以配置上游 NTP 服务器的地址)

## 停止NTP服务
sudo service ntp stop

## 设置时间
sudo date --set="你要设置的日期和时间,格式必须为:2006-02-27 14:45"

## 启动NTP服务
sudo service ntp start

4.0> 验证 NTP 服务器是否正常运行

## 在windows上执行如下命令,即可获取指定IP上的 NTP 服务器时间 
## NTP服务器的默认端口是123,如下命令实际是通过访问 192.168.1.60:123 来获取该NTP服务器的时间,NTP服务器必须在防火墙中放行123端口,以确保外部可以访问
w32tm /stripchart /computer:192.168.1.60 /dataonly

关键步骤 - 通过adb命令设置ntp

安装完 Android Studio 和 SDK 后,就可以直接在命令行中使用adb命令了

1.0> 将开启了“开发者选项”和“Debug调试模式”的安卓设备连接到PC,打开PC命令行,输入如下命令查看是否已与安卓设备连接成功:

## 此命令会列出已连接的设备
adb devices

## 输出:(第一列是设备标识)
## List of devices attached
## D4I0P3KZYW	device

2.0> 设置和验证NTP服务

## 获取/验证当前安卓设备的NTP服务地址
adb shell settings get global ntp_server

## 设置当前安卓设备的NTP服务地址
adb shell settings put global ntp_server <NTP服务器地址>

注:如果同时连接了多个安卓设备,执行上述 adb 命令时,就会直接报错;因为 adb 不知道当前命令将应用于哪个设备;可以通过命令选项来指定设备,但这会更复杂。

3.0> 通过logcat日志来查看 NTP 的同步记录

注:实测只有在安卓设备重启时,才会从 NTP 服务器同步时间

adb logcat -b events | grep -i "ntp"


举报

© 著作权归作者所有


1