在Amlogic T950平台上用公司的OTA 签名key替换Android默认的testkey,过程记录如下:

1.生成key 
 系统默认的key如下,首先需要产生以下4种我们项目自己的OTA签名key文件,每一种类型的key都是成对生成的,.509.pem后缀名的是公钥,.pk8后缀名的是私钥。
 testkey -- a generic key for packages that do not otherwise specify a key.  
 platform -- a test key for packages that are part of the core platform.  
 shared -- a test key for things that are shared in the home/contacts process.  
 media -- a test key for packages that are part of the media/download system.

Android 源码包里面提供了生成key的工具,development/tools/make_key, 命令如下:
 ./make_key releasekey '/C=CN/ST=ShangHai/L=ShangHai/O=XXX/OU=XXX/CN=XXXV/emailAddress=XXX' rsa
 ./make_key platform  '/C=CN/ST=ShangHai/L=ShangHai/O=XXX/OU=XXX/CN=XXXV/emailAddress=XXX'  rsa
 ./make_key shared '/C=CN/ST=ShangHai/L=ShangHai/O=XXX/OU=XXX/CN=XXXV/emailAddress=XXX'   rsa
 ./make_key media    '/C=CN/ST=ShangHai/L=ShangHai/O=XXX/OU=XXX/CN=XXXV/emailAddress=XXX' rsa

将XXX替换为自己公司信息。
生成文件如下:
 media.pk8  media.x509.pem  platform.pk8  platform.x509.pem  
 releasekey.pk8  releasekey.x509.pem  shared.pk8  shared.x509.pem
 将生成的key 文件放到项目相关的目录下,针对Amlogic项目放到device/amlogic/p341/sign_keys。这样我们公司的key就生成了。

2.更改编译规则,使编译过程中使用我们新生成的key对OTA进行签名
 首先在build/core/Makefile里搜索testkey, 查看testkey是怎么用到编译系统的,看到如下编译选项:
 ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/testkey)
 BUILD_KEYS := test-keys
 else
 BUILD_KEYS := dev-keys
 endif

继续查看DEFAULT_SYSTEM_DEV_CERTIFICATE,可以看到在build/core/config.mk文件里有如下:
 # The default key if not set as LOCAL_CERTIFICATE
 ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
   DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
 else
   DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
 endif

因此要想使用releasekey,只需要指定PRODUCT_DEFAULT_DEV_CERTIFICATE的值即可,因此在device/amlogic/p341/p341.mk中指定项目特定变量

PRODUCT_DEFAULT_DEV_CERTIFICATE :=  device/amlogic/p341/sign_keys/releasekey

同时在根据规则,在build/core/Makefile改动如下:

ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),device/amlogic/p341/sign_keys/releasekey)
 BUILD_KEYS := release-keys

endif

这样在编译的最后阶段会使用我们的key对OTA包签名。

 3. 补充 
 对于apk的签名,系统会根据apk里指定的key进行签名。如果系统中的apk的android.mk中没有设置LOCAL_CERTIFICATE的值,就默认使用testkey。
 ifeq ($(LOCAL_CERTIFICATE),)
     LOCAL_CERTIFICATE := $(DEFAULT_SYSTEM_DEV_CERTIFICATE)
 endif

private_key := $(LOCAL_CERTIFICATE).pk8
 certificate := $(LOCAL_CERTIFICATE).x509.pem

而如果设置成:
 LOCAL_CERTIFICATE := platform

就代表使用platform来签名,这样的话这个apk就拥有了和system相同的签名

