概述
文章目录
- 开发平台基本信息
- 问题描述
- 解决方法
开发平台基本信息
芯片: MSM8953_64
版本: Android 10
kernel: msm-4.9
问题描述
设备在调试OTA升级功能的时候,制作OTA全量包测试升级功能,升级正常;然后,测试差分包升级失败了;以前差分包升级失败有以下几种可能:
- 签名不一致,例如固件编译用的是test key,而制作差分包用了release key
- 固件是直接用的out目录生成的文件制作的,正常是要用make dist生成的img的压缩文件中的system跟vendor两个镜像烧录的固件才能进行OTA升级
这两种坑都排除了,因为这个打包脚本我在其他平台上都用过很多了,肯定是没有问题的;只能把设备中recovery升级的日志导出来看一下,是哪里出问题了;日志保存路径cache/recovery/
;将日志导出来可以看到日志报了Failed to verify package compatibility
的错误,具体日志如下:
[ 12.872568] I:Verifying package compatibility...
[ 12.915551] W:Cannot fetch /system/etc/vintf/manifest.xml: Cannot open /mnt/system//system/etc/vintf/manifest.xml: No such file or directory
[ 12.917319] W:Cannot open /mnt/system//system/manifest.xml: No such file or directory
[ 12.919046] W:Cannot open /mnt/system//system/etc/vintf/: No such file or directory
[ 12.920785] W:Cannot open /mnt/system//system/compatibility_matrix.xml: No such file or directory
[ 12.932883] E:Cannot unmount / at /mnt/system: Invalid argument
[ 12.955553] E:Failed to verify package compatibility (result -19): No framework manifest file from device or from update package
[ 12.972096] E:No framework matrix file from device or from update package
[ 12.998578] W:failed to read uncrypt status: No such file or directory
[ 13.013025] W:Failed to read /sys/class/thermal/thermal_zone20/temp: Invalid argument
[ 13.027681] I:current maximum temperature: 51000
[ 13.028220] I:/sideload/package.zip
然后,我对比是全量包跟差分包,发现差分包的compatibility.zip中只有两个文件,而全量包有4个文件;
全量包:
差分包:
解决方法
造成差分包升级失败的原因就是compatibility.zip中少了两个system的文件;而导致少了两个system文件的原因就是两个target包中的版本号是相同,所以会导致制作差分包的时候过滤掉system一些文件。正常每次编译的版本号都是不同的,而我们这套代码是因为供应商改过BUILD_NUMBER,把它改成了固定值,从而导致了这个问题;将BUILD_NUMBER改为带时间即可,这样每次编译就都会改变。
--- a/build/make/core/version_defaults.mk
+++ b/build/make/core/version_defaults.mk
@@ -312,7 +312,7 @@ ifndef BUILD_NUMBER
# If no BUILD_NUMBER is set, create a useful "I am an engineering build
# from this date/time" value. Make it start with a non-digit so that
# anyone trying to parse it as an integer will probably get "0".
- BUILD_NUMBER := SIM8950lhcB01V02_A10
+ BUILD_NUMBER := eng.$(shell $(DATE) +%Y%m%d.%H%M%S)
HAS_BUILD_NUMBER := false
endif
.KATI_READONLY := BUILD_NUMBER HAS_BUILD_NUMBER
最后
以上就是平淡小蜜蜂为你收集整理的[高通MSM8953_64][Android10]解决制作差分包不生成system_manifest.xml的问题的全部内容,希望文章能够帮你解决[高通MSM8953_64][Android10]解决制作差分包不生成system_manifest.xml的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复