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

Android 10.0 设置系统默认时间 10.0设置系统默认时间 阅读详情

转载注明网址:http://blog.youkuaiyun.com/hubbybob1/article/details/54575572
前段时间在做Openssl的相关编程,发现一个错误:

error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate:s3_pkt.c:1259:SSL alert number 42
/*42:bad_certificate
There is a problem with the certificate, for example, a certificate is corrupt, or a certificate contains signatures that cannot be verified.*/

表示出现SSL错误码为42,经过查找列出了相关的错误码为bad_certificate,即CA证书出错,经过排查发现我的CA证书的时间是2016年制作,而我的Android平台系统时间却是1970年,所以会报错,那么就要修改Android平台的默认时间。
由于Android系统源码的默认时间为1970年,本文提供两种方法来修改Android的默认时间。
由于Android系统源码的默认时间为1970年,本文提供两种方法来修改Android的默认时间。
一、启动服务脚本来修改默认时间
修改系统时间的命令就是:

date -s //设置当前时间,只有root权限才能设置,其他只能查看 
date -s 20170117//设置系统时间为2017年1月17日00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改 
date -s "01:01:01 2017-01-17" //这样可以设置全部时间 
date -s "01:01:01 20170117" //这样可以设置全部时间 
date -s "2017-01-17 01:01:01" //这样可以设置全部时间 
date -s "20120117 01:01:01" //这样可以设置全部时间

1.编写脚本文件,随便命名为setdate.sh如下:

#!/system/bin/sh
su
date -s 20170117
date -s 12:00:00
echo "*******************************"
echo "set date 2017.01.17 12:00:00"
echo "*******************************"

把编写好的shell脚本放到固定的目录下面,例如可以放到和init.rc同一个目录下。
2.编写MK文件,找到你的启动mk文件,再起末尾添加如下copy语句:

PRODUCT_COPY_FILES += 相对本mk文件的存放脚本的路径/setdate.sh:system/bin/setdate.sh
//在运行过程中将setdate.sh脚本copy到/system/bin/下面

3.编写init.rc启动服务文件
在其最后添加以下内容,用来启动这个服务

service tiny /system/bin/setdate.sh
class main
oneshot
on property:sys.boot_completed=1
start setdate 

到这里重新编译你的Android源码,安装就可以在启动系统的时候,使用date命令对系统的时间进行修改,其实这个不算严格意义上的修改默认的时间,下面的方法就是去Android源码里面去修改具体的时间了。
二、修改系统源码来解决默认时间
在这里主要讨论的是从Android系统源码出发来对系统时间的修改。其文件要找到是在

/frameworks/base/services/java/com/android/server/SystemServer.java 

在这个文件中的第1180行的代码如下:

//在对象public class SystemServer内如下定义和判断
    static Timer timer;//定义时间
    static final long SNAPSHOT_INTERVAL = 60 * 60 * 1000; // 1hr,一小时的毫秒数
//从970年1月一日0点0分0秒开始所经过的毫秒数
    // The earliest supported time.  We pick one day into 1970, to
    // give any timezone code room without going into negative time.
    private static final long EARLIEST_SUPPORTED_TIME = 86400 * 1000;//可以查时间的ms数为1970的某天,定义最近时间

    /**
     * Called to initialize native system services.
     */
    private static native void nativeInit();

    public static void main(String[] args) {

        /*
         * In case the runtime switched since last boot (such as when
         * the old runtime was removed in an OTA), set the system
         * property so that it is in sync. We can't do this in
         * libnativehelper's JniInvocation::Init code where we already
         * had to fallback to a different runtime because it is
         * running as root and we need to be the system user to set
         * the property. http://b/11463182
         */
        SystemProperties.set("persist.sys.dalvik.vm.lib",
                             VMRuntime.getRuntime().vmLibrary());

        if (System.currentTimeMillis() < EARLIEST_SUPPORTED_TIME) {//获取当前时间和所设置的最近时间进行对比,,一般都是网络获取,没有网路的话一般都是1970年开始,可理解为没有互联网就设置为最近时间
            // If a device's clock is before 1970 (before 0), a lot of
            // APIs crash dealing with negative numbers, notably
            // java.io.File#setLastModified, so instead we fake it and
            // hope that time from cell towers or NTP fixes it
            // shortly.
            Slog.w(TAG, "System clock is before 1970; setting to 1970.");
            SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME);//设置为定义的最近时间,也就是默认时间
        }

因此我们可以修改这个最近时间,也就是默认时间如下:

//private static final long EARLIEST_SUPPORTED_TIME = 86400 * 1000;//可以查时间的ms数为1970的某天,
//private static final long EARLIEST_SUPPORTED_TIME = 1477899065689L;//设置时间为20140701
private static final long EARLIEST_SUPPORTED_TIME = 1482899065689L;//设置时间为2017年的某一天,某一时刻

