原来ota工具生成的元数据是人类可读的格式。verify方法需要一个二进制文件。该文件不是作为唯一文件的zip内容的一部分。相反,它是在有效载荷.bin. 所以有效载荷.bin实际上是有效载荷_元数据.bin,这些字节将与update\u engine\u client的verify方法一起正确工作,以确定有效负载是否适用。
我正在提取有效载荷_元数据.bin在makefile中,如下所示:
$(DEST)/%.meta: $(DEST)/%.zip
unzip $< -d /tmp META-INF/com/android/metadata
python -c 'import re; meta=open("/tmp/META-INF/com/android/metadata").read(); \
m=re.match(".*payload_metadata.bin:([0-9]*):([0-9]*)", meta); \
s=int(m.groups()[0]); l=int(m.groups()[1]); \
z=open("$<","rb").read(); \
open("$@","wb").write(z[s:s+l])'
rm -rf /tmp/META-INF