Android N 以降で Google Mobile Ads SDK 用に Charles プロキシを設定する

プラットフォームを選択: Android Android(以前のバージョン)

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 エミュレータを使用する場合は、 プロキシ アドレスを 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 ファイルに保存できます。

まず、 ネットワーク セキュリティ構成 用の新しい XML リソース ファイルを res/xml/network_security_config.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 ログで広告リクエストを確認できます。