到这里修改时间的两种方法已经完毕,是不是很简单啊

MTK-Android12-13 修改默认息屏时间 实现需求很简单的,找到对应配置即可如果需要了解实现业务、逻辑,还需要进一步看一看代码流程和代码思路,在代码里面找答案。 阅读详情

相关推荐

从零开始解析N-CMAPSS数据集:航空发动机健康管理的入门指南

本文详细解析了N-CMAPSS数据集在航空发动机健康管理中的应用,从数据集的构成、关键变量到实际数据分析方法,为初学者提供了全面的入门指南。通过Python代码示例,展示了如何加载、探索和建模这一复杂数据集,帮助读者掌握航空发动机性能预测的核心技术。

weixin_29063979的博客 324

android默认系统日期、时间、时区更改

android默认系统日期、时间、时区更改       做android平台,经常会遇到产品需要更改系统默认时区日期时间的问题。android更改时区相对比较容易实现,网上也有很多资料,直接设置一个属性即可,例如设置上海东八区,persist.sys.timezone=Asia/Shanghai。但是如何实现更改默认系统时间呢?       在android中,Linux内核中、rtc时钟,

Edsam--活到老学到老,掌握核心技术,做好产品服务! 1万+

python实现RsaWithSHA256签名以及国密Sm3WithSm2签名

【代码】python实现RsaWithSHA256签名以及国密Sm3WithSm2签名。

weixin_45005677的博客 3357

【Android】修改Android系统初始默认日期

在Android系统的设备上,都有一个默认的开始日期,有些设备在没有联网没有同步到系统时间的时候,默认的日期一般是1970年。最近遇到一个系统遗留BUG,测试猿反馈手动设置日期的默认年份太久远了,问能不能更新下到最近的年份,比如2016年1月1日,自己找到了一个简单的修改方法,故在这记录一下。通过SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED...

小赖同学的博客 2819

HAMi 核心模块与架构设计

HAMi 的架构设计是围绕 Kubernetes 生态系统构建的,通过扩展 Kubernetes 的调度能力和设备管理能力,为用户提供了高效、灵活的异构设备虚拟化和管理解决方案。

北斗云的博客 2552

kubernetes rook 安装 cephfs

ceph root kubernete osd uuid partuuid

天津托的博客 1543

Android修改系统默认时间

Android修改系统默认时间

qq_48192676的博客 1279

Shopee 虾皮API接口:商品详情采集的实践

随着电商行业的蓬勃发展,数据采集和分析在商业决策中扮演着越来越重要的角色。Shopee作为东南亚领先的电商平台,拥有大量的商品数据。通过Shopee的API接口,我们可以方便地获取商品详情,为数据分析和市场研究提供有力支持。本文将介绍如何使用Shopee API接口采集商品详情,并分享一些实践技巧。提供了丰富的数据接口,包括商品详情、店铺信息、订单数据等。通过API接口,开发者可以轻松地获取Shopee平台上的数据,进行进一步的处理和分析。Shopee API接口:商品详情采集的实践与技巧。

An4480的博客 1889

Android 修改系统默认初始化时间

手机第一次开机默认是没有定制时区的(默认是GMT:+00:00),但是会有一个默认日期,如2013年1月1日。 如何客制化默认时区以及时间呢? [Solution] 一、修改默认时间 1、修改RTC默认日期: Android L之前: \alps\mediatek\custom\[project]\preloader\ inc\cust_rtc.h \alps\mediatek\cu

Mr_kings的专栏 8064

2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml

本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 593

在 SAP S/4HANA Private Cloud 中把标准 CDS View 发布为 OData:可操作的四条路径与完整示例

在 ADT 中创建。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 726

Android系统时间设置

通过代码实现时间、时区的相关设置。在公司的一个android设备中,经常会出现时间不准,比如重启后时间变成1970年,只要设备连上网,会自动同步时间为正确的时间,但是这个同步有时候也没能同步成功,所以需要我们可以自行设置系统时间,或者同步我们自己服务器的时间,因为有些登录操作要求设备的时间和服务器的时间相差不能超过5分钟,一旦超过5分钟则不给登录。和设置权限,另外打包时需要使用系统签名文件进行打包,这样才有权限修改时间。

Android菜鸟的专栏 4880

OPPO 数据分析面试题及参考答案

