メインコンテンツにジャンプ

デバッグ

GitHub

クラウド拒否の場合、code が必要な場合は、より深い対処法のウォークスルーを参照してください。 一般的なアップデート問題.

Capgo ログにはイベントのメタデータが含まれています。ダッシュボードで、スネークケースのアクション code でフィルタリングし、メタデータセルをクリックしてフルJSONペイロードをコピーしてください。クラッシュやWebViewイベントの場合、エラーメッセージ、ソースURL、行番号、列番号、プロセス状態、メモリ圧力、またはプラットフォーム固有の理由が含まれることがあります。古いログは、括弧内にリストされているレガシーキャメルケースのエイリアスも表示することがあります。

各セクションのタイトルはコンソールログテーブルのアクション code に対応しているので、直接リンクできます。

料金、制限、またはエラー以外の状態に関連するバックエンド拒否。

What it means

Capgoは、Googleまたはクラウドインフラストラクチャから見えるように見えるトラフィックが検出されました。4時間以内にアップデートされたものは無視されます。そうすると、BOTトラフィックが請求可能なデバイスとしてカウントされないようになります。

What to do

実際のユーザーには無視してください。正常なネットワークと実際のデバイスからリトライしてください、または後で再度確認してください。

What it means

あなたのアプリは、GoogleとAppleのデータセンターIP範囲からのリクエストをブロックするように設定されています。保護はアップデートチェック、統計、チャンネル自体のリクエストに適用されます。そうすると、クラウドホストされたプローブやプロバイダーランナーは、設定が他のところでは有効な場合でも、この応答を受け取ることができます。

What to do

物理デバイスから正常なユーザーネットワークからリトライしてください。プロバイダーオリジナルのトラフィックが意図的である場合、暂時的に「Block provider infrastructure requests」を無効化してください Block provider infrastructure requests アプリ内で 情報 タブに移動し、テスト後に再度有効にする。新しいアプリでは、この設定がデフォルトで有効になっています。既存のアプリでは、変更されるまで前の設定が維持されます。

needPlanUpgrade

「needPlanUpgrade」

何が起こっているか

組織がプランまたはデバイスの制限に達しました。デバイスは、プランをアップグレードするか、次の請求サイクルで使用量がリセットされるまでアップデートを受け取ることができません。

何をするか

ダッシュボードでプランをアップグレードするか、次の請求サイクルを待つ。

何が起こっているか

デバイスが最新のバンドルを取得できるチャンネルにすでに最新のバンドルが存在します。これは正常な状態であり、エラーではありません。

What it means

デバイスが短い期間内に多数のアップデートまたはチャンネル要求を送信したため

What to do

レンダリングループ内でアップデートAPIを呼び続けるのを止め setChannel / getChannel ユーザーアクションからのみ呼び出し defaultChannel バージョンを capacitor.config.

セクション "semver_error"

semver_error

What it means

設定内のネイティブアプリのバージョンが存在しない、または有効なsemverではない

Section titled “Version format”x.y.z).

iOSの更新を無効にしているため、iOSを実行しているデバイスが更新を受け取ることができません。

設定 plugins.CapacitorUpdater.version 有効なsemverに設定し、SemVerテスターで検証し、再構築し、ネイティブアプリを再インストールしてください。 semver検証ツールプラットフォームとビルドのターゲット設定

セクション「disablePlatformIos」

このチャネルではiOSの更新を無効にしているため、iOSを実行しているデバイスが更新を受け取ることができません。

何をするか

Platform and build targeting

iOSの有効化をチャンネル内で実行するか、iOSビルドを特定のチャンネルにルーティングするかを選択します。

disablePlatformAndroid

「disablePlatformAndroid」

これは何を意味しますか?

このチャンネルでは、Androidの更新が有効になっていません。

何をするべきですか?

このチャンネルでAndroidの有効化を実行するか、Androidビルドを特定のチャンネルにルーティングするかを選択します。

disablePlatformElectron

「disablePlatformElectron」

これは何を意味しますか?

このチャンネルでは、Electronの更新が有効になっていません。

何をするべきですか?

このチャンネルでElectronの有効化を実行するか、Electronビルドを特定のチャンネルにルーティングするかを選択します。

disableDevBuild

「disableDevBuild」

これは何を意味しますか

このデバイスは開発用ビルドですが、このチャンネルでは開発用ビルドがブロックされています。

何をするべきですか

テストチャンネルで開発用ビルドを許可するか、このチャンネルはリリース専用にし、開発用デバイスを別の場所に移動するか

