詳細なOTAアップグレード(2)

青は青から取られ、青は青からです。

氷は水のためですが、水よりも冷たいです。

Xunziの「奨励学習」から

この章では、
      以前のOTAアップグレードの詳細な説明(1)について、主にOTAの基本的な知識について説明してい  ます。この記事の主な内容は、OTAアップグレードパッケージの製造プロセスを詳細に説明し、パッケージの主要な詳細を整理することです。これは、パッケージスクリプトが長く、ファイル数が多いためです。とりあえずスクリプトコメントの形で表示されることはありませんが、説明は主に呼び出し機能シーケンス図+キーステップテキスト記述に基づいており、重複した内容は自動的に省略されます。説明の手順は  Android OTA Updateに基づいています 。プロセスが読者のプロセスと異なっていても心配ありません。全体的なプロセスは次のようになります。追加は一部の詳細と最適化にすぎません。実際の手順に従ってください。

生産工程説明

       エントリポイントとしてアップグレードパッケージota_from_target_filesを作成すると、次のようなパラメーターを渡すことができます。それが、差分パッケージであるか、元のパッケージであるか、ターゲットバージョンパッケージであるか(パッケージ構造は最初に詳細に説明されており、zipパッケージとして渡されます)。以下はメイン機能の基本的なプロセスです

1. ota_from_target_files-mainの一般的なプロセスは、主にいくつかの準備作業であり、コア作業は最後の関数にあります。

2、ota_from_target_files-WriteIncrementalOTAPackage()

ここには4つのパラメータがあります。

input_zip->基本パッケージ

source_zip->ターゲットパッケージ

output_zip->アップグレードパッケージ(近日提供予定)

OPTIONS.fota-> fotaタグ

WriteIncrementalOTAPackage-プロセスは次のとおりです。

重要な注意点:

1. updater-scriptの生成:スクリプト(リスト)からの生成このリストの内容は、さまざまな生成プロセス中の定数の追加から得られ、それぞれが実行コマンドです。

2. ComputePatchは違いを計算します。ファイルタイプが.img、.apk、.jar、.zip、.gzなどの圧縮ファイルの場合、計算にimgdiff実行可能ファイルを使用します。通常のファイルの場合、それを使用します。 bsdiffが計算されます。

3.ファイル権限の問題:システムパーティションにはファイルシステムがあります。ファイルシステム下の各ファイルについて計算された差異はzipパッケージに保存されません。新しいファイルまたは変更されたファイルのgid、uid、およびモードは保存されません。その他の属性。新しく追加されたファイルまたは権限変更ファイルの権限を変更する必要があります。システムが正常に実行されていること、またはアプリに実行権限があることを確認してください。ファイルのアクセス許可を取得する2つの方法の1つは、ファイルの絶対パスを読み取ってこの情報を取得するfs_config(ハードコーディングされた方法で比較的固定)と、META / filesystem_config.txtにある元のパッケージから取得する方法です。、これには、元のパッケージを生成するときに、ファイルのアクセス許可がこのファイルに保存され、ファイル形式がfs_configを使用して生成されたものと一致している必要があります。最後に、set_perm_recursive / set_permを使用して、ディレクトリとファイルの権限を復元します。

フォーマット絶対パスgid uidモード   

例:system / etc / dbus.conf 1000 1000 440           

4. update-binary:次のようにターゲットパッケージの場所から:OTA / bin / updater

5. sha値はどこから取得されますオリジナルファイルとターゲットファイルは、has1値を照合することによってLoadSystemFiles関数で計算されます

上記の手順の後、差分パケットを生成できます。構造は次のとおりです(サンプル)。

対応するupdater-scriptは次のとおりです(サンプル)。

上記は、スクリプトを使用してOTA差分パッケージを作成するプロセス全体です。

 

       私はプロのpythonではないので、いくつかの場所での説明はあまり合理的ではないかもしれません。bsdiffとimgdiffアルゴリズムは注意深く研究されていません。現在の焦点はメインプロセスです。

        上記の内容を理解した後、アップグレードパッケージへの他の新しいファイルの追加、プロセスキーワードの説明の追加など、このツールにパーソナライズされた変更を加えることができます。しかし、これらの内容を知っていても、多くの人々はOTAのアップグレードについて混乱しています。次に、この章の内容に基づいて、次のセクションでOTAのアップグレードプロセスを詳細に説明します。次の章の後、全員がアップグレードパッケージの各ファイルの詳細を理解します存在の役割と重要性、およびリカバリでは、コアコンポーネントのupdater-scriptupdate-binaryを使用して、差分パッケージ全体のアップグレード完了しますので、しばらくお待ちください。

                                  

                                               QRコードを長押しすると、[埋め込みC部族]に従って、より多くのプログラミング情報と重要な記事を見ることができます

おすすめ

転載: blog.csdn.net/weixin_35933684/article/details/102849358