做这个研究的初衷说来惭愧,与OTA后台接口之间存在个bug,即终端获取MD5值的时候,如果首位是0,会被自动舍去,导致版本校验不过,这个概率是1/16. 怎么办呢,就想到了手动直接改一下OTA版本,避免了整机重编译,要知道Android 整编是很耗时间的。

方法:

1,将OTA升级包重新压缩,并随便添加一个小文件,比如添加version.txt.

Android OTA包重新签名的方法_第1张图片

 

2,在Android根目录下重新签名,使用如下命令(标红处可选)注意其中文件路径会有不同:

java -Xmx1024m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 ../920/update_signed.zip ../920/sign/update_signed.zip

3,打包生成的zip文件即为重新签名后的OTA升级包文件。

如果手动修改过OTA升级包,不重新进行签名,使用BeyondConpare工具比较是无差别的,如下,但是仍然无法通过系统的校验进行升级。

Android OTA包重新签名的方法_第2张图片

修改了内容,重新签名以后,签名文件会跟原来的有所不同,是否说明签名文件的目录中有对当前包中的内容的时间或者列表等的描述??这时候是能够通过系统的验证的,如下。

Android OTA包重新签名的方法_第3张图片

 

自测步骤:

1,使用原生设置:设置-》设备-》关于-》System Local update,版本验证通过,能够启动升级。

2,升级成功以后,验证基本功能正常。Launcher轮播,CIBN高清影视视频播放,爱奇艺播放正常。

3,升级成功以后,再次通过System Local update 升级正常的OTA升级包,能够验证通过并正常升级。升级以后基本功能正常。

参考文献:

https://source.android.google.cn/devices/tech/ota/sign_builds.html

https://blog.csdn.net/mu0206mu/article/details/7399822

更多相关文章

  1. 【Android语音合成TTS】百度语音接入方法,和使用技巧详解
  2. 通过wifi连接android设备的方法
  3. Android Studio中新建assets文件的两种方法
  4. 多态在android中(利用接口调用服务中方法)的应用
  5. 什么是Android静默拍摄 Android静默拍摄app制作方法
  6. Eclipse在线升级Android ADT和SDK(4.x)方法介绍

随机推荐

  1. EditText 随记
  2. Android onBackPressed() 里调用 setResu
  3. 自定义dialog样式
  4. Android Studio 与git 添加忽略文件
  5. Android开发新手第一要素
  6. android 时间1
  7. Android如何快速打开系统软键盘和关闭系
  8. AspectJ是否仍可用于Android? 第2部分
  9. 《android的SQLite与文件下载》
  10. Android下图形系统