如何设计共享单车数据库的各个字段? 对于共享单车的数据库设计,首先考虑用户相关的字段。用户表可以包含用户 ID,这是一个唯一标识符,用于区分不同用户;姓名,记录用户的真实姓名;联系方式,比如手机号码,方便在出现问题时联系用户;注册时间,记录用户何时开始使用共享单车服务;信用分数,用于衡量用户使用共享单车过程中的行为是否合规,比如是否按时归还车辆等。 车辆信息表要有车辆 ID,这是车辆的唯一标识;车辆类型,例如普通单车、电动单车等;投放时间,即车辆投放到市场的时间;车辆状态,包括是否可用(如正

大模型大数据攻城狮的专栏 1186

android修改系统默认时间

本文是基于Android5.1的代码 1.如何修改出厂默认日期和默认时区 一、修改默认时间 1、修改RTC默认日期 : Android L之前: \alps\mediatek\custom\[project]\preloader\ inc\cust_rtc.h \alps\mediatek\custom\[project]\kernel\rtc\rtc\rtc-mt65XX.h...

小辉的博客 1718

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android9.0 系统默认时间修改

一. 问题:最近项目出现未联网的机器默认时间从2009-01-01 00:00 开始计时,桌面显示2009-01-01 03:00,需求是2019-01-01 8:00 开始计时 二.问题分析: 1. 通过分析代码,frameworks\base\services\java\com\android\server\SystemServer.java private static fina...

fuyunfengfan的专栏 4506

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android版本如何修改时间,如何修改Android系统默认时间

相信很多人看到过Android手机或平板显示XXXX-01-01这个奇怪的日期,没错,这就是Android设备的默认日期。当Android设备没有联网,无法获取当前真实时间的时候,就会使用系统默认时间。大部分时候,系统默认时间是Epoch时间(即1970-01-01 00:00:00 UTC),也有OEM厂商会修改此默认时间。进入正题,如何修改默认时间呢,很简单,修改SystemServer.ja...

weixin_42596214的博客 4073

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android 一些简单默认配置修改

一些简单默认配置

2403_89301341的博客 1017

android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间+修改屏幕休眠时间+修改usb debug默认关闭+mtk修改默认字体大小

在系统开发中经常需要改一下,系统默认的配置,这次把最近做的项目中有些修改的地方写下了,方便以后查阅。 1.gps 默认是打开的,有些产品需要默认关闭,主要是为了省电。       修改:                /frameworks/base/packages/SettingsProvider/res/values/defaults.xml              将:

duer8797的专栏 4855

android编译时间定制,修改Android系统时间为默认编译时间

修改Android系统时间为默认编译时间为了修改android的默认时间。 在网上查询一些资料,发现有介绍在SystemServer.java 里修改的。 但发现在此处修改,并没有达到预期效果,经查询在AlarmManagerService.java 中设置系统的默认时间更为妥当。下面是Android 8.1 中frameworks/base/services/core/java/com/andr...

weixin_31999597的博客 1020

修改Android系统时间为默认编译时间

修改Android系统时间为默认编译时间 为了修改android的默认时间。 在网上查询一些资料,发现有介绍在SystemServer.java 里修改的。 但发现在此处修改,并没有达到预期效果,经查询在AlarmManagerService.java 中设置系统的默认时间更为妥当。 下面是Android 8.1 中 frameworks/base/services/core/java/com/a...

lubin2099的博客 3167

Android 修改系统默认时间12小时制/24小时制

android系统第一次开机决定系统的时间格式的代码在frameworks层的SettingsProvider应用中。 1.在defaults.xml中添加相应代码。 在frameworks\base\packages\SettingsProvider\res\values\defaults.xml文件中添加 一行 <string name="def_time_12_24" tran...

IceSea7 3576

修改系统默认时间

rk,mtk修改方案: diff --git a/frameworks/base/services/java/com/android/server/SystemServer.java b/frameworks/base/services/java/com/android/server/SystemServer.java index 8d23101f55..a0f4bbe553 100755 -...

lmpt90的专栏 921

如何修改Android系统默认时间

相信很多人看到过Android手机或平板显示XXXX-01-01这个奇怪的日期,没错,这就是Android设备的默认日期。当Android设备没有联网,无法获取当前真实时间的时候,就会使用系统默认时间。大部分时候,系统默认时间是Epoch时间(即1970-01-01 00:00:00 UTC),也有OEM厂商会修改此默认时间。 进入正题,如何修改默认时间呢,很简单,修改SystemServer.j

qilu0882的专栏 4922

android 命令修改时间或程序修改系统时间

前提是手机必须先获取root; root方法见其他章节或网上都有介绍 adb shell  进入shell 终端界面 1、先设置系统的时区配置 cat /data/property/persist.sys.timezone //查看当前时区配置文件 setprop persist.sys.timezone GMT        //修改属性  2、开始设置修改当前系统时间 da

苏白的专栏 3万+
上一篇: usbredir-0.7内容详解(三)
下一篇: spice下通道OpenSSL加密的过程和加密数据传输过程解密
葫芦娃二娃
博客等级 码龄15年 1850粉丝 69原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值