これは何を意味しますか

生産用ビルド “ /updates, ですが、このチャンネルでは生産用の更新がブロックされています。

何をするべきですか

このことが間違いだった場合に、このチャンネルで生産用の更新を許可するか、生産用のビルドを正しいチャンネルにルーティングするか

これは何を意味しますか

A real phone or tablet was blocked because this channel blocks real devices.

対処する方法

実機の更新を有効にし、この誤りが偶発的だった場合、または制限を維持し、実機を別のチャネルにルーティングする。

意味

このチャネルではエミュレータの更新が無効になっているが、デバイスはエミュレータである。

対処する方法

エミュレータの更新をテストチャネルで有効にするか、このチャネルでエミュレータをブロックし、エミュレータの検証用に別のチャネルを使用する。

バックエンドの拒否が、semverまたはメタデータのルールでターゲットパッケージをブロックしたときに発生します。

Auto-updateはチャンネル互換性ポリシーにより無効になっています。

メタデータには auto_update 、または major, minor, patch, metadata何をするか none.

チャンネル間の自動更新ポリシーを変更して、望ましいロールアウトを許可する。

セクション「disableAutoUpdateUnderNative」

チャンネルは、デバイスのベースラインよりも古いバンドルを持っており、ネイティブバージョン下でアップデートを送信するのをブロックしています。

何をするか

ネイティブベースライン以上のバンドルを公開する、またはチャンネルでネイティブ保護を無効にする。

セクション「disableAutoUpdateMetadata」

これは何を意味しますか

このチャンネルは必要とします min_update_versionですが、デバイスのネイティブバージョンはその閾値以下です。

何をするべきですか

ターゲットのバンドルまたはリリースに min_update_version より新しいネイティブバージョンから

これは何を意味しますか

このチャンネルはメジャーバージョンジャンプをブロックします 1.x.x たとえば 2.x.x.

何をするべきですか 一般的なアップデートの問題.

その意味は

チャンネルは、デバイスのネイティブベースラインからのマイナーバージョンジャンプをブロックします(version_build)、たとえば 1.2.31.3.0.

何をするか

チャンネル戦略をマイナーロールアウト計画と合わせるか、このトラックでマイナージャンプを許可するか

その意味は

チャンネルは、同じプレフィックスを維持しながらパッチレベル変更をブロックします。ただし、サフィックス変更のみが許可されます。 MAJOR.MINOR.PATCH prefix; only suffix changes are allowed.

何をするか

リリースのペースをチャンネルポリシーと合わせたり、このトラックにパッチジャンプを許可したりする。

チャンネル設定が欠落しているか、互換性がないため、バックエンドで拒否される原因です。

何が起こっているか

デバイスは、デバイスの自己割り当てを許可していない (allow_device_self_set が false である) プライベートチャンネルと自己割り当てを試みました。

何をするか

チャンネルに を有効にするか、デバイスをパブリックチャンネルまたは許可されたチャンネルに切り替える。 allow_device_self_set 許可する

channelMisconfigured

チャンネル設定ミス

これは何を意味するか

チャンネルは disable_auto_update: "version_number" しかし、バンドルは min_update_version Capgoは、更新するデバイスを決定することができません。なぜなら、バンドルはnullのためです。

何をしましょうか

そのルールの欠落した設定を埋めつつ、またはシンプルな自動更新モードに切り替えましょう。

これは何を意味するか

デフォルトのチャンネルが設定されていません。デバイスにはチャンネルオーバーライドもありません。

何をしましょうか

デフォルトのチャンネルをダッシュボードで設定するか、 defaultChannel ビルド中。

バンドル配信と暗号化

バンドル配信と暗号化

Capgo がバンドルを提供または暗号化できなかった場合のバックエンド拒否

これは何を意味するか

Capgo が有効な署名付きダウンロード URL を生成できず、メニューのフォールバックが利用できなかった

何をするか

バンドルを再アップロードし、メニューを再生成し、R2 またはパブリック バンドル設定を検証する

これは何を意味するか

割り当てられたチャネルにダウンロード可能なコンテンツが存在しない external_url、ない r2_path、標準バージョンではなく、メタデータエントリもない

何をするか

バージョンを再構築し、再アップロードし、バンドルが実際のファイルコンテンツを持つことを確認する

何を意味するか

デバイスの暗号化パブリックキーが、バンドルを暗号化するために使用されたキーと一致しない device_key_id, bundle_key_idメタデータには version.

