Skip to content

Android アプリ差分更新完全統合ドキュメント (UpgradeLink + DiffUpdater ベース)

I. 差分更新のコアコンセプト

差分更新(インクリメンタル更新とも呼ばれます)は、効率的なアプリ更新ソリューションです。そのコアロジックは:アプリを更新する際に、完全なターゲットバージョンのインストールパッケージ(APKパッケージ)ではなく、現在のバージョンとターゲットバージョンの差分部分(通常「パッチパッケージ」と呼ばれます)のみをダウンロードすることです。

従来のフル更新と比較して、差分更新のコアメリットは以下の通りです:

  1. データ消費の削減:パッチパッケージのサイズは完全なAPKの10%-30%程度(バージョン差分に依存)であり、更新時のユーザーのネットワークデータコストを大幅に削減します;
  2. 更新効率の向上:小さなパッチパッケージはより速くダウンロードされ、特に弱いネットワーク環境での更新待ち時間を短縮します;
  3. サーバー負荷の軽減:サーバーは小サイズのパッチパッケージの配布のみを必要とし、帯域幅使用量とストレージオーバーヘッドを削減します。

その基盤となる原理は、特定のアルゴリズム(BSDiff、HDiffPatchなど)を通じて新旧APKファイルのバイナリデータを比較し、差分コンテンツを抽出してパッチパッケージを生成することです。クライアントがパッチパッケージをダウンロードした後、ローカルの旧APKとマージして完全なターゲットバージョンAPKを生成し、最終的にインストールと更新を完了します。

II. コアシステムの紹介

UpgradeLinkは差分更新ソリューションのバックエンドサービスのコアであり、更新プロセス全体に必要な基本機能と設定サポートを提供することに特化しており、開発者がバックエンドロジックの実装の詳細に注意を払う必要がありません。

コア機能:

  1. バージョン管理:アプリの履歴バージョンとターゲットバージョン情報の維持をサポートし、各バージョンのAPKパッケージとパッチパッケージのストレージアドレスを記録します;
  2. 更新ルール設定:強制更新/オプション更新、チャネル固有の更新、バージョン範囲制限などのルールの設定を許可します;
  3. パッチパッケージの生成とストレージ:差分アルゴリズムとインターフェースし、新旧バージョンのAPKに基づいて自動的にパッチパッケージを生成・保存し、安定したダウンロードリンクを提供します;
  4. 更新ステータス検証:クライアントからのバージョンクエリリクエストを受信し、ターゲットバージョン情報、パッチパッケージアドレス、更新ルールなどのコアデータを返します;
  5. 互換性サポート:異なるAndroidシステムバージョンとアーキテクチャのデバイスに適応し、更新プロセスの汎用性を確保します。

コア価値:

クライアントに「ワンストップ」の更新決定サポートを提供します。開発者は独立した更新バックエンドを構築する必要がなく、そのAPIを呼び出すことで更新に必要なすべての設定情報を迅速に取得でき、フロントエンドの更新インタラクションとロジック処理に集中できます。

(II) DiffUpdater: Android 差分更新 SDK

DiffUpdaterは、Androidアプリ向けに特別に設計された軽量な差分更新開発ツールキットです。クライアント側でのパッチパッケージのダウンロード、マージ、インストールなどの具体的な操作を担当し、使いやすさとカスタマイズ性を特徴としています。

コア機能:

  1. パッチパッケージ処理:主流の差分アルゴリズム(patchAlgoパラメータを通じて指定可能)をサポートし、ローカルの旧APKとダウンロードしたパッチパッケージを効率的にマージして完全なターゲットバージョンAPKを生成します;
  2. ダウンロード管理:パッチパッケージのダウンロード機能を内蔵し、ブレークポイントからの再開、ダウンロード進捗の監視、ダウンロード失敗後の自動再試行をサポートします;
  3. インストール適応:Androidシステムのインストール権限申請、APKファイル検証(MD5/SHA)、サイレントインストール(システム権限が必要)、または手動インストールガイダンスを自動的に処理します;
  4. ステータスコールバック:ダウンロード進捗、マージステータス、インストール結果などのキーイベントをアプリに返し、フロントエンドUIによる更新ステータスの表示を容易にします;
  5. カスタマイズサポート:カスタムダウンロードパス、更新ポップアップスタイル、障害処理ロジックなどをサポートし、異なるアプリのインタラクションニーズに適応します。

コアメリット:

  • 軽量で依存関係なし:SDKサイズが小さく、追加の余分な依存関係がなく、アプリパッケージサイズの増加を回避します;
  • 安定して効率的:最適化されたマージアルゴリズム、低メモリ使用量、高速なマージ速度、低構成デバイスとの互換性;
  • 統合が容易:簡潔なAPIインターフェースを提供し、開発者は差分マージの基盤実装に注意を払うことなく、迅速に統合できます。
  1. フロントエンドが更新チェックをトリガー:アプリの起動後またはユーザーが手動で更新をトリガーした後、フロントエンドUIが更新クエリステータスを表示します。patchAlgoパラメータ(差分アルゴリズムを選択)を指定することで、UpgradeLinkのAPIインターフェースを呼び出し、現在のアプリバージョン番号とチャネル番号などの情報を渡します;
  2. バックエンドが更新設定を返す:UpgradeLinkは渡されたパラメータに基づいて更新ルールを検証し、結果を返します(差分更新がサポートされている場合、パッチパッケージアドレス、ターゲットバージョン番号、検証情報などを返します;サポートされていない場合、フルAPKアドレスを返し、フル更新プロセスに従います);
  3. クライアントがパッチパッケージを処理:DiffUpdaterはUpgradeLinkから返されたパッチパッケージアドレスを受け取り、パッチパッケージのダウンロードを開始し(進捗監視付き)、ダウンロード完了後にファイルの整合性を検証します;
  4. 差分マージによる新APKの生成:DiffUpdaterは指定された差分アルゴリズムを呼び出して、ローカルの旧バージョンAPKとダウンロードしたパッチパッケージをマージし、完全なターゲットバージョンAPKを生成し、ファイルが正しいことを確認するためにMD5検証を実行します;
  5. インストールと更新のトリガー:DiffUpdaterは自動的にインストール権限を申請し、ユーザーにターゲットバージョンAPKのインストールをガイドし、インストール後にアプリが自動的に新バージョンを起動します;
  6. 例外処理:ダウンロード失敗、マージ失敗、またはインストール失敗が発生した場合、システムは自動的に失敗ステータスをコールバックし、ユーザーは操作の再試行またはフル更新プロセスへの切り替えを選択できます。

IV. コアサマリー

  • UpgradeLinkは「バックエンドサポート」を担当:更新ルール、バージョン情報、パッチパッケージリソースを提供し、「何を更新し、どのように更新するか」の決定問題を解決します;
  • DiffUpdaterは「フロントエンド実行」を担当:パッチパッケージのダウンロード、マージ、インストールを完了し、「更新をどのように実装するか」の実行問題を解決します;
  • この2つが連携することで、「バックエンド設定 - フロントエンド実行」の完全な差分更新ソリューションを形成し、開発者が最低コストで効率的かつデータを節約するアプリ更新機能を実装するのを支援し、ユーザーエクスペリエンスと開発効率を向上させます。

toolsetlink@163.com