Android エミュレータで Flutter の HTTPS 通信をキャプチャする方法

Android エミュレータで Flutter の HTTPS 通信をキャプチャする方法 のカバー画像

アップデート:2026 年 1 月 12 日

Proxyman 6.4.0 で、Android エミュレータの自動セットアップ機能が追加されました。数回のクリックだけで、Android エミュレータ上の Flutter アプリから HTTPS 通信をキャプチャできるようになりました。

元の記事

Android エミュレータで Flutter アプリの HTTPS 通信をキャプチャしようとしたことがあるなら、その大変さはご存じでしょう。iOS と違って Android では驚くほど難しく、そこに Flutter の複雑さが重なります。

このガイドでは、Proxyman 6.4.0 を使って正しく設定する方法を説明します。

課題

Android エミュレータ上の Flutter からのネットワーク通信をデバッグするのは、次のいくつかの理由から難しいです:

  1. Flutter はシステムのプロキシ設定を無視します — Dart の HttpClient はデフォルトではシステムのプロキシを使わないため、エミュレータにプロキシを設定しても効果がありません。
  2. Android の証明書の信頼 — Android 7 以降、ユーザーがインストールした証明書はデフォルトでは信頼されません。アプリのネットワークセキュリティ設定を変更する必要があります。
  3. 手動設定は面倒です — adb での証明書のインストール、Wi-Fi プロキシの設定、XML ファイルの編集…と、失敗しかねない手順が多くあります。

Proxyman 6.4.0 では、Android エミュレータの自動セットアップによって手間が省けますが、通信をプロキシ経由にするには、Flutter のコードも設定する必要があります。

Proxyman で Flutter の Android エミュレータの HTTPS 通信をキャプチャしている様子
Proxyman で Flutter の Android エミュレータの HTTPS 通信をキャプチャしている様子

前提条件

  • Proxyman macOS 6.4.0 以降
  • Android エミュレータ(API 24 以降)を含む Android Studio
  • Flutter プロジェクト

✅ 新しい方法

  1. Android Studio で Android エミュレータを開きます。Play Store 版ではなく、Google APIs 版であることを確認してください。
  2. Proxyman で Certificate Menu → Install Certificate on Android → Emulator を選択します。
  3. 「Install Proxyman VPN」のチェックボックスがオンになっていることを確認します。
  4. 「Override all Emulators」ボタンをクリックします。
Android エミュレータ向けの Proxyman 自動セットアップ
Android エミュレータ向けの Proxyman 自動セットアップ

以上です。adb コマンドを手動で実行する必要も、Android の設定画面を操作する必要もありません。

  1. この時点で、Android エミュレータに新しいローカル VPN がインストールされます。「Start」ボタンをクリックして VPN を開始しましょう。
  2. VPN が動作していて、ステータスが「Connected」になっていることを確認できます。
Android エミュレータ向けの Proxyman 自動セットアップ
Android エミュレータ向けの Proxyman 自動セットアップ
  1. 次に、Android エミュレータで Flutter アプリを実行します。
  2. Proxyman で HTTPS 通信がキャプチャされていることを確認できます。
Android エミュレータ向けの Proxyman 自動セットアップ - Flutter アプリの HTTPS 通信をキャプチャ
Android エミュレータ向けの Proxyman 自動セットアップ - Flutter アプリの HTTPS 通信をキャプチャ

⚠️ 従来の方法

Proxyman 6.3.0 以前を使っている場合は、従来の方法に従ってください。

手順 1:Flutter コードでプロキシを設定する

Flutter はシステムのプロキシ設定を使わないため、コード内で HTTP クライアントを手動で設定する必要があります。

使用している HTTP ライブラリに応じて、次のように設定します:

http パッケージを使う

import 'dart:io';
import 'package:http/io_client.dart';

// Use your Mac's IP address (shown in Proxyman's Android setup guide)
// For emulator, you can use 10.0.2.2 which points to your host machine
String proxy = '10.0.2.2:9090';

HttpClient httpClient = HttpClient();

httpClient.findProxy = (uri) {
  return "PROXY $proxy;";
};

// Allow Proxyman's certificate
httpClient.badCertificateCallback = 
  ((X509Certificate cert, String host, int port) => true);

IOClient myClient = IOClient(httpClient);

// Now use myClient for your requests
var response = await myClient.get(Uri.parse('https://api.example.com/data'));

