本トピックでは、Android クライアントでクライアント診断機能を使用する方法について説明します。コンソールでは、Message Push Service (MPS) と Mobile Sync Service (MSS) の 2 つのチャンネルを通じて診断タスクを送信できます。
Android クライアントを診断するには、次の手順に従います。
前提条件
Mobile Analysis Service コンポーネントを統合済みで、ログレポート機能が正常に動作していること。詳細については、「Android クライアントへの Mobile Analysis Service の統合」をご参照ください。
MPS または MSS コンポーネントを統合済みであること。
MPS チャンネルを使用する場合は、「クイックスタート」の手順に従って、「Android クライアントへの Message Push Service の統合」を行ってください。
MSS チャンネルを使用する場合は、「Android との統合」「Android クライアントへの Mobile Sync Service の統合」で統合手順をご参照ください。
診断サービスの初期化
診断サービスは、MSS または MPS チャンネルを介した診断ログのプルをサポートしています。初期化メソッドはチャンネルごとに異なります。
Message Push Service チャンネルの使用
MPS チャンネルを使用する場合は、アプリの起動後に次の操作を実行します。
プッシュサービスを初期化して、クライアントと MPS ゲートウェイ間の持続的接続を確立します。プッシュ SDK は、この自己構築チャンネルを維持します。プッシュ SDK の初期化
ユーザー ID をバインドします。この ID は開発者によって定義されます。これは、ご利用のユーザーシステムのユーザー ID、またはアカウントや電話番号など、特定のユーザーにマッピングできる別のパラメーターです。ユーザー ID のレポート
Mobile Sync Service チャンネルの使用
MSS チャンネルを使用する場合は、アプリの起動後に次のメソッドを呼び出してチャンネルを初期化します。
ユーザーによる診断タスクのトリガー
// userId を設定します MPLogger.setUserId(String userId); // 同期チャンネルを初期化します。最初に userId を設定する必要があります。設定しない場合、初期化は失敗します。 MPDiagnose.initSyncChannel(Context context);デバイスによる診断タスクのトリガー
説明デバイスによる診断タスクのトリガーは、ベースライン 10.2.3.73 以降でのみサポートされています。
// userId を設定します MPLogger.setUserId(String userId); // 同期チャンネルを初期化します。最初に userId を設定する必要があります。設定しない場合、初期化は失敗します。 MPDiagnose.initSyncDeviceChannel(Context context);
診断ログの書き込み
クライアントが診断タスクを受信すると、mPaaS ログツールである MPLogger を使用して書き込まれたログのみをアップロードします。このため、ログを書き込むには、android.util.Log の代わりに MPLogger を使用する必要があります。MPLogger は、ネイティブの Log クラスと同様のログレベルメソッドを提供します。
void verbose(String tag, String msg);
void debug(String tag, String msg);
void info(String tag, String msg);
void warn(String tag, String msg);
void warn(String tag, Throwable t);
void warn(String tag, String msg, Throwable tr);
void error(String tag, String msg);
void error(String tag, Throwable t);
void error(String tag, String msg, Throwable t);
void print(String tag, String msg);
void print(String tag, Throwable t);MPLogger によって書き込まれたログは、デバッグパッケージの場合は logcat に表示されますが、リリースパッケージの場合は表示されません。デバイス上の診断ログのストレージディレクトリは次のとおりです。
デバッグパッケージ:
/sdcard/[PackageName]/applog。このディレクトリに書き込みできない場合、ログはリリースパッケージのディレクトリに書き込まれます。重要targetSdkVersion が 30 以降で、かつスマートフォンのオペレーティングシステムが 11 以降の場合、ストレージディレクトリは
/storage/emulated/0/Android/data/com.mpaas.demo/cache/[PackageName]/applog/です。リリースパッケージ:
/data/data/[PackageName]/files/applog。
診断ログストレージパラメーターのカスタマイズ
デフォルトでは、ローカルログストレージはデータを 7 日間保持し、ファイルサイズの制限は 15 MB です。この制限を超えると、ログファイルの 4 分の 1 が削除されます。
マニフェストで <meta-data> 要素を設定します。
// ログファイルの最大サイズ (MB)
<meta-data android:name="category_applog_max_size" android:value="15" />
// ログの保存期間 (日)
<meta-data android:name="category_applog_expires_time" android:value="7" />診断ログストレージパラメーターのカスタマイズは、ベースライン 10.2.3.73 以降でのみサポートされています。
コンソールからのログのプル
mPaaS ロギングツールによって書き込まれたログをコンソールからプルできます。この機能は、特定のデバイスモデルまたは特定のユーザーで発生したクラッシュや例外を迅速に分析するのに役立ちます。
ステップ 1: ログプルタスクの作成
mPaaS コンソールにログインし、対象のアプリケーションを選択します。
左側のナビゲーションウィンドウで、[Mobile Analysis Service] > [ログ管理] をクリックします。
[リアルタイムログのプル] タブで、[追加] をクリックします。
タスク情報を入力します。[ユーザー ID] は、アプリケーションのログインシステムにおけるユーザーの識別子です。
MPLogger.setUserId(String userId)または Message Push サービスを介してユーザー ID を報告するメソッドを使用して設定できます。[OK] をクリックして、ログプルタスクを作成します。
ステップ 2: ログプルタスクのトリガー
ログプルタスクのリストで、作成したタスクを見つけ、[トリガーチャンネル] を選択し、[操作] 列の [トリガー] をクリックします。
しばらく待ってからページをリフレッシュし、タスクのステータスを確認します。
タスク処理済み: [表示] をクリックして診断ログをダウンロードします。
プッシュ/同期サービスの呼び出し成功: このステータスは、診断ログをアップロードするためのメッセージが送信されたものの、クライアントがまだそれを受信していないか、ログをアップロードしていないことを示します。この場合、アプリプロセスがまだ実行中であることを確認してください。実行中でない場合は、アプリを再起動します。アプリを再起動してもタスクのステータスが変わらない場合は、以下のトラブルシューティングセクションをご参照ください。
トラブルシューティング
ログをプルできない場合は、診断ログタスクの送信に使用したチャンネルに対応するトラブルシューティング手順に従ってください。
Message Push Service チャンネルの使用
トラブルシューティングを行うには、次の手順に従います。
[mPaaS コンソール] > [Message Push Service] ページに移動します。ユーザー ID に基づいてアプリに通常メッセージをプッシュし、MPS チャンネルが正常に機能していることを確認します。
MPS チャンネルが正常に機能している場合は、logcat ログをクリアし、プッシュプロセスに切り替えてから、コンソールで診断タスクの [トリガー] を再度クリックします。logcat ログを監視します。
mPush14でフィルターし、診断メッセージが受信されるか確認してください。受信されない場合は、プッシュチャンネルが切断されているか確認してください。
診断メッセージが受信されたことを確認したら、次のログをチェックして、メッセージが
MonitorServiceに転送されたことを確認してください。ClientMonitorServiceが見つからないことを示すエラーが表示された場合は、mPaaS プラグインを使用して SDK を更新してください。ベースライン 10.1.32 の場合は、10.1.68 にアップグレードし、コンポーネントを最新バージョンに更新します。
ベースライン 10.1.60 または 10.1.68 の場合は、コンポーネントを最新バージョンに更新します。

