Charles プロキシを設定する

Android N 以降では、次の手順を行った場合にのみ、Charles プロキシに広告呼び出しが表示されます。

  1. モバイル デバイスで Google Play 開発者サービスを更新します。
  2. モバイル デバイスでネットワーク トレースを有効にします。
  3. デバイスに Charles SSL 証明書をインストールし、プロキシを設定する。
  4. モバイルアプリの SSL プロキシを有効にします。

モバイル デバイスで Google Play 開発者サービスを更新する

エミュレータの場合、サイドメニューに Google Play セクションが表示されない場合は、Android Studio の更新が必要になることがあります。[Virtual Device Configuration] で最新のシステム イメージをダウンロードし、ターゲットに Google Play が含まれるシステム イメージを使用します。

サイドメニューを使用して、Google Play 開発者サービスを最新バージョンに更新します。

物理的なモバイル デバイス(スマートフォンまたはタブレット)の場合は、Google Play を検索するか、こちらのリンクから Google Play を直接開きます。

モバイル デバイスでネットワーク トレースを有効にする

ネットワーク トレースを有効にするには、デバイスの開発者向けオプションを有効にします。詳細については、デバイスの開発者向けオプションを設定するをご覧ください。

Google 設定アプリを開き、[Google] > [広告] > [広告のデバッグ ロギングを有効にする] を選択します。詳細については、ネットワーク トレースをご覧ください。

デバイスに Charles SSL 証明書をインストールし、プロキシを設定する

Charles をアプリのプロキシとして使用するには、パソコンに Charles をダウンロードしてインストールします。

証明書を .pem ファイルまたは .cer ファイルとして保存するには、[Help] > [SSL Proxying] > [Save Charles ルート証明書] を選択します。デバイスに証明書をインストールするには、[Help] > [SSL Proxying] のプロンプトに沿って操作します。

プロキシで Android Emulatorを使用する場合は、プロキシ アドレスを http://127.0.0.1 に設定します。ポートを、Charles の [Proxy] > [プロキシ設定] に表示されている値に設定します。

実機を使用する場合は、パソコンと同じ Wi-Fi ネットワークにデバイスを接続します。プロキシを設定するには、デバイスのネットワークの詳細設定を開きます。詳しくは、Google Pixel を Wi-Fi ネットワークに接続するをご覧ください。Charles で、[Help] > [Local IP Address] を選択して IP アドレスを確認します。デバイスで、Charles の IP アドレスと Charles のポートをプロキシとして入力します。

モバイルアプリの SSL プロキシを有効にする

Charles がモバイルアプリの SSL トラフィックをインターセプトできるようにするには、アプリが SSL 証明書を信頼できることを宣言します。ユーザーがインストールした証明書を信頼するか、Charles 証明書を未加工リソースとしてアプリに埋め込むことができます。たとえば、証明書を res/raw/charles_cert.pem ファイルに保存できます。

まず、res/xml/network_security_config.xml ファイルにネットワーク セキュリティ構成用の新しい XML リソース ファイルを追加します。

<network-security-config>
   <debug-overrides>
       <trust-anchors>
           <!-- Trust Charles SSL certificate stored in res/raw -->
           <certificates src="@raw/charles_cert" />
           <!-- Trust user added CAs while debuggable only -->
           <certificates src="user" />
       </trust-anchors>
   </debug-overrides>
</network-security-config>

次に、ネットワーク セキュリティ構成を使用するように AndroidManifest.xml ファイルを更新します。

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

その後、モバイルアプリを起動して、Charles のログで広告リクエストを探します。