コンテンツへスキップ

Debugging

クラウド拒否コードを取得し、具体的な修復手順が必要な場合は、一般的な更新の問題 を参照してください。

バックエンドから送信される|コード |説明 |

Section titled “バックエンドから送信される|コード |説明 |”

| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 無効な IP |ユーザーは Google データ センターにおり、更新されてから 4 時間以内です。これは、Google ボットのデバイスがアカウント内のデバイスとしてカウントされないようにするために行われます。 | | needPlanUpgrade (以前は needUpgrade) |プランの制限に達しており、アップグレードするか翌月までデバイスはアップデートを受信できないことを示します。 | | 新規なし |デバイスには利用可能な最新バージョンがインストールされています。 | | PlatformIos を無効にする |デバイスは iOS プラットフォーム上にありますが、チャネル設定で無効になっています。 | | PlatformAndroid を無効にする |デバイスは Android プラットフォーム上にありますが、チャネル設定で無効になっています。 | | 自動更新を無効にする | 「メジャー」 | 「マイナー」 | “バージョン番号” | “なし” | | AutoUpdateUnderNative を無効にする |デバイスにはバージョン (1.2.3) があり、チャネルには送信するデバイス バージョンの下にアップデート (1.2.2) がありますが、これはチャネル設定で無効になっています。 | | DevBuild を無効にする |デバイスには開発ビルドがありますが、チャネル設定で無効になっています。 | | エミュレータを無効にする |デバイスはエミュレータですが、チャネル設定で無効になっています。 | | バンドルを入手できません |バンドルのダウンロード用の有効な署名付き URL を生成できませんでした。これは、バンドル URL の生成が失敗するか、無効な URL (http/https で始まらない) が返され、フォールバックとして使用できるマニフェストがない場合に発生します。 | | プライベート チャネル経由で更新できません |デバイスはプライベート チャネルと自己アソシエートしようとしましたが、チャネル設定ではデバイスの自己アソシエーションが許可されておらず (allow_device_self_set が false)、チャネルはパブリックではありません。 | | チャンネルの設定が間違っています |チャネルは無効になるように構成されていますファイルはバージョン番号 (disable_auto_update: 'version_number') によって自動更新されますが、バンドルの min_update_version フィールドが null であるため、どのデバイスが更新を受信するかを判断できません。 | | AutoUpdateMetadata を無効にする |自動更新はバージョン番号メタデータによって無効になっています。チャネルではデバイスのバージョンが少なくとも min_update_version である必要がありますが、デバイスの現在のバージョンはこのしきい値よりも低いです。 | | AutoUpdateToMajor を無効にする |チャネル設定 disable_auto_update: 'major' は、メジャー バージョン番号を増やす更新を防止します (例: 1.x.x から 2.x.x への更新をブロックします)。 | | AutoUpdateToMinor を無効にする |チャネル設定 disable_auto_update: 'minor' は、マイナー バージョン番号を増やす更新を防止します (例: 1.2.x から 1.3.x への更新をブロックします)。 | | AutoUpdateToPatch を無効にする |チャネル設定 disable_auto_update: 'patch' は、パッチ バージョン番号を増やす更新を禁止するか、同じメジャー バージョンおよびマイナー バージョン内のパッチレベルの更新のみを許可します (たとえば、1.2.3 は 1.2.4 に更新できますが、1.2.2 または 1.3.0 には更新できません)。 | | バンドルが見つかりません |このチャンネルに割り当てられたバンドルにはダウンロード可能なコンテンツがありません。これは、バンドルには external_urlr2_path もなく、組み込みバージョンではなく、ダウンロードできるマニフェスト エントリもないことを意味します。 | | NoChannelOrOverride |このアプリにはデフォルトのチャネルが構成されておらず、デバイスには特定のチャネル オーバーライドが割り当てられていません。更新が機能するには、少なくとも 1 つが存在する必要があります。 | | レート制限 |過剰なリクエストにより、デバイスはレート制限されています。 | | キーが一致しません |デバイスの暗号化公開キーが、バンドルの暗号化に使用された公開キーと一致しません。これは、(1) アプリの capacitor.config.json 内の公開キーがバンドルのアップロード時に使用したものと異なる、または (2) 暗号化キーをローテーションしたが、まだすべてのデバイスを更新していない場合に発生します。応答には、不一致の特定に役立つ deviceKeyIdbundleKeyId (各公開鍵の最初の 4 文字) の両方が含まれています。これを修正するには、バンドルのアップロード (CLI は秘密キーを使用) とアプリ (capacitor.config.json には公開キーが含まれています) の両方で同じキー ペアが使用されていることを確認します。 |### デバイスから送信|コード |説明 | | --------------------- | ---------------------------------------------------------------------------------- | | ピン |統計システムが正しく動作していることを確認するために使用される内部テスト アクション。 | | 入手 |新しいバージョンをダウンロードするための情報がデバイスに送信されました。 | | 削除 |デバイス上で 1 つのバンドルが削除されました。 | | セット |デバイスにバンドルが設定されました。 | | set_fail |バンドルの設定に失敗しました。 | | リセット |デバイスは builtin バンドルにリセットされました。 | | ダウンロード_XX |新しいバンドルがダウンロードされました - 進行状況は XX% (10% ずつ増分) で示されます。 | | ダウンロード_完了 |新しいバンドルのダウンロードが完了しました。 | | download_manifest_start |デバイスは更新マニフェストのダウンロードを開始しました。 | | download_manifest_complete |デバイスは更新マニフェストのダウンロードを完了しました。 | | download_zip_start |デバイスはバンドル アーカイブのダウンロードを開始しました。 | | download_zip_complete |デバイスはバンドル アーカイブのダウンロードを完了しました。 | | download_manifest_file_fail | 1 つのマニフェスト エントリのダウンロードに失敗しました。統計ペイロードは、version_nameversion:fileName の形式で配置して、アセットを特定します。 | | download_manifest_checksum_fail |マニフェスト ファイルのチェックサム検証に失敗しました。 | | download_manifest_brotli_fail | Brotli を使用したマニフェスト ファイルの解凍に失敗しました。 | | ダウンロード_失敗 |新しいバンドルのダウンロードに失敗しました。 | | 更新失敗 |新しいバンドルはインストールされましたが、notifyAppReady の呼び出しに失敗しました。 | | チェックサム_失敗 |新しいバンドルはチェックサムを検証できませんでした。これはいくつかの理由で発生する可能性があります: 1) チェックサム タイプの不一致: CLI の最新バージョンとプラグイン (バージョン 5.10.0+、6.25.0+、または 7+) は SHA256 チェックサムを使用しますが、古いプラグインは CRC32 を使用します。チェックサムが失敗した場合は、チェックサムが SHA256 ではなく CRC32 (短いハッシュ) であるかどうかを確認してください。これは通常、バンドルが CLI の古いバージョンでアップロードされたことを示します。 Capgo ダッシュボードでバンドルのバージョンを確認します。バージョン 5.10.0/6.25.0/7 以降に作成されたバンドルは SHA256 を使用する必要があります。 CRC32 チェックサムが表示される場合は、最新のプラグイン バージョンがローカルにインストールされていることを確認してから (CLI がローカル プラグイン バージョンをチェックして、アップロードするチェックサム タイプを決定します)、CLI をアップグレードしてバンドルを再アップロードします。 2) 暗号化キーの不一致 (8.3.0 または 5/6/7.38.0 より前のプラグイン バージョン): 古いプラグイン バージョンでは、デバイスの公開キーがバンドルの暗号化に使用されたキーと一致しない場合、復号化はサイレントに失敗し、チェックサム エラーが発生します。暗号化を使用していて checksum_fail が表示される場合は、アプリの capacitor.config.json の公開キーがバンドルのアップロードに使用された秘密キーと一致することを確認してください。プラグイン バージョン 8.3.0 以降 (または 5/6/7.38.0 以降) にアップグレードすると、代わりにサーバーから適切な keyMismatch エラーが返されるため、この問題の診断が容易になります。 | | windows_path_fail | zip には、違法な Windows パスを含むファイルが含まれています。 | canonical_path_fail |ファイルのパスが正規ではありません | | ディレクトリパス_失敗 | zip ファイルのパスにエラーがあります | | 解凍失敗 |解凍に失敗しました | | low_mem_fail |デバイスのメモリ不足のためダウンロードに失敗しました | | app_moved_to_background |アプリケーションはバックグラウンド状態に入りました。 | | app_moved_to_foreground |アプリケーションはフォアグラウンド状態になりました。 | | 復号化失敗 |ダウンロードしたバンドルの復号化に失敗しました。 | | getChannel |デバイスの現在のチャネルが照会されました。 | | セットチャンネル |デバイスのチャネルが正常に設定されました。 | | アンインストール |アプリケーションがアンインストールされたか、Capgo データがクリアされました。 | | サーバー URL によってブロックされました | Server.url がコンデンサ設定に存在します。これにより、Capacitor はリモート URL を提供し、ローカル ファイルを無視します。一方、アップデータはローカル ファイルで機能するように作られています。Server.url は、Capacitor メーカーによって運用環境での悪い習慣と見なされ、多くの問題が発生し、プラグインが正しく動作しなくなる可能性があります。 |### バンドルのステータス

  • SUCCESS: バンドルのインストールが完了しました
  • ERROR: インストールまたはダウンロードに失敗しました
  • PENDING: ダウンロード完了、リリース保留中
  • DELETED: バンドルは削除されましたが、統計情報にはまだ表示されています
  • DOWNLOADING: 現在バンドルをダウンロード中

