---
title: "Як налаштувати Charles Proxy для емулятора Android Studio"
url: "https://romankryvolapov.com/uk/charles-proxy-android-emulator/"
description: "Покрокове налаштування Charles Proxy для емулятора Android: проксі через adb, сертифікат Charles, network security config для HTTPS застосунку та підміна відповідей."
language: uk
published: 2023-03-14
updated: 2026-11-05
---
Інструкцію перевірено на початку 2023 року на Windows 10, емуляторі з API 33, Android Studio 2022.1.1 і Charles Proxy 4.6.3. Я написав її, бо не знайшов актуальної інструкції: у налаштуваннях емулятора, запущеного всередині Android Studio, зникла звична вкладка Proxy, а в Charles трохи переробили налаштування. Для HTTPS ця вкладка все одно не допомогла б: вона задає [проксі емулятора](https://developer.android.com/studio/run/emulator-networking-proxy), який тунелює HTTPS без розшифрування, а Charles потрібен системний проксі Android — його й налаштовують кроки нижче.

## Проксі

1. Запускаємо Charles Proxy.
2. Знімаємо галочку **Proxy → Windows Proxy** (на macOS — **macOS Proxy**), щоб Charles не перехоплював увесь трафік комп'ютера.
3. Дивимося локальну адресу комп'ютера в мережі: **Help → Local IP Address**, або в налаштуваннях мережі.
4. У **Proxy → Proxy Settings…** перевіряємо, що вказано порт 8888.
5. Знаходимо Android SDK: у налаштуваннях Android Studio вводимо в пошуку «sdk», відкриваємо **Android SDK** і копіюємо шлях із **Android SDK Location**. Утиліта `adb` лежить у його теці `platform-tools`.
6. Вмикаємо проксі в емуляторі:

```bash
C:\Users\<ім'я користувача>\AppData\Local\Android\Sdk\platform-tools\adb.exe shell settings put global http_proxy <локальна IP>:8888
```

Можна спершу перейти в теку `platform-tools` командою `cd` і викликати просто `adb`. Замість локальної IP емулятору можна вказати `10.0.2.2` — це його постійна адреса для комп'ютера, на якому він запущений, і вона не змінюється разом із мережею.

7. У Charles з'явиться запит на підключення — підтверджуємо його.
8. У вкладці сесії з'являться запити, зокрема з емулятора. Щоб лишити тільки потрібний домен, натискаємо на нього правою кнопкою й обираємо **Focus**.

Вимкнути проксі, коли він більше не потрібен:

```bash
adb shell settings put global http_proxy :0
```

## Сертифікат і HTTPS

9. Відкриваємо Chrome в емуляторі, переходимо на `http://chls.pro/ssl` і завантажуємо сертифікат.
10. У налаштуваннях емулятора шукаємо «certificate», відкриваємо **Install certificate** (у різних версіях пункт вкладено в різні меню) і встановлюємо завантажений сертифікат.
11. У **Trusted credentials** на вкладці **User** має з'явитися сертифікат Charles Proxy.
12. У Charles обираємо потрібну адресу, правою кнопкою — **Copy URL**, далі **Proxy → SSL Proxying Settings… → Include → Add** і додаємо скопійовану адресу; порт можна не вказувати. Після очищення історії запити до цієї адреси почнуть показуватися деревом REST-шляхів.

**Важливо: так ви побачите HTTPS лише з Chrome.** Починаючи з Android 7 застосунки за замовчуванням не довіряють сертифікатам, які встановив користувач, тож запити вашого застосунку залишаться нечитабельними. Щоб налагоджувальна збірка довіряла сертифікату Charles, додайте в проєкт файл `res/xml/network_security_config.xml`:

```xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>
```

і підключіть його в маніфесті:

```xml
<application
    android:networkSecurityConfig="@xml/network_security_config"
    ... >
```

Блок `debug-overrides` діє лише в налагоджувальній збірці, у реліз ця довіра не потрапить. Якщо в застосунку налаштовано certificate pinning, його на час налагодження теж доведеться вимкнути.

## Підміна запитів і відповідей

Є три способи:

- **Tools → Rewrite…** — додаємо адресу, створюємо правило типу **Body**, позначаємо **Response** і в полі **Value** пишемо потрібну відповідь.
- **Proxy → Breakpoints** — запит або відповідь зупиняється, і його можна виправити вручну просто під час виконання.
- **Tools → Map Local** — замість відповіді сервера підставляється локальний файл.

І наостанок: якщо роутер видає комп'ютеру динамічну IP-адресу, під час наступного підключення вона може виявитися іншою, і проксі в емуляторі доведеться налаштувати знову. З адресою `10.0.2.2` цієї проблеми немає.