Compare device and bundle key IDs in the console. Publish with the same key and matching CLI/plugin versions.

コンソールでデバイスとバンドルキーIDを比較する。同じキーと一致する__CAPGO_KEEP_0__/プラグインバージョンで公開する

アプリ設定と古いクライアント

バックエンドの拒否は、アプリの構成または非対応のアップデートバージョンによって引き起こされます。

これは何を意味しますか?

アプリがカスタムデバイスIDを送信しましたが、このアプリはカスタムIDを受け付けないため、IDは無視されます。

何をするべきですか?

カスタムIDの送信を停止するか、カスタムIDを有効にする必要がある場合は、ワークフローで必要なときにのみ有効にすること。

これは何を意味しますか?

server.url はCapacitorの設定で設定されているため、WebViewはローカルバンドルファイルではなくリモートURLを読み込むことになります。Capgoのライブアップデートはローカルファイルが必要であり server.url は生産環境では推奨されません。

何をするべきですか?

削除またはクリアすること server.url 生産用ビルドと、更新パケットをローカルに保持するために使用します。この code は、バックエンドからの拒否またはデバイス側の統計として表示されることがあります。

これは何を意味しますか

アップデート プラグインはバージョン 4 です。バックエンドはこれを認識しません。

何をしますか

プラグインと CLI をバージョン 5 以降 (バージョン 8 を推奨) にアップグレードし、 Capacitor バージョン 5 以降に、再構築し、再公開するバンドル メタデータを実行します。

アップデート ライフサイクル

「アップデート ライフサイクル」

正常なアップデート フロー、有効化、ロールバックのためのデバイス側イベント

これは何を意味しますか

内部テスト アクションで統計_PIPELINE を検証するために使用されます。

Section titled “set”

Capgo sent download information for a new version to the device.

What it means

What it means

Section titled “set”

Section titled “set_fail”

Section titled “set_fail”

What to do npx @capgo/cli@latest app debug What to do notifyAppReady フロー。

これは何を意味するか

デバイスは組み込みのバンドルにリセットされました。

これは何を意味するか

1 つのバンドルがデバイス上で削除されました。

ダウンロードとインストールの失敗

「ダウンロードとインストールの失敗」セクション

ダウンロードの進行状況、アーカイブの検証、インストールのエラーのためのデバイス側のイベント。

これは何を意味するか

ダウンロードのシーケンスは0%の進行度で開始されました。

これは何を意味しますか?

新しいバンドルがダウンロードされました — 進行度は10%です。

これは何を意味しますか?

新しいバンドルがダウンロードされました — 進行度は20%です。

これは何を意味しますか?

新しいバンドルがダウンロードされました — 進行度は30%です。

これは何を意味しますか?

A new bundle has been downloaded — progress indicated at 40%.

download_50の意味

A new bundle has been downloaded — progress indicated at 50%.

download_60の意味

A new bundle has been downloaded — progress indicated at 60%.

download_70の意味

A new bundle has been downloaded — progress indicated at 70%.

download_80の意味

A new bundle has been downloaded — progress indicated at 80%.

What it means

A new bundle has been downloaded — progress indicated at 90%.

download_complete

ダウンロード完了

What it means

バンドルダウンロードは正常に完了しました。

What it means

デバイスはアップデートマニフェストのダウンロードを開始しました。

What it means

The device finished downloading the update manifest.

download_zip_start

download_zip_start

What it means

The device started downloading the bundle archive.

download_zip_complete

download_zip_complete

What it means

The device finished downloading the bundle archive.

download_manifest_file_fail

download_manifest_file_fail

What it means

One manifest entry failed to download. version_name uses version:fileName to identify the asset.

対処方法

アセットが欠落しているかブロックされている場合は修正し、再度マニフェストを生成し、バンドルをアップロードしてください。

意味

マニフェストファイルのチェックサム検証に失敗しました。

対処方法

最新のCLIバージョンのバンドルを再度アップロードし、マニフェストチェックサムを検証してください。

意味

マニフェストファイルのブロリ解凍に失敗しました。

対処方法

圧縮設定を確認し、影響を受けたアセットを再度アップロードしてください。

意味

ダウンロードに失敗した

対処

ネットワーク接続、署名URLの有効期限、CDNのアクセス性、デバイスのストレージを確認してください。

意味

アップデートは成功しましたが、アプリが呼び出さなかったため、__CAPGO_KEEP_0__はロールバックされました。 notifyAppReady, so Capgo rolled back.

アプリが起動した後すぐに呼び出してください。