Capgo クラウド ユーザー向けのデバッグ コマンドがあります。

Terminal window
npx @capgo/cli@latest app debug

これにより、アプリ内で発生しているすべてのイベントを確認し、更新が行われない場合の解決策を見つけることができます。

Xcode でログを見つけるには

Android スタジオでログを見つけるには

  • 「からのダウンロードに失敗しました」 => download_fail と同じ
  • notifyAppReady が呼び出されませんでした。現在のバンドルをロールバックします => update_fail と同じ

デバイス内でダウンロードしたバンドルを見つける

Section titled “デバイス内でダウンロードしたバンドルを見つける”

iOS でデバッグするには、コンピューターにアプリをダンプする必要があります。次のように実行できます。

Xcode には、開発者が iOS デバイスにインストールしたアプリのファイル システムを検査するための機能が組み込まれています。 Xcode デバイスとシミュレータのオプションを表示するウィンドウ メニュー

これを達成するには:

  • デバイスを Mac に接続し、Xcode メニューバーで [ウィンドウ] > [デバイス] を選択します。
  • [デバイス] セクションの左側のペインでデバイスを選択します。
  • これにより、そのデバイスに開発者がインストールしたアプリのリストが表示されます。
  • 検査したいアプリを選択し、画面の下部近くにある 3 つの点のアイコンを選択します。
  • ここで、[スナップショットのダウンロード] を選択すると、現在のファイル システムを表示できます。

