本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Android官方文档
source.android.google.cn/devices/tec… android.googlesource.com/platform/bu…
前言
Android 操作系统映像在三个地方使用加密签名:
- 映像中的所有 .apk 文件都必须经过签名。Android 软件包管理器通过下列两种方式使用 .apk 签名:
- 更换应用时,必须使用与旧应用相同的密钥对其签名,才能存取旧应用的数据。无论是通过覆盖 .apk 来更新用户应用,还是使用安装在 /data 下的新版本应用来覆盖系统应用,这一点都适用。
- 如果两个或多个应用想要共享同一个用户 ID(方便共享数据等),则必须使用相同的密钥对它们进行签名。
- 必须使用符合系统预期的密钥对 OTA 更新包进行签名,否则在安装过程中 OTA 更新包将被拒绝。
- 必须使用符合系统预期的密钥对img进行签名,否则flash img后verity boot将失败而不能正常启动
生成key
生成releasekey platform shared media networkstack
subject='/C=CN/ST=Shanghai/L=Shanghai/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
for x in releasekey platform shared media networkstack; do \
./development/tools/make_key ~/.android-certs/$x "$subject"; \
done
生成 verity_key
make generate_verity_key
development/tools/make_key verity '/C=CN/ST=Shanghai/L=Shanghai/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
out/host/linux-x86/bin/generate_verity_key -convert verity.x509.pem verity_key
拷贝key
将以上两部份生成的key,拷贝到build/target/product/security,替换掉原来的key
生成key的参数解释
- C — Country Name (2 letter code) /国家名字/
- ST — State or Province Name (full name) /省份名字/
- L — Locality Name (eg, city) /城市名字/
- O — Organization Name (eg, company) /公司/组织 名字/
- OU — Organizational Unit Name (eg, section) /部门名字/
- CN — Common Name (eg, your name or your server’s hostname) /自己的名字或者服务器的hostname/
- emailAddress — Contact email address /联系邮件/