プリローダーのハッシュ値が一致しない何らかの理由で、アップグレードが失敗し、あなたは時にアップグレードプリローダー差をアップグレードする必要がないので、最近では、ときアップグレードの違いを作り、問題に出くわしました。
解決策は、ターゲット、削除ab_partitions.txtでパーティション名のうち、zipファイルを抽出し、パッケージをアップグレードし、preloader.imgを削除差動ABの生産にパーティションにあります
次のように改正:
プロジェクト/ビルド/ツール/ releasetools / ota_from_target_files.py
METADATA_NAME = 'META-INF / COM /アンドロイド/メタデータ'
POSTINSTALL_CONFIG = 'META / postinstall_config.txt'
UNZIP_PATTERN = [ 'IMAGES / *'、 'META / *']
AB_PARTITIONS = 'META / ab_partitions.txt'
PRELOADER_STR =「プリローダー"
......
デフRemovePreloaderFromZip(INPUT_FILE):
TARGET_FILE = common.MakeTempFile(接頭辞= "targetfiles-"、接尾辞= "zip圧縮。")
shutil.copyfile(INPUT_FILE、TARGET_FILE)
input_tmp = common.UnzipTemp(INPUT_FILE、UNZIP_PATTERN)
ab_partitions_file =はos.path。参加(input_tmp、* AB_PARTITIONS.split( '/'))
Fとして(ab_partitions_file)オープン有する:
ab_partitions_lines = f.readlines()
[ab_partitions_linesにおけるラインのline.strip()] ab_partitions =
new_ab_partitions = common.MakeTempFile(接頭辞= "ab_partitions"、サフィックスは= "TXT")
(Fとしてnew_ab_partitions、 'W'):オープンと
ab_partitionsにおけるパーティションの:
IF(partition.strip()== PRELOADER_STR.strip()):
継続する
f.write(パーティション+ "\ n")
to_delete = [AB_PARTITIONS]
to_delete + = [ 'IMAGES / preloader.img']
common.ZipDelete(TARGET_FILE、to_delete)
target_zip = zipfile.ZipFile(TARGET_FILE、 ''、allowZip64 =真)
common.ZipWrite(target_zip、new_ab_partitions、arcname = AB_PARTITIONS)
common.ZipClose(target_zip)
リターンTARGET_FILE
デフWriteABOTAPackageWithBrilloScript(TARGET_FILE、output_fileは、
source_fileに=なし):
......
デフWriteABOTAPackageWithBrilloScript(TARGET_FILE、output_fileは、
source_fileに=なし):
source_fileにはNoneでない場合:
target_info = BuildInfo(OPTIONS.target_info_dict、OPTIONS.oem_dicts)
source_info = BuildInfo(OPTIONS.source_info_dict、OPTIONS.oem_dicts)
TARGET_FILE = RemovePreloaderFromZip(TARGET_FILE)
そうしないと: