Android studio avd proxy

The Android Emulator and Charles Proxy: A Love Story

Oct 20, 2017 · 6 min read

Android Emulators have come a long way over the years. Once they were the bane of every developer’s life, representing the most basic failure of the Android development environment; a painfully slow tool that had the maddeningly unrealized potential to make developer lives infinitely easier. But over the last couple years, Google has wised-up and made the emulator one of the best things about developing for Android — a fast, fluid, and endlessly useful tool for exercising and debugging apps.

The Android Emulator can also be made into a super-tool for testing API edge and failure cases by employing an http proxy — a go between that can intercept, display and even re-map your API calls. My personal choice for this job is Charles Proxy. It has slick interface, easy to use mapping options and great support, with new releases being published all the time. Today I’ll show you how to set up your Emulator to proxy calls, and later, what you can do with it.

Setup

The first thing you want to do is download and run Charles Proxy. Start it up and you’ll see all the network traffic from your machine start to show up in the side bar. Charles, by default, has local proxying turned on, but since we’re going to use it to proxy an emulator, you can go to the Proxy menu and uncheck the OS proxy option:

Then click the little yellow broom icon to clear out all the traffic. You can also modify Charles’ preferences so that this option is not enabled by default.

Setup your Emulator to Proxy

Next, start up your emulator. Any old emulator will do, but depending on the Android version, your emulator’s settings might be different then mine. For this tutorial, I’m using a Pixel XL emulator running running Android 8.0, Oreo. The first thing we need to do is set up the emulator’s proxy settings, so that all the network traffic goes through Charles. To do that, we need your machine’s IP address. Charles actually has a little utility in the Help menu for this:

Click that, and then copy the IP address from the dialog that comes up.

Next, in your emulator, in the Setting bar, click the three little dots:

And then in the resulting dialog, click Settings, and then select the Proxy tab.

Paste in your IP address, and set the port to 8888. Charles will now prompt you that a device is trying to connect to the proxy, and ask you to allow it. Just click allow and you’ll start seeing IP addresses show up in the side bar

Don’t worry, we’re going to make that a whole lot prettier.

Install the Charles SSL Cert

Charles does some specific SSL magic, which we won’t go over here, but the bottom line it that you need to install the Charles SSL Certificate on your emulator. To do that, just open up a browser on the emulator, and navigate to http://chls.pro/ssl. The browser may prompt you to allow it to save the cert to disk, and then you can click to install it.

To Proxy your application on Android N or above, you also need to install a config file in your app’s resources. From the Charles Website:

“Android

As of Android N, you need to add configuration to your app in order to have it trust the SSL certificates generated by Charles SSL Proxying. This means that you can only use SSL Proxying with apps that you control.

In order to configure your app to trust Charles, you need to add a Network Security Configuration File to your app. This file can override the system default, enabling your app to trust user installed CA certificates (e.g. the Charles Root Certificate). You can specify that this only applies in debug builds of your application, so that production builds use the default trust profile.

Add a file res/xml/network_security_config.xml to your app:

Then add a reference to this file in your app’s manifest, as follows:

Phew. Your setup is now complete. Almost.

Urls instead of IP Addresses***

NOTE: THESE INSTRUCTIONS ARE OUT OF DATE. See the asterisked (***) section below for more current instructions.

Remember how we said we were gonna make Charles look all pretty? This is how we do it. In the setup, you probably noticed that all we get in the sidebar are IP addresses. But we can do better. To see the actual URLs those IPs represent, we can tweak our emulators settings to play nice with Charles.

To do this, go to your Emulator’s device settings, then go to (on Android 8.0, anyway) Network & Internet → Mobile network → Access Point Names. There should only be one, click on it. Now you should see this:

Читайте также:  Ноутбук с android gps

Now you can edit the Proxy and Port settings to match what we entered earlier in the Emulator’s settings. When you’re done that, don’t forget to click the three dots in the toolbar and Save your changes. Now, take a look at Charles again. If you’ve set up your app to trust the Charles cert, you should start to see some api urls in there.

Wow, that was a ton of work. But now it’s done, and you never have to do it ever again (unless your machines IP address changes, womp). In the next article, we’ll discover all the magical things you can do with Charles, including mapping responses to remote and local resources.