ロギング notifyAppReady() context notifyAppReady was not called, roll back current bundle codeにマップします。

これは何を意味しますか

ダウンロードしたバンドルはチェックサム検証に失敗しました。一般的な原因:古いCLIのアップロードから生じたCRC32とSHA256の不一致、または古いプラグインで暗号化エラーをチェックサムエラーとして表現する暗号化キー不一致。

何をしましょうか

最新のCLI/プラグイン (SHA256) を再アップロードしてください。暗号化を使用している場合、アップロードキーとアプリパブリックキーが一致していることを確認し、またはプラグイン 8.3.0+ にアップグレードして明示的な keyMismatch 「暗号化_失敗」

ダウンロードしたバンドルは暗号化に失敗しました。

何をしましょうか

暗号化キーを確認し、対応するキーを使用してバンドルを再アップロードしてください。

__CAPGO_KEEP_0__にマップします。

これは何を意味するか

zipファイルに不正なWindowsスタイルのパスが含まれています。

何をするか

Unixパスでバンドルを再構築するか、またはアップロードする前にアーカイブパスをサニタイズする。

これは何を意味するか

zipファイル内のファイルパスがcanonicalではありません。

何をするか

アップロードする前にアーカイブパス生成を修正する。

これは何を意味するか

zipファイルに不正なディレクトリパスが含まれています。

どうすればいいか

アップロードする前にアーカイブ構造を修正してください。

これは何を意味するか

デバイスはダウンロードしたバンドルを展開できませんでした。

どうすればいいか

アーカイブの整合性を確認し、サポートされている圧縮形式を確認してください。

これは何を意味するか

ダウンロードが失敗したのは、デバイスがメモリ不足でした。

どうすればいいか

バンドルサイズを削減または、より多くのフリーメモリを持つデバイスで再試行してください。

アプリの健康とWebViewイベント

アプリの健康とWebViewイベント

デバイス側のクラッシュ、メモリ、WebView診断。常にダッシュボードでメタデータJSONを検査してください。

これは何を意味しますか

アプリがフォアグラウンドに移動しました

app_moved_to_foreground

これは何を意味しますか

アプリがクラッシュしました

これは何を意味しますか

app_moved_to_foreground

JavaScript または Capacitor層のクラッシュ。メタデータにはメッセージ、スタック、ソース、そしてアクティブなバンドルコンテキストが含まれます。

何をするか

メタデータとネイティブログを検査する。JSとネイティブエラー報告をペアする(例えばSentry)で、失敗した code パスを特定する。

何を意味するか

ネイティブプラットフォームのクラッシュ。メタデータにはプラットフォーム、理由、スタック、プロセス詳細が含まれます。

何をするか

XcodeまたはLogcatクラッシュログを使用し、メタデータのアクティブなバンドルと照合する。

何を意味するか

Androidアプリケーションが応答しないイベント。

何をするか

アップデート後、LogcatでANRトレースを検査し、メインスレッドのブロッキングワークを削減する。

これは何を意味するか

OSはメモリ圧力のためにアプリを殺した。

何をするか

アップデートアクティベーション後、メモリ使用量を削減し、利用可能なメモリシグナルを検査する。

これは何を意味するか

OSはアプリを過剰なリソース使用のために殺した。

何をするか

リソースタイプまたはプラットフォームの理由を検査するためのメタデータを検査する。

アップデータの意味

正常な実行が可能になる前にアップデータまたは起動が失敗した

何をするか

失敗したステップとエラーメッセージを調べる

アップデータの意味

iOSのメモリ警告

何をするか

メタデータのメモリコンテキストを調べ、更新後にピーク使用率を削減する

アップデータの意味

WebView内で未処理のJavaScriptエラーが発生した。メタデータにはメッセージ、ソースURL、行、列、スタックが含まれる

何をするか

JSとネイティブレイヤーでエラー報告をインストールして、実行中のプロダクションで正確に失敗する行をキャプチャする。

何を意味するか

WebView内で未処理のプロミス拒否が発生します。

何をするか

JSとネイティブエラー報告で非同期失敗をキャプチャする。

何を意味するか

WebViewのリソースがロードに失敗しました。

何をするか

メタデータURLとステータス詳細を使用して、破損したアセットまたはネットワークルールを修正する。

これは何を意味しますか

コンテンツ セキュリティ ポリシーがリソースをブロックしました。

何をしますか

メタデータ ディレクティブとブロックされた URI の詳細を使用して CSP を調整します。

これは何を意味しますか

