我们在recovery升级的时候,经常提示这样的错误:
Installing update...
Can't install this package (Tue Jun 27 12:29:30 CST 2017) over newer build (Mon Jun 26 17:20:32 CST 2017)
E:Error in /udisk/xxxx.zip
(Status 7)
意思就是,我们不能从新的版本升级到旧的系统,有个时间戳的比较。
我们来看看这个时间戳校验是怎么工作的:
我们发现在升级包的升级脚本中updater-script中有段校验:
(!less_than_int(1498537770, getprop("ro.build.date.utc"))) || abort("E3003: Can't install this package (Tue Jun 27 12:29:30 CST 2017) over newer build (" + getprop("ro.build.date") + ").");
原来就是在这里进行的时间戳校验。
我们继续寻找,这个校验是在哪里加上去的呢,我们在 build/tools/releasetools/ota_from_target_files 发现了如下:
def WriteFullOTAPackage(input_zip, output_zip):
......
if not OPTIONS.omit_prer