***UPDATE:

As with all things, setting up an HTTP proxy with your Android Emulator has changed a bit. Here’s is an amended guide to setting up URLs with Charles Proxy:

The built-in APN settings are now read-only, so you can’t change them as I instructed above. Instead, you need to create a new APN, so that you can change it. To do this, navigate to Settings → Network and Internet → Mobile Network and expand the Advanced section, then select Access Point Names. Now click the plus sign in the toolbar.

Basically what we’re going to do is add a new APN that copies the old one, and then edit that. Give your shiny new APN any name you want. Now set the APN field to epc.tmobile.com, set the MMSC field to http://mms.msg.eng.t-mobile.com/mms/wapenc, and make sure APN Type is set to Not Set. Also, don’t forget to set the Proxy field to your IP address for Charles, and the Port to 8888.

Finally, click the toolbar menu icon and select Save.

Now just back out to the previous screen and select your new Access Point, and you should be all set. Happy Charles-ing.

Источник

Андрей Алеев

Настройка proxy в Android Studio

На днях мне пришлось разворачивать Android Studio IDE на машине с корпоративным прокси. Тема не нова, и уже обсуждалась на stackoverflow и в блогах. Однако, эта задача не решается сходу — приходиться покопаться. Поэтому я решил создать пошаговую инструкцию по настройке IDE Android-разработчика в условиях прокси.

Все действия мы будем проводить на windows-машине. Для linux алгоритм будет аналогичный.

Итак, при первом запуске Android Studio предлагает настроить прокси

Жмем Setup Proxy, вводим адрес прокси-сервера и свои учетные данные:

Адрес прокси можно узнать с помощью команды (windows)

Протестируйте соединение с помощью кнопки Check connection на этом же окне. Если все ок, идем дальше.

Все ок, идем дальше. В появившемся после запуска IDE окне прокси нужно снова прописать параметры proxy для http и https:


Эти же настройки можно прописать в файле gradle.properties:

Однако, имейте ввиду, что настройки прокси IDE перезаписывают настройки проекта .

Если сейчас попытаться собрать проект, то, скорее всего, сборка закончится неуспешно с ошибкой

Gradle пытается достучаться до серверов репозиториев, не имея сертификатов. Нам необходимо добавить их в хранилища. Для этого сначала добавляем в gradle.properties следующие строчки:

Здесь мы указываем путь и пароль к хранилищу сертификатов. Пароль по умолчанию — changeit. Если вы не меняли его, он остался таким же.

Как же добавить сертификаты в хранилище?

Установка сертификатов

При запуске проекте IDE предлагает принять сертификаты. Их следует принять, однако это не поможет автоматически. Нам необходимо импортировать сертификаты в хранилище сертификатов cacerts IDE и JVM. Для этого необходимо выполнить следующие шаги:

  1. Скачать сертификат. Сделать это можно с помощью браузера или openssl
  2. Импортировать сертификат в в хранилища с помощью keytool

Чтобы импортировать загруженный на шаге 1 сертификат, на Windows-машине необходимо запустить командную строку от администратора и выполнить:

Также, необходимо добавить этот сертификат в другие хранилища cacerts (JVM и Android Studio):

альтернативно, вместо того, чтобы добавлять, можно копировать сертификаты между хранилищами с помощью команды:

После импорта сертификатов почистите кэш gradle в папке C:\Users\ \.gradle и перезагрузите систему. Если при попытке обратиться к хранилищу cacerts IDE выдает ошибку Access denied, запустите Android Studio от администратора.

Запускаем сборку… Проект успешно собирается!

В случае, если импорт сертификатов не помогает, можно заменить адрес загрузки репозиториев с секьюрного https на обычный http:

Помимо gradle, проблемы могут возникнуть и с системой контроля версий. В случае с git необходимо необходимо добавить в глобальные настройки git параметры proxy. Для этого выполнить команду:

Если при попытке при попытке pull/push из/в GitLab возникает ошибка

SSL certificate problem: self signed certificate in certificate chain

то следует выполнить следующую команду от администратора:

Для возможности push/pull через IDE Android Studio необходимо в настройках Settings->Version Control->Git в пункте SSH executable указать Native