前の WebView セッションが正常に終了せず、更新後にクラッシュ ループが発生する可能性があります。

何をしますか

クラッシュと WebView エラー イベントの前後を照合してください。

これは何を意味しますか

Android WebView レンダラー プロセスが終了しました。

何をするか

メタデータとネイティブログにレンダラークラッシュシグナルを検査する。

何を意味するか

iOS WebView コンテンツプロセスが終了しました。

何をするか

メタデータからアクティブなバンドルとページURLを検査する。

環境とチャンネルコンテキスト

「環境とチャンネルコンテキスト」セクション

デバイス側のコンテキストイベントが、OS、ネイティブバージョン、またはチャンネル変更とアップデート動作を関連付けるのに役立ちます。

それが意味する

デバイスのOSバージョンがチェック間で変更された

native_app_version_changed

「native_app_version_changed」

それが意味する

ネイティブアプリのストアバージョンが変更され、ネイティブとウェブのバンドル変更を分離するのに役立った

それが意味する

デバイスが現在のチャンネルを確認した

それが意味する

デバイスにチャンネルが正常に設定された

これは何を意味しますか

アプリがアンインストールされました、またはCapgoデータが削除されました。

バンドルの状態

バンドルの状態
  • SUCCESS: バンドルをインストールしました
  • ERROR: インストールまたはダウンロードに失敗しました
  • PENDING: ダウンロードが完了しましたが、リリース待ち
  • DELETED: バンドルが削除されましたが、統計用に表示されます
  • DOWNLOADING: 現在バンドルをダウンロード中です

デバイスログを理解する

デバイスログを理解する

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

ターミナルウィンドウ
npx @capgo/cli@latest app debug

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

iOSネイティブログ

Xcodeでログを確認する方法

iOSデバイスログをXcodeで取得する

セクションのタイトル “Androidネイティブログ”

Android Studioでログを確認する方法

セクションのタイトル “iOSネイティブログ”

ネイティブログのフレーズマッピング

ネイティブログのフレーズマッピング
  • Failed to download from にマップ download_fail
  • notifyAppReady was not called, roll back current bundle にマップ update_fail

デバイス上でダウンロードしたバンドルを探す

デバイス上でダウンロードしたバンドルを探す

iOS

iOS

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

Xcodeには、iOSデバイスにインストールされた開発者用のアプリのファイルシステムを検査するための組み込み機能があります。 デバイスとシミュレータのオプション

To achieve this:

  • Macに接続したあと、Xcodeのメニューバーの「Window > Devices」を選択してください。
  • 左のペインの「Devices」セクションの下で、デバイスを選択してください。
  • このデバイスにインストールされている開発者用アプリのリストが表示されます。
  • インストールしたアプリを選択し、画面の下部の「3点」アイコンを選択してください。
  • ここで、ファイルシステムの現在の状態を確認することができます。ファイルシステムのスナップショットをダウンロードすることもできます。

Xcode Devicesパネルにアプリコンテナダウンロードオプションが表示されます。

「Download Container…」を選択すると、ファイルシステムのスナップショットがダウンロードされ、.xcappdataファイルとしてエクスポートされます。このファイルを閲覧することができます。

ダウンロードしたxcappdataファイルに右クリックし、「Show Package Contents」を選択してください。

このファイルを開くと、フォルダが表示されます。

App Dataフォルダを開くと、Documents、Library、tmpなどのフォルダが表示されます。

iOSアプリコンテナフォルダ構造が表示されます。

次に、2つのフォルダ内にバージョンを見つけることができます:

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

そして documents/versions ホットリロード用

Android

Android

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

  • デバイスファイルエクスプローラーを開くには、View > Tool Windows > Device File Explorerまたはツールウィンドウバーのデバイスファイルエクスプローラー ボタンをクリックしてください。
  • デバイスのドロップダウンリストからデバイスを選択してください。
  • パスを開く data/data/APP_NAME/ ここで APP_NAMEはアプリIDです。

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

次に versions フォルダを見つけてみて

iOSの生産環境でのクラッシュログの理解

「iOSの生産環境でのクラッシュログの理解」のセクション

Capgoを使用している場合 デバッグ ネイティブ プラグインの作業を計画するには、Capgoを Using @capgo/capacitor-updater for the native capability in Using @capgo/capacitor-updater, Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, プラグインの追加または更新 プラグインの追加または更新の実装詳細 Ionic Enterprise プラグインの代替 Ionic Enterprise プラグイン代替品の製品ワークフローについて。