Android 恢复出厂设置时间重置
admin
2024-02-17 01:56:38

时间由rtc硬件模块来进行维护的,时间更新后会将时间信息写入此硬件模块,在系统启动时,RTC硬件驱动会读取此值进行设置。

关于android的时间
网上资料了解到,android Linux都有两个时间,一个是系统时间,一个是硬件时间(RTC时间)。RTC是实时时钟的英文 缩写,基本上在硬件上都有纽扣电池,不会断电,会一直计时;但系统时钟不一样,系统运行的时候能一直计时,但系统关机或者断电的时候就gg了。所以每次系统开机的时候,会去读取rtc中的硬件时间,写入到系统时间,然后系统时间就自己搞起来了,不再关rtc时间什么事情了。等系统关机或者什么时候,会把时间写入到rtc,这样才能保证下次开机你这个系统的时间不会错乱。

两种简单的方法修改Android系统下的系统默认时间

RK3288_Android7.1调试RTC总结

/kernel/msm-4.9/drivers/rtc/systohc.c

int rtc_set_ntp_time(struct timespec64 now)
{struct rtc_device *rtc;struct rtc_time tm;int err = -ENODEV;if (now.tv_nsec < (NSEC_PER_SEC >> 1))rtc_time64_to_tm(now.tv_sec, &tm);elsertc_time64_to_tm(now.tv_sec + 1, &tm);rtc = rtc_class_open(CONFIG_RTC_SYSTOHC_DEVICE);if (rtc) {/* rtc_hctosys exclusively uses UTC, so we call set_time here,* not set_mmss. */if (rtc->ops &&(rtc->ops->set_time ||rtc->ops->set_mmss64 ||rtc->ops->set_mmss))err = rtc_set_time(rtc, &tm);rtc_class_close(rtc);}return err;
}

frameworks/base/services/core/java/com/android/server/AlarmManagerService.java

// We have to set current TimeZone info to kernel
// because kernel doesn't keep this after reboot
setTimeZoneImpl(SystemProperties.get(TIMEZONE_PROPERTY));// Also sure that we're booting with a halfway sensible current time
if (mNativeData != 0) {final long systemBuildTime = Environment.getRootDirectory().lastModified();if (System.currentTimeMillis() < systemBuildTime) {Slog.i(TAG, "Current time only " + System.currentTimeMillis()+ ", advancing to build time " + systemBuildTime);setKernelTime(mNativeData, systemBuildTime);}
}

system会取当前时间与system分区文件夹的时间进行比较。 如果时间小于文件夹时间,那么就会改成文件夹时间

设置系统时间重启时间置回版本时间分析

只要设置过一次时间,不会出现问题

时间戳
https://tool.lu/timestamp/

系统时间
dateRTC时间
hwclock -r通过(@xx,xx以s为单位)时间戳转换为时间。
date -d @1600335717产品编译信息信息:
adb shell getprop | grep date
获取:"ro.build.date.utc"的值查看system分区时间:
adb shell -> ls -al
如:drwxr-xr-x   1 root   root    3488 2020-09-17 17:41 system

Linux时间系统之RTC时间
获取/设置/重置系统时间

获取时间
# date
Thu Jun 4 22:53:13 PDT 2015
# date +%s
1433483623
# date +%D
06/04/15
# date "+%d %B %Y"
04 June 2015设置时间
#date   //设置时间前
Thu Jun 4 23:09:05 PDT 2015
# date -s "21 June 2016 11:01:20"  //设置时间
Tue Jun 21 11:01:20 PDT 2016
# date   //设置时间后
Tue Jun 21 11:01:22 PDT 2016设置完成后,使用clock -w,不然重启后时间又回到以前的值了$ date +%s --date 19700101 --utc   // 1970-01-01 00:00 UTC
0
$ date +%s --date 20120101 --utc   // 2012-01-01 00:00 UTC
1325376000
$ date +%s --date 20160101 --utc   // 2016-01-01 00:00 UTC
1451606400

相关内容

热门资讯

幼儿园小朋友表演失误,为何全网... 近日 一段幼儿园小朋友 篮球表演的视频刷屏全网 表演过程中 一颗篮球意外滚落 这场看似出现失误 并不...
整治AI魔改乱象背后:技术狂欢... 主编温静导读:此次广电总局开展"AI魔改"视频专项治理行动,明确了"清理违规内容、处置乱象账号、落实...
新年贺词里的“祖国统一的历史大... (来源:直新闻)直新闻:中国元首新年贺词的国际效应持续发酵,今日俄罗斯电视台(RT)元旦的报道,特别...
特斯拉(TSLA.US)Q4交... 特斯拉(TSLA.US)周五公布了2025年第四季度汽车生产与交付数据。财报发布后,公司股价一度上涨...