На этом все, можно работать. Надеюсь, статья оказалась полезной для вас. Буду рад вашим мнениям и комментариям!

Источник

Как подключить андроид эмулятор к интернету

Как я могу подключить свой эмулятор Android к Интернету, например, чтобы использовать браузер? Я нашел много советов о том, что делать, когда вы подключены через прокси, но здесь это не так, моя машина (Windows 7) напрямую подключена к маршрутизатору.

Я думаю, что некоторые ответы, возможно, касались этого, хотя и косвенно, но вот что сработало для меня.

Читайте также:  Sony xperia c2305 android

Предполагая, что ваша проблема возникает, когда вы находитесь в беспроводной сети и у вас установлена ​​сетевая карта, проблема заключается в том, что эмулятор пытается получить настройки DNS с этой сетевой карты. Не проблема, когда вы подключены через эту локальную сеть, но совершенно бесполезно, если вы подключены к беспроводной сети. Я заметил это, когда был на своем ноутбуке.

Итак, как это исправить? Просто: отключите вашу сетевую карту. В самом деле. Просто зайдите в сетевые подключения, найдите свою сетевую карту, щелкните ее правой кнопкой мыши и выберите «Отключить». Теперь попробуйте свой эмулятор. Если вы похожи на меня, это внезапно . работает!

Если вы на Mac — попробуйте это —

  1. GoTo Apple Icon -> Системные настройки -> Сеть
  2. Нажмите на значок шестеренки и выберите «Установить сервисный заказ».
  3. Вывести активный интерфейс перед другим интерфейсом.
  4. Перезапустите эмулятор Android.

Вот ответ для разработчиков, использующих Android Studio .

Операционная система: Mac OS X El Capitan

IDE: Android Studio 2.2

По некоторым причинам я не смог получить доступ к Интернету через AVD на работе (возможно, проблемы с настройками прокси-сервера или сети). Что меня устроило, так это то, что я запустил в командной строке мой AVD и дал Google публичный DNS 8.8.8.8.

В вашем терминале перейдите в папку инструментов вашего Android SDK, чтобы найти программу «эмулятор»:

Затем получите название ваших AVD:

Это вернет вам что-то вроде этого:

Затем запустите AVD, который вы хотите со следующими инструкциями:

Ваш AVD запущен, и вы должны иметь возможность использовать Интернет.

Моя платформа: Mac OS 10.6.4 Eclipse: 3.6

У меня была похожая проблема, когда фон моего приложения карты был серым (без плиток), и браузер не смог подключиться к Интернету.

В Eclipse я пошел в Run Configurations -> Target и добавил « -dns-server X.X.X.X », и все потом работало нормально. (очевидно, X.X.X.X был IP-адрес для моего DNS-сервера).

Для того, чтобы использовать интернет через прокси на эмуляторе, попробуйте выполнить следующие действия:

Зайдите в настройки-> Беспроводные и сети-> мобильные сети-> Имена точек доступа. Нажмите кнопку меню. появится меню параметров.

В меню параметров выберите «Новый APN».

Нажмите на имя. предоставьте имя apn скажи мой APN.

Нажмите на APN. Введите www.

Нажмите на прокси. введите IP прокси-сервера. Вы можете получить его из меню настроек интернета.

нажмите на порт. введите номер порта, в моем случае это был 8080. Вы можете получить его из меню настроек Internet Explorer.

Нажмите на имя пользователя. укажите имя пользователя в формате домен \ имя пользователя. как правило, это логин вашей системы.

Нажмите на пароль. введите пароль вашей системы.

нажмите кнопку меню еще раз. появится меню параметров.

нажмите сохранить это и попробуйте открыть браузер. Я думаю, что это помогло тебе?

  1. щелкните правой кнопкой мыши по проекту в Eclipse
  2. выберите Run As -> Run Configurations .
  3. выберите приложение Android, а затем выберите вкладку «цель»

Ищите «Дополнительные параметры командной строки эмулятора» и поместите эту командную строку в текстовое поле

Есть разные решения этой проблемы. В одном из них я покажу вам свой эксперимент и результаты, которые можно увидеть на результатах с использованием недавно выпущенной студии Android и изображений AVD, загруженных в 2017 году.

