当前位置: 首页 > news >正文

Android12 使用自定义签名key替换系统默认testkey

如何生成自定义签名密钥,在build/target/product/security/README中有介绍

  The following commands were used to generate the test key pairs:

  development/tools/make_key testkey       '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
  development/tools/make_key platform      '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
  development/tools/make_key shared        '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
  development/tools/make_key media         '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
  development/tools/make_key cts_uicc_2021 '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'

该命令的详细解析:

  • development/tools/make_key:这是正在执行的脚本或工具。它可能是 Android 开发环境提供的一个自定义脚本,用于生成密钥。

  • testkey:这是生成的密钥的名称。在这里,密钥将被命名为 testkey。

  • ‘/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’:这是密钥的 Distinguished Name (DN) 字段,包含以下信息:

    1. C=US:国家(美国)
    2. ST=California:州(加利福尼亚)
    3. L=Mountain View:城市(山景城)
    4. O=Android:组织(Android)
    5. OU=Android:组织单位(Android)
    6. CN=Android:通用名称(Android)
    7. emailAddress=android@android.com:电子邮件地址

生成自定义签名releasekey

development/tools/make_key releasekey '/C=CN/ST=Guangdong/L=Shenzhen/O=Lezoneyun/OU=Lezoneyun/CN=Lezoneyun/emailAddress=wxd@lezoneyun.com'

执行命令后将会生成两个文件

  • releasekey.pk8:私钥文件
  • releasekey.x509.pem:证书文件

将文件复制到build/make/target/product/security/目录下

cp releasekey.pk8 build/target/product/security/releasekey.pk8
cp releasekey.x509.pem build/target/product/security/releasekey.x509.pem

配置系统使用自定义密钥

在某些情况下,Android 系统可能会通过 Android.mk 或 Android.bp 文件显式指定使用 testkey。你需要确保系统模块和应用程序使用新的密钥。

修改 Android.mk 或 Android.bp文件,例如:

-LOCAL_CERTIFICATE := testkey
+LOCAL_CERTIFICATE := releasekey

全局替换testkey

  • /build/make/core/config.mk
 ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
   DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
 else
-  DEFAULT_SYSTEM_DEV_CERTIFICATE := build/make/target/product/security/testkey
+  DEFAULT_SYSTEM_DEV_CERTIFICATE := build/make/target/product/security/releasekey
 endif
 .KATI_READONLY := DEFAULT_SYSTEM_DEV_CERTIFICATE
  • /build/make/core/sysprop.mk
 # non-default dev keys (usually private keys from a vendor directory).
 # Both of these tags will be removed and replaced with "release-keys"
 # when the target-files is signed in a post-build step.
-ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/make/target/product/security/testkey)
-BUILD_KEYS := test-keys
+ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/make/target/product/security/releasekey)
+BUILD_KEYS := release-keys
 else
 BUILD_KEYS := dev-keys
 endif
  • /system/sepolicy/prebuilts/api/31.0/private/keys.conf
 # Example of ALL TARGET_BUILD_VARIANTS
 [@RELEASE]
-ENG       : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
-USER      : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
-USERDEBUG 

相关文章:

  • 上下分层、左右分离的驱动设计思想
  • PMP–知识卡片--情商组成部分
  • java 手搓一个http工具类请求传body
  • Three.js中BufferGeometry 和 BoxGeometry
  • 网络变压器的主要电性参数与测试方法(4)
  • Jetpack Navigation 实战:Fragment 和 Activity 的交互与导航
  • Android Glide 缓存模块源码深度解析
  • SpringBoot缓存抽象:@Cacheable与缓存管理器配置
  • Vite项目中vite.config.js中为什么只能使用process.env,无法使用import.meta.env?
  • SpringCloud Alibaba——入门简介
  • 利用ArcGIS Pro进行爆炸波及建筑分析:详细步骤与技巧
  • 鸿蒙模拟器运行NDK项目失败 9568347
  • 【ai塔罗牌-生命之树】【azure openai】【python】交互塔罗牌demo
  • 【大模型系列】llama.cpp本地运行大模型
  • [排序算法]直接插入排序
  • 数据采集技术之python网络爬虫(中国天气网的爬取)
  • 动态规划(1. 第 N 个泰波那契数)
  • 【prompt实战】知乎问题解答专家
  • Mac java全栈开发环境配置
  • 【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#
  • 商人运作亿元“茅台酒庞氏骗局”,俩客户自认受害人不服“从犯”判决提申诉
  • AI含量非常高,2025上海教育博览会将于本周五开幕
  • 沙县小吃中东首店在沙特首都利雅得开业,首天营业额超5万元
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式并发表重要讲话
  • 一生要出片的年轻人,买爆相机
  • 外交部发言人就印巴局势升级答记者问