Xcode アプリ コンテナのダウンロード オプションを表示するデバイス パネル

[コンテナーのダウンロード…] を選択すると、ファイル システムのスナップショットが .xcappdata ファイルとしてダウンロードされ、参照できるようにエクスポートされます。

パッケージの内容を表示コンテキスト メニューでダウンロードされた xcappdata ファイル

このファイルを右クリックし、「パッケージの内容を表示」を選択してフォルダーを開きます。

App Data フォルダーを開くと、Documents、Library、tmp などのフォルダーがいくつか表示されるはずです。

iOS ドキュメント フォルダーとライブラリ フォルダーを示すアプリ コンテナーのフォルダー構造

次に、2 つのフォルダーにバージョンが見つかります。

library/NoCloud/ionic_built_snapshots はアプリの再起動後に必要です

ホット リロード用の documents/versions

Android でデバッグするには、Android Studio からデバイスにアクセスする必要があります。

  • [表示] > [ツール ウィンドウ] > [デバイス ファイル エクスプローラー] をクリックするか、ツール ウィンドウ バーの [デバイス ファイル エクスプローラー] ボタンをクリックして、デバイス ファイル エクスプローラーを開きます。
  • ドロップダウン リストからデバイスを選択します。
  • パス data/data/APP_NAME/ を開きます。APP_NAME はアプリ ID です。

Android アプリ データ ディレクトリを表示する Studio デバイス ファイル エクスプローラー

次に、versions フォルダーを見つけて、すべてのバージョンを確認します。

iOS 本番クラッシュ ログについて

Section titled “iOS 本番クラッシュ ログについて”