Первое, что вам нужно сделать, это запустить AVD из Android-студии. (в моем случае я выбираю NEXUSAPI25 для Android 7.1)

Перейти к настройкам -> Беспроводная связь и сеть -> Сотовая сеть -> Точки доступа -> (+) нажмите Добавить -> введите следующее, если у вас вообще нет прокси-сервера NTLM или прокси-сервера (это означает, что вы подключены напрямую)

а. добавить имя apn как myAPN b. добавить сервер apn => www c. сохраните и попробуйте просматривать Интернет.

если это не работает, добавьте ‘ANDROID_SDK_ROOT’ в переменную среды

Затем запустите AVD с помощью команды эмулятора следующим образом

Для тех, кто использует прокси NTLM, я покажу вам, как это работает для меня дальше.

добавьте свой путь Android_sdk_root в переменную окружения. Это заставляет код командной строки читать успешно, как с использованием имен AVD и так далее.

Запустите свой эмулятор, используя следующую команду

> эмулятор -avd Nexus_5X_API_25 -http-прокси http: // имя пользователя: пароль @ ipaddress: порт

ВОЙТИ

Вы пытались запустить эмулятор с правами администратора ? У меня сработало, у меня Windows 7 64bit)

В моем случае мне просто нужно было запустить виртуальное устройство Android (AVD) из «Android SDK и AVD Manager», и оно работало

Если вы находитесь за прокси-сервером в SDK Manager Tools -> Options , не настраивайте параметры прокси-сервера. При запуске из командной строки добавьте -http-proxy :

Работал на меня.

Я столкнулся с этой проблемой, когда я впервые запускаю симулятор, я решил ее, установив сервер DNS с

получить текущий днс сервер симулятора 10.0.2.3

Затем установите его на моем сервере LAN DNS

Я также испытал ту же проблему. Самое простое решение, которое я обнаружил, это:

  • Перейдите в папку Android \ Sdk \ emulator и откройте командную строку.
  • Введите, emulator -list-avds чтобы увидеть доступные имена эмулятора.
  • Введите emulator -avd name-of-your-device -netdelay none -netspeed full -dns-server 8.8.8.8 команду и нажмите ввод.

У меня была похожая проблема. Я установил приложение, которое требовало разрешения ИНТЕРНЕТ (и использовал его), и внезапно сработало.

Ребята, проверьте также, если вы не подключены через VPN где-то, потому что это также может нарушить интернет-соединение.

В затмении перейти на DDMS

в DDMS выберите Emulator Control , который содержит статус телефонии, в статусе телефонии содержатся данные -> выберите Дом , это активирует ваше интернет-соединение, если вы хотите отключить интернет-соединение для эмулятора, то —> выберите Нет

(Примечание. Это позволит подключаться к Интернету только в том случае, если на вашем ПК / ноутбуке, на котором вы используете eclipse, есть активные подключения к Интернету.)

Прочитав это, я решил посмотреть на свои «сетевые карты». Я поставил это в кавычки, потому что, как и многие, я использую виртуальные сетевые карты для таких устройств, как Hamachi и Virtual Box. После того, как я отключил Хамачи, я могу пользоваться Интернетом. Я предполагаю, что эмулятор выбирает первый доступный ник независимо от того, является ли он виртуальным. Теперь, чтобы узнать, смогу ли я изменить свой порядок, не срывая коробку.

Windows 7 32bit

Настройки моего заказа на обслуживание были правильными (Wi-Fi был первым), но все равно не удалось подключиться.

Ответ должен был отключить Thunderbolt Bridge:

Системные настройки> Сеть> Thunderbolt Bridge

Затем отключите параметр «Настроить IPv4» и примените изменения.

Не нужно облажаться с точками доступа в эмуляторе.

Я решил это, отключив все сетевые подключения, кроме Wi-Fi-подключения, которое я использовал, а затем установил свойства этого оставшегося включенного подключения, чтобы статически назначать DNS-адреса. (без DHCP) Это было на Win7 64bit

Спасибо за указатели. Они действительно помогли. Слово «брандмауэр» вызвало мысль в моей голове.