Dio を使う

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:dio/io.dart';

String proxy = '10.0.2.2:9090';

Dio dio = Dio();

dio.httpClientAdapter = IOHttpClientAdapter(
  createHttpClient: () {
    final client = HttpClient();
    client.findProxy = (url) => 'PROXY $proxy';
    client.badCertificateCallback = (cert, host, port) => true;
    return client;
  },
);

// Now use dio for your requests
var response = await dio.get('https://api.example.com/data');

ヒント:10.0.2.2 は Android エミュレータ固有のエイリアスで、ホストマシンの localhost を指します。Mac で動作している Proxyman に接続する最も簡単な方法です。

badCertificateCallback は開発中にのみ有効にしてください。本番環境へリリースする前に削除してください。

手順 2:Proxyman で Android エミュレータをセットアップする

ここからは簡単な作業です。Proxyman 6.4.0 では、Android エミュレータを自動で設定できます:

  1. Android Studio で Android エミュレータを開きます
  2. Proxyman で Certificate Menu → Install Certificate on Android → Emulator を選択します
  3. 「Override all Emulators」ボタンをクリックします。
Android エミュレータ向けの Proxyman 自動セットアップ
Android エミュレータ向けの Proxyman 自動セットアップ

以上です。adb コマンドを手動で実行する必要も、Android の設定画面を操作する必要もありません。

手順 3:Flutter アプリを実行する

  1. Proxyman が起動していることを確認します
  2. Android エミュレータで Flutter アプリを実行します:
flutter run
  1. アプリでいくつかネットワークリクエストを発生させます
  2. Proxyman を確認します。Flutter アプリからの HTTPS 通信が表示されているはずです

確認したいドメインで SSL Proxying を有効にするのを忘れないでください。Proxyman でドメインを右クリックし、"Enable SSL Proxying" を選択します。

トラブルシューティング

通信は表示されるのに SSL エラーが出る

  • 従来の設定を使っている場合は、デバッグ用の HTTP クライアントが Proxyman の証明書を受け入れるか確認してください
  • 証明書がインストールされているか確認します:Android Settings → Security → Encryption & Credentials → Trusted Credentials → User タブ
  • エミュレータを再起動して、もう一度試してください

Proxyman に通信が表示されない

  • Flutter コードのプロキシ設定を再確認してください
  • 10.0.2.2:9090 を使っていることを確認してください(localhost ではありません)
  • Proxyman が起動していて、ポート 9090 で待ち受けていることを確認してください

アプリがクラッシュする、またはネットワークリクエストが失敗する

  • badCertificateCallback が正しく設定されているか確認してください
  • エミュレータがインターネットに接続できることを確認してください(エミュレータで Chrome を開いてみてください)

まとめ

Android エミュレータで Flutter の HTTPS をキャプチャするには、次の手順が必要です:

  1. Flutter の HTTP クライアントのコードでプロキシを設定する
  2. デバッグ環境でのみ Proxyman の証明書を信頼する
  3. Proxyman の Android エミュレータ向け自動セットアップを使う
  4. アプリを実行して通信を確認する

設定が済めば、Proxyman のデバッグツール(Breakpoint、Map Local、Scripting)をすべて使って、Flutter アプリのネットワーク層をテスト・デバッグできます。

作業が終わったら、Android Emulator のセットアップウィンドウで Revert All Changes を使うか、エミュレータからテスト用の VPN とプロキシを削除してください。badCertificateCallback や、すべての証明書を受け入れるルールを本番環境に含めてはいけません。これらの近道はローカルのデバッグビルドでは便利ですが、リリースビルドを安全でなくしてしまいます。

次のステップ


Proxyman は、開発者が iOS、Android、シミュレータ、エミュレータの HTTP/HTTPS 通信をキャプチャして確認できる、高性能な macOS/Windows/Linux アプリです。

https://proxyman.com から入手できます。

Noah Tran
Noah Tran

2026年7月17日 に改訂。 日付に関する古い表現を削除し、デバッグ時のみの証明書の信頼設定、トラブルシューティング、後片付けの手順を分かりやすくしました。

Flutter アプリの通信を 1 か所で確認

Android エミュレータを準備して、Flutter アプリからのリクエストを Proxyman で追跡しましょう。

Proxyman for macOS を試す