# Android デバイスとエミュレータ

> デスクトップ版 Proxyman で Android デバイスとエミュレータの HTTP/HTTPS 通信をキャプチャします。プロキシ設定、証明書、自動スクリプト、Google Play イメージの手順を説明します。

このガイドでは、Android デバイスまたはエミュレータの通信を、お使いのパソコン上の Proxyman に送信する方法を説明します。プロキシの設定、証明書のインストール、HTTPS 検査のためのアプリの証明書の信頼について解説します。

お使いのデバイスに合ったセットアップを選択してください：

* **Android の実機：** 下記の手動セットアップに従ってください。デバイスは、ネットワーク経由で Proxyman を実行しているパソコンに接続できる必要があります。
* **Android エミュレータ：** まずは[自動セットアップスクリプト](https://proxyman.com/docs/ja/debug-devices/android-device/automatic-script-for-android-emulator)をお使いください。
* **Google Play エミュレータイメージ：** [Google Play と Magisk のガイド](https://proxyman.com/docs/ja/debug-devices/android-device/google-play-android-emulator-with-magisk)に従ってください。標準の自動セットアップでは、すべてのイメージには対応していません。

パソコンを使わずにスマートフォンで直接キャプチャするには、[スタンドアロン版の Proxyman Android アプリ](https://proxyman.com/android)をご利用ください。

デスクトップでキャプチャする場合は、Proxyman で対応するガイドを開いてください：

* **Certificate** **Menu** → **Install Certificate on Android** → **Physical Devices…**
* **Certificate Menu** → **Install Certificate on Android** → **Emulators…**

> **備考:** [Android デバイスとエミュレータのセットアップ方法のミニチュートリアル](https://proxyman.com/docs/ja/debug-devices/android-device/sample-android-project)をご覧ください

> **備考:** **Android エミュレータ**の場合は、[Android エミュレータ用の自動スクリプト](https://proxyman.com/docs/ja/debug-devices/android-device/automatic-script-for-android-emulator#1-whats-it)をご覧ください

## 動画 {#video}

[API 36 の Android エミュレータで、ネイティブ Android アプリ（OkHttp）の HTTPS 通信をキャプチャ](https://www.youtube.com/watch?v=CWInB7gZj6g)

[Video: Proxyman for Android アプリで、Android の HTTP/HTTPS 通信をキャプチャ](https://proxyman.com/videos/android) (44 seconds)

## 1. Android セットアップガイド {#1-android-setup-guide}

手動でセットアップする場合は、まずデバイスのプロキシを設定し、次に証明書をインストールして、開発中のアプリで証明書の信頼を設定してください。証明書をインストールしただけでは、すべての Android アプリがその証明書を信頼するわけではありません。以下の手順をすべて実行してください：

![Wi-Fi プロキシサーバーとポート、proxy.man/ssl のリンク、ネットワークセキュリティ構成 XML を示す Proxyman の Android セットアップガイド](https://proxyman.com/docs/assets/proxyman-android-device-setup-guide.jpg)

_Android デバイスのセットアップガイド_

**Certificate** メニュー → **Install Certificate on Android** → **Physical Devices…** の順にガイドを開き、次の手順に従ってください：

1. Mac に **Root Proxyman Certificate** をインストールします。[macOS ガイド](https://proxyman.com/docs/ja/debug-devices/macos)に従ってください。
2. Android デバイスまたはエミュレータを用意し、Settings アプリを開いて Wi-Fi を選択し、接続中の Wi-Fi を選択します。下の表の値で HTTP プロキシを設定します。

| 項目           | 値                                                |
| -------------- | ------------------------------------------------- |
| サーバー IP    | Mac の現在の IP アドレス                          |
| ポート         | Proxyman の現在のポート。デフォルトは 9090 です   |
| 認証           | なし                                              |

> **備考:** 一部の Samsung 製デバイスでは、HTTP プロキシを設定すると、インターネットに接続できなくなることがあります。その場合は、現在のネットワークを削除してから、再度接続してください。
>
> **VPN アプリを使用している場合**は、必ず終了してください。一部の VPN アプリは HTTP/HTTPS プロキシの設定と競合するためです。

  3\. Android デバイスの Web ブラウザで [http://proxy.man/ssl](http://proxy.man/ssl) または http://cert.proxyman.io を開き、Proxyman 証明書をインストールします。

### **Android 11、Android 12 以降：** {#android-11-android-12-or-later}

* Google Chrome アプリで http://proxy.man/ssl にアクセスし、証明書をダウンロードします。
* Android 11 以降では、Settings アプリで証明書を手動でインストールする必要があります。
* Settings アプリ → Security → Encryption & Credentials → Install a Certificate → "CA Certificate" を選択 → ストレージ内の Proxyman CA 証明書を選択

### **Android 10 以前：** {#android-10-and-below}

* http://proxy.man/ssl にアクセスすると、Android デバイスが証明書を自動的にダウンロードしてインストールします。**VPN and App Section** を選択してください。

> **備考:** **Android 12 以降**で「Can't install the Certificate: This file can't be used as a VPN & app user certificate」という警告が表示された場合は、代わりに "CA Certificate" を選択してください。 
>
> 参考：[https://stackoverflow.com/a/70261393/3127477](https://stackoverflow.com/a/70261393/3127477)

> **備考:** **http://proxy.man/ssl** は、Proxyman 内蔵の HTTP サーバーが配信するローカルの Web サイトです。開けない場合は、Wi-Fi ネットワークを削除して再接続し、Proxyman アプリが開いていることを確認してください。

4\. Android 11 以降では、証明書を確認します。Settings → Security → Encryption & Credentials → Trusted Credentials を開き、User タブを表示してください。

下のスクリーンショットのように、**Proxyman CA** 証明書が表示されていることを確認してください。

![User タブに Proxyman CA 証明書が表示されている Android の Trusted credentials 画面](https://proxyman.com/docs/assets/Screen_Shot_2020-09-29_at_9_00_46_PM%20(1).png)

    5\. アプリのソースコードを開き、次の 2 つの `xml` ファイルを追加します。

* **res/xml/network\_security\_config.xml** を追加します

```markup title="network_security_config.xml"
<network-security-config>
  <debug-overrides>
    <trust-anchors>
      <!-- Trust user added CAs while debuggable only -->
      <certificates src="user" />
      <certificates src="system" />
    </trust-anchors>
  </debug-overrides>

  <base-config cleartextTrafficPermitted="true">
    <trust-anchors>
      <certificates src="system" />
      <certificates src="user" />
    </trust-anchors>
  </base-config>
</network-security-config>
```

* **AndroidManifest.xml** に追加します

```markup title="manifest.xml"
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config" ... >
    ...
    </application>
</manifest>
```

> **備考:** 詳しくは [Network Security Configuration ](https://developer.android.com/training/articles/security-config.html) を参照してください

> **備考:** **これらの設定は、必ず Release ビルドから削除してください**。削除しないと、Production ビルドで HTTP/HTTPS リクエストが傍受され、機密データが漏えいするおそれがあります。

6\. Android エミュレータを使用している場合は、エミュレータを再起動してください

7\. 完了 ✅

## **2. トラブルシューティング** {#2-troubleshooting}

デバイス接続のトラブルシューティングガイドの [Android の項目](https://proxyman.com/docs/ja/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#android-devices-and-android-emulators)をご覧ください。

## 3. Android サンプルプロジェクト {#3-sample-android-project}

XML の設定でお困りの場合は、設定済みのシンプルなプロジェクトをご覧ください：

GitHub のリンク：[https://github.com/ProxymanApp/OKHTTP-Android-Sample](https://github.com/ProxymanApp/OKHTTP-Android-Sample)

- [Android サンプルプロジェクト](https://proxyman.com/docs/ja/debug-devices/android-device/sample-android-project)

## 4. React Native の Android アプリ {#4-react-native-android-app}

Android アプリで React Native を使用している場合は、[React Native のページ](https://proxyman.com/docs/ja/debug-devices/react-native)をご覧ください。

## 5. 埋め込み WebView の通信をインターセプト {#5-intercept-traffic-from-embedding-webview}

アプリによっては、HTTPS 通信をインターセプトするために追加の手順が必要な、埋め込みの WebView があります。

1. Android アプリで他の HTTPS 通信が表示されていることを確認してください。表示されていれば、証明書が正しく設定されていることを意味します。
2. 次のコードを WebView に挿入します

```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    WebView.setWebContentsDebuggingEnabled(true);
}

// The following two lines help with disabling asset caching
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
```

  3\. パソコンで新しい Chrome タブを開き、`chrome://inspect` にアクセスします

4\. WebView を開くと、その WebView が Chrome タブに表示されます。`inspect` をクリックすると、リモートデバッガを使用できます。

## 6. ルート化したデバイスで SSL Proxying を使用 {#6-ssl-proxying-using-root-device}

> クレジット：[Shirshak](https://github.com/shirshak55)

Android 7 より前のバージョンでは、この手順は不要です。Android 7 以降では、Google が追加のセキュリティ機能を導入し、既定では中間者攻撃（MITM）ツールがアプリの通信を読み取れないようになっています。

端末のルート化によって生じた問題について、当社は一切の責任を負いません。このガイドは自己責任でご利用ください。

> **備考:** 新しいバージョンの Proxyman では、証明書は `~/Library/Application Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem` に保存されます。Mac に `~/.proxyman` フォルダが存在しない場合は、代わりにそのフォルダを使うか、Certificate メニュー → Export → Root Certificate as PEM から証明書をエクスポートしてください。

1. `magisk` フレームワークを使って端末をルート化します。
2. 制限されたシステムフォルダ内のファイルをコピー＆ペーストできるよう、ルート対応のファイルブラウザをインストールします。
3.  コマンドラインで次のスクリプトを入力します

    ```bash
    $ cd ~/.proxyman
    // We copy certificate to another file name just so we may need it later
    $ cp proxyman-ca.pem temp.pem
    $ hash=$(openssl x509 -inform PEM -subject_hash_old -in temp.pem | head -1)
    $ mv temp.pem "$hash.0"
    ```
4. `~/.proxyman` フォルダに、名前が数字で始まり `.0` で終わるファイルが表示されます。
5. そのファイルを Android デバイスにコピーします。
6. ルート対応のファイルブラウザを使って、そのファイルを /system/etc/security/cacerts/ に移動します。
7. これで、プロキシ経由の通信を確認できます。

> **備考:** 1) Android スマートフォンでは、ゲートウェイに誤った IP アドレスを設定してください。こうすると、すべての通信が必ず Proxyman のプロキシを経由します。
> 2) macOS のインターネット共有機能を使うと、モバイルホットスポットを作成できます。そうすると、Android スマートフォンから Proxyman のプロキシを簡単に使用できます。ルーターがスマートフォンと Mac の間のリクエストを遮断することがあるため、この方法の方が確実です。

## 追加のリソース {#additional-resources}

* mitmproxy には、Android エミュレータにシステムで信頼される CA 証明書をインストールする方法を解説した、役立つチュートリアルがあります。同じ手順は Proxyman の証明書にも使えます：[https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/](https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/)

## さらに詳しく {#learn-more}

* [Android 11 で自己署名証明書をインストールして信頼する方法](https://proxyman.com/posts/2020-09-29-Install-And-Trust-Self-Signed-Certificate-On-Android-11)
* [API 35 の Android エミュレータから HTTPS 通信をキャプチャする方法](https://proxyman.com/posts/capture_https_android_emulators)
* [Proxyman が Android に対応しました](https://proxyman.com/posts/2026-05-25-Proxyman-is-now-available-on-Android)
* [Proxyman で Android デバイスの HTTP/HTTPS 通信をキャプチャ](https://proxyman.com/android-device)（Proxyman の Web サイト）