MonitorServiceの起動を確認後、AlipayLogUploaderでフィルターして、診断ログがローカルに存在するかどうかを確認します。次のログは、ローカルの診断ログがアップロード可能であることを示しています。
次のログは、診断ログが存在しないことを示します。

診断ログが存在しない場合は、次の項目を確認してください。
コンソールでリアルタイムログプルタスクに選択する期間は、少なくとも 1 時間である必要があります。この期間中、アプリは実行中で、診断ログを書き込んでいる必要があります。
アプリは次の権限を宣言し、動的にリクエストする必要があります。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
ローカル診断ログが存在することを確認したら、
HttpUploadでフィルターして、ログのアップロードが成功したかどうかを確認します。responseCodeが 200 の場合、アップロードが成功したことを示します。
データ同期チャンネルの使用
トラブルシューティングを行うには、次の手順に従います。
logcat ログをクリアし、メインプロセスに切り替えて同期チャネルを初期化した後、
isConnectedでフィルターして、同期チャネル接続が正常に確立されたかどうかを確認します。
mPaaS コンソールで、診断タスクに対して再度[トリガー]をクリックします。
MPDiagnoseでフィルターして、診断メッセージが受信されたかどうか、およびMonitorServiceが開始されたかどうかを確認します。メッセージが受信されない場合は、設定されたユーザー ID が診断タスクで入力されたユーザー ID と一致することを確認してください。
ClientMonitorServiceが見つからないというエラーが表示された場合は、mPaaS プラグインを使用して SDK を更新してください。ベースライン 10.1.32 の場合は、10.1.68 にアップグレードし、コンポーネントを最新バージョンに更新します。
ベースライン 10.1.60 または 10.1.68 の場合は、コンポーネントを最新バージョンに更新します。

MonitorServiceが起動したことを確認した後、プッシュプロセスに切り替えてAlipayLogUploaderでフィルターをかけ、診断ログがローカルに存在するかどうかを確認します。次のログは、アップロード可能なローカル診断ログが存在することを示しています。
次のログは、診断ログが存在しないことを示しています。
次の項目を確認してください。
コンソールでリアルタイムログプルタスクに選択する期間は、少なくとも 1 時間である必要があります。この期間中、アプリは実行中で、診断ログを書き込んでいる必要があります。
アプリは次の権限を宣言し、動的にリクエストする必要があります。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
ローカル診断ログが存在することを確認した後、
HttpUploadでフィルターし、ログのアップロードが成功したかどうかを確認します。responseCodeが 200 の場合、アップロードが成功したことを示します。