Android OTA releasekey 替换相关推荐

  1. android ota 版本校验,OTA升级签名校验简析

    1. 概要 如果进行过OTA升级的开发者,都或多或少有这样的疑问,如何确定该OTA升级包是可以信任的呢?这其中其实涉及到一个签名验证的流程. 2. 签名生成 在生成正规的固件时,一般会运行生成新key ...

  2. Android OTA升级原理 - 实现流程(整理一)

    Android OTA实现流程分析 OTA升级概述 制作升级包 自动生成update.zip升级包 手动生成update升级包 增量包目录结构 升级包写入设备分区 Android的三种工作模式 Rec ...

  3. android ota升级涉及的分区,Android OTA升级原理 - 实现流程(整理一)

    Android OTA实现流程分析 OTA升级概述 制作升级包 自动生成update.zip升级包 手动生成update升级包 增量包目录结构 升级包写入设备分区 Android的三种工作模式 Rec ...

  4. Android用省略号替换“...”

    本文翻译自:Android Replace "-" with ellipsis character Since AVD tools 16 I'm getting this warn ...

  5. 【转】Android OTA 升级之一:编译升级包

    Android OTA 升级之一:编译升级包 作者: 宋立新 Email : zjujoe@yahoo.com 前言 OTA 升级是 Android 系统提供的标准软件升级方式. 它功能强大,提供了完 ...

  6. Android OTA 升级之三:生成recovery.img

    Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...

  7. Android OTA升级(1):编译升级全包

         Android原生系统中就已经支持OTA升级.所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件.一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级.    ...

  8. android OTA更新

    Android OTA更新 ​ ​ ​ ​  Android设备可以接受和安装系统和应用软件的空中下载更新.设备有一个特殊的带有软件的recovery分区,该分区可以解压下载的更新包并且将他们应用到系 ...

  9. Android OTA升级原理和流程分析(五)---update.zip包从上层进入Recovery服务

    转载自:http://blog.chinaunix.net/uid-22028566-id-3533854.html 文章开头我们就提到update.zip包来源有两种: 一个是OTA在线下载(一般下 ...

最新文章

  1. 我与编程:十载寒冰,难凉热血
  2. C++中 auto自动变量,命名空间,using作用以及作用域
  3. radiobutton怎么变成竖排_衣服如此凌乱?怎么能忍受的了?衣柜收纳,试试这些神器吧...
  4. manjaro linux 关机,给本子安装manjaro 出现无法关机的解决办法
  5. 用 Python 将 QQ 好友头像生成祝福语
  6. mysql insert
  7. 瑞芯微RK2918、全志A10和AML8726-M3方案ICS系统运行效果对比
  8. 5. 高性能MySQL --- 创建高性能索引
  9. AD09之与AD6版本使用不同对比
  10. 【天线的主要技术指标及其含义-带宽 】
  11. 400元DIY实现手机 笔记本 GPS导航
  12. 免费的 XShell 替代品,我推荐这5款软件,一个比一个香!
  13. android项目飞机大战,飞机大战android版源代码
  14. windows10 系统中,双屏下,设置各自屏的任务栏显示各自显示器中的任务。
  15. 三门问题详解(附C语言实现)
  16. 解决移动端,wap站,m站适配方案整理
  17. 全产业链落实循环减碳实践 宝马在华持续推进绿色转型
  18. 无意中发现我这个北漂的几张照片
  19. 使用小马哥win10 激活工具激活后, 桌面上经常出现一个广告快捷方式的 解决方法...
  20. ProCast导出节点应力数据并格式化

热门文章

  1. Java设计模式-模板模式
  2. 马来西亚之旅——吉隆坡、马六甲、槟城和亚庇攻略
  3. linux shell编程从入门到精通pdf_SHELL脚本编程入门
  4. Go语言之分支结构(十一)
  5. 双系统 修改grub启动菜单字体大小
  6. 加州欧文计算机工程专业,加州大学欧文分校计算机工程博士专业排名
  7. 亚马逊云科技连续12年蝉联Gartner云基础设施和平台服务魔力象限领导者
  8. 云平台虚拟机镜像制作(从iso到qcow2)
  9. PHP header网页安全认证
  10. python 脚本分析dns日志计算前几位的请求数域名