Android 13 QSSI和TARGET编译时间不一致导致recovery升级失败

环境

$ cat /etc/os-release

NAME="Ubuntu"

VERSION="20.04.4 LTS (Focal Fossa)"

ID=ubuntu

ID_LIKE=debian

PRETTY_NAME="Ubuntu 20.04.4 LTS"

VERSION_ID="20.04"

HOME_URL="https://www.ubuntu.com/"

SUPPORT_URL="https://help.ubuntu.com/"

BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"

PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"

VERSION_CODENAME=focal

UBUNTU_CODENAME=focal

调查过程

$ mgrep buildDateTime

./build/soong/ui/metrics/metrics_proto/metrics.pb.go:285: BuildDateTimestamp *int64 `protobuf:"varint,1,opt,name=build_date_timestamp,json=buildDateTimestamp" json:"build_date_timestamp,omitempty"`

./build/soong/ui/build/config.go:54: buildDateTime string

./build/soong/ui/build/config.go:417: buildDateTimeFile := filepath.Join(outDir, "build_date.txt")

./build/soong/ui/build/config.go:418: if buildDateTime, ok := ret.environ.Get("BUILD_DATETIME"); ok && buildDateTime != "" {

./build/soong/ui/build/config.go:419: ret.buildDateTime = buildDateTime

./build/soong/ui/build/config.go:421: ret.buildDateTime = strconv.FormatInt(time.Now().Unix(), 10)

./build/soong/ui/build/config.go:424: ret.environ.Set("BUILD_DATETIME_FILE", buildDateTimeFile)

./build/soong/ui/build/config.go:1388: return c.buildDateTime

./build/soong/ui/build/build.go:51: if buildDateTimeFile, ok := config.environ.Get("BUILD_DATETIME_FILE"); ok {

./build/soong/ui/build/build.go:52: err := ioutil.WriteFile(buildDateTimeFile, []byte(config.buildDateTime), 0666) // a+rw

./build/soong/ui/build/upload_test.go:138: buildDateTime: strconv.FormatInt(time.Now().UnixNano()/int64(time.Millisecond), 10),

结论

编译target的时候

export BUILD_DATETIME=`cat QSSI.13/out/build_date.txt`

<完>

相关推荐
摩羯座-185690305945 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
Pika5 小时前
深入浅出 Compose 测量机制
android·android jetpack·composer
编程充电站pro6 小时前
SQL 面试高频:INNER JOIN vs LEFT JOIN 怎么考?
数据库·sql
这周也會开心6 小时前
SQL-窗口函数做题总结
数据库·sql
间彧6 小时前
TiDB详解与Spring Boot实战指南
数据库
极限实验室6 小时前
Easysearch 字段'隐身'之谜:source_reuse 与 ignore_above 的陷阱解析
数据库·redis
2301_772093566 小时前
tuchuang_后端_前端_注册登录
数据库·后端·网络协议·mysql·wireshark
武子康6 小时前
Java-141 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(3)
java·数据库·mysql·spring·性能优化·系统架构·事务
间彧6 小时前
脏读、不可重复读、幻读详解与对比
数据库
间彧7 小时前
数据库事务隔离级别详解
数据库