デバッグとトラブルシューティング

このセクションでは、効果的なデバッグとトラブルシューティングのテクニック、一般的な問題、洞察に富んだログの生成方法について説明します。

一般的な問題

問題が発生した場合は、まず最小要件サポートされるデバイスChangeLogに掲載されている既知の問題のリストを確認してください。

  • **空白の白いマップのみが表示されます。**ご利用のHERE Credentialsが有効で、「利用開始」セクションの説明に従って設定されていることを確認してください。また、ご利用のデバイスがインターネットに接続できることを確認してください。インターネット接続が遅い場合、最初に読み込まれたマップ タイルが表示されるまでにしばらくかかることがあります。また、デバイスの時刻が正しく設定されていることを確認してください。まれに、デバイスの時間が正しく設定されていないと、一部のバックエンド サービスで認証の問題が発生する可能性があります。

  • **ログに "No map content will be displayed until valid config is provided." と表示される:**コードで実際に loadScene() を呼び出していることを確認してください。

  • Xcode で MapView が不明というエラーが発生しました。はじめに」セクションで説明されているように、HERE SDK フレームワークを統合してください。

  • **Xcode で heresdk のモジュール定義がロードされません:**これはrdar://42087654として知られているXcode SourceKitエラーです。「はじめに」セクションで説明されているように、HERE SDKフレームワークを統合してください。また、プロジェクトおよびフレームワークへのパスにスペース記号が含まれていないことを確認してください。

  • **Xcode でシミュレーター用のプロジェクトがコンパイルされません。M1 チップを搭載したコンピューターを使用しています。**4.9.2.0 よりも前の HERE SDK バージョンを使用しています。新しい HERE SDK バージョンを使用するか、Xcode 内の Build Settings/Architectures/Excluded Architectures/Debug 設定で [Any iOS Simulator SDK](任意の iOS シミュレーター SDK) の ARM64 アーキテクチャを除外して Rosetta モードで実行してみてください。[TARGETS](ターゲット) 設定でこのオプションを選択します。この場合シミュレーターを実行すると、パフォーマンスがわずかに低下することがあります。

  • マップが表示されないか、HERE SDK が何も呼び出しません。"These credentials do not authorize access" というログ メッセージが表示された場合は、資格情報が有効ではありません。有効な資格情報を使用していることを確認してください。3.xバージョンの資格情報には互換性がありません。Exploreの資格情報はNavigateと互換性がありません。

  • **iOSリリース用に構築すると、構築が失敗します。**ログに -embed-bitcode の実行が記録されている場合は、ビットコードの最適化を明示的に無効にしてください。Apple はビットコードを廃止したため、現在 HERE SDK ではビットコードをサポートしていません。デバッグとリリースの Xcode 構築設定に ENABLE_BITCODE = NO; を追加します。

  • Xcode で [Archive](アーカイブ) オプションがグレー表示になっているか、無効になっています。[Archive](アーカイブ) オプションが無効になっている最も一般的な理由は、アクティブなスキームとしてシミュレーターが選択されていることです。物理デバイスがあるか、アクティブなスキーム ドロップダウン メニューで [Generic iOS Device](一般的な iOS デバイス) オプションが選択されていることを確認します。もう 1 つの原因として、ワークスペースの設定に誤りがある可能性があります。プロジェクト ナビゲーターでワークスペースをクリックし、[Edit Scheme](スキームを編集) をクリックします。[Build](構築) タブで、ターゲットの[Archive](アーカイブ) チェックボックスがオンになっていることを確認します。

  • **大規模な更新やストレージの急増を避けてオフラインマップを管理するには、**Navigateライセンスを使用する場合、MapDownloaderでインストール済みのRegionsをクエリして、ダウンロード済み地域を監視し、更新サイズを見積もり、不必要なダウンロードを避けます。更新をトリガーする前に、既存の地域サイズを比較してください。より細かく制御する場合は、自動更新を無効にします。詳細については、こちらを参照してください。

ログレベルで指定する

LogControlクラスでは、アプリのリリースビルドであっても、事前定義されたさまざまなLogLevel値のHERE SDKメッセージをログに記録できます。LogControlは必ずHERE SDKを初期化する前に呼び出してください。

// Disable any logs from HERE SDK.
// Make sure to call this before initializing the HERE SDK.
LogControl.disableLoggingToConsole()

上のコマンドにより、HERE SDK関連のすべてのコンソールログを無効化できます。なお、問題を調査する際に重要となるログメッセージが失われる可能性があるため、デバッグ ビルドではこれはお勧めしません。

ログ レベルは次のように指定できます。

// Make sure to call this before initializing the HERE SDK.
LogControl.enableLoggingToConsole(LogLevel.logLevelInfo)

LogLevel を指定する場合、以下の階層に基づいて、報告されるメッセージの最小レベルを設定します。

  1. logLevelInfo
  2. logLevelWarning
  3. logLevelError
  4. logLevelFatal

たとえば、logLevelError を設定する場合、logLevelInfo および logLevelWarning はログから除外されます。その他はすべてログに記録されます。

logLevelOffを設定すると、すべてのログが記録されなくなります。

すべてのログメッセージには、先頭に「hsdk-」が付いており、HERE SDKからのメッセージを簡単に識別できます。

LogAppenderインターフェースを実装し、独自のロギングクラスをLogControlに提供することもできます。これにより、ランタイム時のログメッセージの処理方法を完全に制御できます。たとえば、カスタム条件に基づいてメッセージをフィルタリングし、logLevelErrorなどのエラーのみを記録するように設定できます。

デフォルトでは、このような選択的なフィルタリングは利用できません。どのメッセージが出力されるかはログ階層のみによって決定され、HERE SDKの初期化後は最小ログレベルを変更することはできません。ただし、カスタムログアペンダーを使用すると、初期化後でも独自のフィルタリングロジックを適用し、有効なログレベルを調整できます。

カスタムログアペンダーを設定しても、コンソールのログ記録が自動的に無効になるわけではない点に注意してください。ログがカスタムアペンダー経由でのみ書き込まれるようにしたい場合は、LogControl.disableLoggingToConsole()も呼び出してください。

有意義なログを生成する

多くの問題について、Xcode に表示されるログには、最も関連性の高い情報がすでに含まれています。クラッシュや ANR については、さらに掘り下げて、次のようにデバイス ログを確認できます。

  1. Xcode を開き、デバイスを接続します。
  2. Xcode で、[Window](ウィンドウ) の上部メニュー バー タブをクリックします。
  3. [Device and Simulation](デバイスとシミュレーター) をタップします。
  4. [View Device Logs](デバイスログを表示) をタップしするか、最新のXcodeバージョンでは、[Open Recent Logs](最近のログを開く) または[Open Console](コンソールを開く) をタップします。

iOSシミュレーターの実行時に、ターミナルから次のコマンドを実行して、Xcodeを実行せずにログを取得できます。

xcrun simctl spawn booted log stream --level debug

このページは役に立ちましたか?