Charlesを使用してアプリをデバッグしています-Androidとiosの両方で。デバイスにCharles CAをインストールした後、セキュリティで保護された接続で何か奇妙なことが起こります。
IOSでは、Charlesは接続のリストにホスト名への要求を表示し、見栄えがします。
ただし、Androidでは、IPのみが表示されます。リクエストを開いてホスト名ヘッダーをチェックし、ホスト名を把握する必要があります。これはかなり面倒です。
これを回避する方法はありますか?
これは、AndroidエミュレーターがVMであり、iOSシミュレーターのようなmacosプロセスだけではないためです。Androidエミュレーター(Android 8.0)でテスト済み)[設定]-> [ネットワークとインターネット]-> [モバイルネットワーク]-> [アクセスポイント名]-> [アクセスポイント]をクリックして設定する必要がありますチャールズのローカルアドレスへのプロキシとポートのプロパティ(チャールズ->ヘルプ->ローカルIPアドレスで見つけることができます)
更新:
Googleは、Androidエミュレーターの最後のバージョンでこれを変更しました。新しいAPNを追加する必要があります。任意の名前でAPNを「http://」に設定して新しいAPNを作成するだけです。 10.0.2.2へのプロキシと8888へのポート
API 25+のエミュレーターには、AndroidWifiと呼ばれるシミュレートされたwifiアクセスポイントがあります: https://developer.Android.com/studio/run/emulator#wi-fi
エミュレーターのwifi設定に移動し、AndroidWifiに接続し、それを押したまま、[ネットワークの変更]を選択します。 CharlesProxyのホスト名とポートを入力します。プロキシに接続し、リクエストにドメイン名が表示されるはずです。
エミュレータの拡張コントロールで提供されるプロキシ設定を使用しないでください。
エミュレータのサイドバーを使用せずに、エミュレータで実行されるAndroid)の実際の設定内でプロキシ設定(IPとポート)を設定する必要があります。AndroidWifi
そしてModify network
。 IPをローカルコンピューターのIPに設定し、ポートを8888に設定します。APNを設定する必要はありません。
IPアドレスの代わりにURL
これらのIPが表す実際のURLを確認するには、エミュレーターの設定を微調整して、CharlesとNiceを再生します。
これを行うには、エミュレータのデバイスsettings
に移動してから、(on Android 8.0、とにかく)Network & Internet
→Mobile network
→Access Point Names
。
これで、プロキシとポートの設定を編集して、エミュレータの設定で以前に入力したものと一致させることができます。それが終わったら、ツールバーの3つのドットをクリックして、変更を保存することを忘れないでください。さて、チャールズをもう一度見てください。 Charles証明書を信頼するようにアプリを設定した場合は、そこにいくつかのAPIURLが表示されるようになります。
こちらの完全な手順に従ってください- https://medium.com/@daptronic/the-Android-emulator-and-charles-proxy-a-love-story-595c23484e02