У меня машина с Windows XP с подключением WIFI и без прокси. У меня на компьютере работает Norton Internet Security, на котором установлен Smart Firewall. Этот Smart Firewall управляет доступом программ к сети, включая emulator.exe. Я вошел в Настройки -> Управление программой, а затем предоставил полный доступ к emulator.exe. После этого я запустил Android Emulator и грохнул . Я мог подключиться к интернету.

Надеюсь, что это помогает новым людям.

Если вы работаете в MacOS с 2.2 и по-прежнему видите ошибку подключения к данным, попробуйте описанное выше, это работает.

  • Я удалил все сетевые интерфейсы через Sys Prefs, кроме LAN
  • Даже при том, что мой DNS предоставляется DHCP, я перепечатал DNS только с одним сервером
  • Я использовал -http-proxy в командной строке, чтобы указать один

Начинает работать в офисе. Уф.

Я думаю, что иногда просто перезагружать виртуальное устройство. 🙂

У меня была такая же проблема на моей виртуальной Windows 7.

  1. Перейти к сетевым подключениям
  2. Alt> Дополнительно> Расширенные настройки .
  3. Во второй вкладке приведите интерфейс интернет-сетей наверху

надеюсь, что это полезно благодаря

В эмуляторе Android у меня работало включение и выключение режима полета.

да — в win 7 запустите эмулятор с привилегиями администратора, и все будет хорошо — или, по крайней мере, вы получите беспроводную связь в Android.

У меня была похожая проблема на Win7 64 бит. Пробовал отключить мои адаптеры hamachi и virtualbox и не работал. Пробовал запускать avd от имени администратора и не работал. В конце концов, я отключил адаптер туннелирования Teredo, используя информацию на этом сайте, и он работал: http://www.mydigitallife.info/2007/09/09/how-to-disable-tcpipv6-teredo-tunneling-in-vista /

Я обнаружил, что запуск эмулятора с проверкой «стереть данные пользователя» разрешил эту проблему для меня после того, как я перестроил свою машину разработчика с Vista x64 на Win7 x64.

кажется, может быть несколько причин, по которым эмулятор может не подключаться к Интернету, в моем случае я работал из дома, где у меня было беспроводное соединение, затем вошел в офис и подключился напрямую, хотя мое беспроводное соединение было отключено он не был отключен, что привело к отсутствию соединения с эмулятором. Насколько я понимаю, когда он запускается, он ищет сетевой адаптер, и если есть какой-либо конфликт здесь, это может привести к отсутствию подключения к Интернету. чтобы решить, перейдите в Пуск> Настройки> Сетевые подключения, щелкните правой кнопкой мыши Беспроводное сетевое подключение (если вы не используете беспроводной) и выберите отключить

Я не использую прокси . однако я использую скрипт . Есть ли что-нибудь вокруг этого. Я за брандмауэром компании

Я не уверен, что это ваша проблема, но вот как я исправил мою.

У меня всегда была эта ошибка «Не найдены DNS-серверы» при запуске эмулятора, и я провел много исследований на Google, но безрезультатно. Во всяком случае, я где-то нашел пост (больше не могу его найти), в котором говорилось, что количество сетевых карт, количество записей DNS могут повлиять на эмулятор. Кроме того, зная, что эмулятор использует функцию Windows API (GetNetworkParams ()) для разрешения записей DNS, я не мог положиться на файл% WINDOWS% \ System32 \ Hosts.

Однако в свойствах сетевых адаптеров (в Windows 7) я обнаружил, что я указываю статический IP-адрес, но нет записей DNS. Итак, я получил записи DNS от моего маршрутизатора и подключил их в свойстве сетевых карт. Я перезапустил эмулятор, и теперь он использует правильные записи DNS!

Теперь я могу использовать свое интернет-соединение с эмулятором, и оно творит чудеса!

Я думал, что у меня возникли проблемы с подключением моего эмулятора к Интернету, но оказалось, что это проблемы с кодом, который я использовал. Я знаю, что это очевидно, но в первую очередь попробуйте браузер на эмуляторе, чтобы убедиться, что у вас нет доступа в Интернет. Я бы сэкономил час, если бы сделал это первым.

Источник

Читайте также:  Настройка email для андроид
Оцените статью