このトピックでは、Android クライアントでクライアント診断機能を使用する方法について説明します。コンソールでは、メッセージプッシュサービス(Push)とモバイル同期サービス(Sync)の 2 つのチャネルを介して診断タスクを送信できます。
Android クライアント診断を実装するには、次の手順を実行します。
前提条件
アプリに MAS コンポーネントが統合されており、ログレポート機能が正しく動作していること。アクセス手順の詳細については、「モバイル分析サービスにアクセスする」をご参照ください。
アプリにメッセージプッシュサービスまたはモバイル同期サービスが統合されていること。
診断サービスを初期化する
クライアント診断機能を使用すると、メッセージプッシュサービスチャネルとモバイル同期サービスチャネルを介して診断ログをプルできます。チャネルによって初期化方法は異なります。
メッセージプッシュサービスを使用する
メッセージプッシュサービスチャネルを使用する場合は、アプリの起動後に次の手順を実行して初期化を完了する必要があります。
モバイル同期サービスを使用する
モバイル同期サービスチャネルを使用する場合は、アプリの起動後に次のメソッドを呼び出して初期化を完了する必要があります。
// userId を設定します。
MPLogger.setUserId(String userId);
// Sync チャネルを初期化するには、最初に userId を設定する必要があります。設定しないと、初期化は失敗します。
MPDiagnose.initSyncChannel(Context context);クライアントに診断ログを書き込む
クライアントが診断タスクを受信した後、クライアントは mPaaS のログツールである MPLogger を使用して書き込まれたログのみをアップロードします。そのため、android.util.Log ではなく MPLogger を使用してログを書き込むことをお勧めします。MPLogger は、次のコードに示すように、ネイティブログに似たログメソッドを提供します。
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 より大きい場合)、ログはリリースパッケージのストレージディレクトリに書き込まれます。リリースパッケージ:
/data/data/[PackageName]/files/applog
コンソールで診断ログをプルする
コンソールでは、mPaaS のログツールによって出力されたログをプルして、特定のデバイスまたはユーザーで発生したアプリのクラッシュや例外を迅速に分析できます。
手順 1: ログプルタスクを作成する
mPaaS コンソールにログインし、アプリを選択します。
左側のナビゲーションウィンドウで、モバイル分析サービス > ログ管理 を選択します。
[リアルタイムログのプル] タブで、[追加] をクリックします。
タスクに関する情報を入力します。ユーザー ID
MPLogger.setUserId(String userId)は、アプリにログインするユーザーを一意に識別します。 を呼び出すか、メッセージプッシュサービスのユーザー ID レポートメソッドを使用してユーザー ID を設定できます。[OK] をクリックして、ログ プル タスクの作成を完了します。
手順 2: ログプルタスクをトリガーする
ログプルタスクリストで、新しく作成されたタスクを見つけ、トリガー チャネルトリガー操作 を選択します。 列の をクリックします。
タスクステータスが更新されるまで待ちます。
タスクが処理されました: この状態では、[表示] をクリックして診断ログをダウンロードできます。
プッシュ/同期サービスが正常に呼び出されました: このステータスは、診断ログのアップロード命令が配信されたものの、クライアントが命令を受信していないか、診断ログをアップロードしていないことを示します。
この場合、アプリプロセスがシステムにまだ存在するかどうかを確認します。アプリプロセスがシステムに存在しない場合は、アプリを再起動します。アプリを再起動してもタスクステータスが変更されない場合は、以下のセクションの指示に従ってトラブルシューティングを行ってください。
トラブルシューティング
ログをプルできない場合は、次の手順でトラブルシューティングを行うことができます。トラブルシューティング方法は、診断タスクの配信チャネルによって異なります。
プッシュチャネルの場合
ログプルの失敗をトラブルシューティングするには、次の手順を実行します。
mPaaS コンソールで、メッセージ プッシュ サービス ページに移動し、userId でアプリに通常のメッセージをプッシュして、プッシュチャネルが正しく動作するかどうかを確認します。
プッシュチャネルが正しく動作する場合は、
Logcatのログをクリアし、プッシュプロセスに切り替えます。mPaaS コンソールで診断タスクを見つけ、トリガー操作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 コンソールで診断タスクを見つけ、トリガー操作
MPDiagnoseMonitorService列の をクリックします。 を選択して、診断メッセージが受信されているかどうか、および が有効になっているかどうかを確認します。診断メッセージが受信されない場合は、指定された userId が診断タスクの userId と同じかどうかを確認します。
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 の場合は、ログがアップロードされています。