Android Emulator에서 내 http://localhost 웹 서버에 연결하는 방법
웹 ?http://localhost또는http://127.0.0.1?
시도해봤지만 에뮬레이터는 여전히 내 요청을 구글에서 localhost를 검색하는 것처럼 받아들이거나 내 웹 서버가 정상적으로 실행되는 동안 페이지를 찾지 못했다고 표시합니다.
localhost는 코드가 실행 중인 장치(이 경우 에뮬레이터)를 나타냅니다.
Android 시뮬레이터를 실행하는 컴퓨터를 참조하려면 IP 주소 10.0.2.2를 대신 사용합니다.
여기서 더 읽을 수 있습니다.
사용하다10.0.2.2 및 기본 AVD 10.0.3.2친절한 마음으로
가정용 컴퓨터에서 10.0.2.2를 성공적으로 사용했지만, 직장에서는 작동하지 않았습니다.몇 시간 동안 빈둥빈둥 놀다가 Android Virtual Device(AVD) 관리자를 사용하여 새로운 에뮬레이터 인스턴스를 만들었고, 마침내 10.0.2.2가 작동했습니다.
다른 에뮬레이터 인스턴스(플랫폼이 동일함)에 무엇이 문제가 있었는지는 모르겠지만 10.0.2.2가 작동하지 않는 경우 새 에뮬레이터 인스턴스를 생성해 보십시오.
ㅠㅠhttp://10.0.2.2:8080/8080포트 번호입니다.완벽하게 작동했습니다.만약 당신이 노력한다면,10.0.2.2작동이 안될 거에요.포트 번호를 추가해야 합니다.또한 Microsoft IIS가 설치되어 있는 경우에는 제어판에서 해당 기능을 해제한 다음 위에서 지정한 대로 시도해 보십시오.
는 실로사수있다니습할을 할 수 .localhost:8000에뮬레이터를 실행할 때마다 아래 명령을 실행하여 시스템의 로컬 호스트에 연결합니다(Mac에서만 테스트됨).
adb reverse tcp:8000 tcp:8000
Android Studio 단말기에 넣기만 하면 됩니다.
기본적으로 전화기에서 실행 중인 HTTP 서버가 포트의 연결을 수락하고 컴퓨터에 연결하거나 그 반대로 연결하는 역방향 프록시를 설정합니다.
설명서에 따라:
10.0.2.2 - 호스트 루프백 인터페이스에 대한 특수 별칭(예: 개발 컴퓨터의 127.0.0.1)
에뮬레이터 네트워킹에 대한 자세한 내용은 에뮬레이터 네트워킹을 참조하십시오.
My Mac OS Mountain Lion 장치의 경우:
완벽하게 작동합니다!
Android Emulator를 사용하는 경우:
하여 Pc 할 수 : " IP" "Pc" "Pc localhost"10.0.2.2:{port of your localhost}=> 기계 포트를 xamp로 설정한 경우 해당 포트를 사용해야 합니다. 경우에는 경에는우내는▁in.10.0.2.2:2080
또한 네트워크 어댑터 IP를 사용할 수도 있습니다.에 CMD를 기라고 .ipconfig 주소 IP 주소를 .
가 이 할 수 경우 " " " " IP" " " " " " 를 사용하여 에뮬레이터를 .cold bootAVD 매니저:
지니모션을 사용하는 경우:
IP를 하여 시스템 할 수 . IP: IP: localhost는 localhost입니다.10.0.3.2:{port number}위에서 주소:: 또는위에설대로어 IP 댑터다니입합력를소.192.168.1.3:2080
에뮬레이터 "Nox App Player"의 시스템 호스트 IP 주소를 파악해야 했습니다.여기 제가 알아낸 방법이 있습니다.172.17.100.2.
- 앱스토어에서 Android Terminal Emulator 설치
- 쟁.
ip link show모든 네트워크 인터페이스를 표시하는 명령입니다.을 끈 입니다. - 쟁.
ifconfig eth1을 령명, net으로 합니다.172.17.100.15/255.255.255.0 - " 로 시작:
172.17.100.1'에서.17.100.2'에서 히트를 쳤습니다. 제 간섭하지 .
아마도 이것은 다른 누군가가 다른 에뮬레이터들을 위해 그것을 알아내는데 도움을 줄 수 있습니다.
PWA 설치 허용
먼저 Android 디버그 브리지를 설치합니다.
$ sudo apt install adb android-sdk-platform-tools-common
Android 에뮬레이터를 평소와 같이 시작합니다. 예:
$ ~/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86
그런 다음, 전달할 Android 에뮬레이터의 브리지에 역방향 프록시를 구성합니다.localhost" " " " " () " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "localhost호스트 컴퓨터에서 실행 중인 서버 또는 그 반대:
$ adb reverse tcp:8000 tcp:8000
PWA Web Application)에서 제공되는 Web Application)입니다.localhost:8000또는127.0.0.1:8000 설치할 수 있으며 에 연결됩니다.PWA 설치는 IP 주소에서 허용되지 않습니다.10.0.2.2.
adb reverse tcp:8000 tcp:8000Android 에뮬레이터를 호출할 때마다 다시 발급해야 합니다.
따라서 Android 에뮬레이터를 시작하고 역방향 프록시를 실행하는 bash 스크립트는 다음과 같습니다.
#!/usr/bin/env bash
$HOME/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86 > /dev/null 2>&1
adb reverse tcp:8000 tcp:8000
여기와 다른 곳에서 모든 답변을 읽었음에도 불구하고 이 문제를 디버깅하는 데 몇 시간이 걸렸습니다. 주소는10.0.2.2크롬 브라우저에서도 작동하지 않았습니다.동일한 문제가 발생하는 경우 디버깅을 시도하고 문제를 해결할 수 있는 단계별 가이드가 있습니다.
에뮬레이터 게이트웨이가 10.0.2.2인지 점검하십시오.
에뮬레이션된 Android 내부에서 Settings > WiFi로 이동하여 Android WiFi 핫스팟(호스트 컴퓨터를 나타냄)에 연결되어 있는지 확인한 후 하단에서 Advanced를 클릭한 다음 Gateway 주소를 확인합니다. 연결되어 있지 않으면 다른 문제가 있을 수 있습니다. 프록시 설정을 변경하면 문제가 해결될 수 있습니다.프록시 설정은 이제 숨겨져 있으므로 2022년 이후 Android Studio에서 이를 수행하는 방법은 다음을 참조하십시오.새로운 버전의 Android Studio에서 프록시 에뮬레이터를 구성하는 방법은 무엇입니까?
호스트 컴퓨터에서 서버에 액세스할 수 있는지 확인
를 열고 웹 우 열 고 하 됩 니 다 기 면 만 하 력 입 브 라 저 를 다 됩 니 ▁simply ▁open 하 ▁a ▁type ▁and ▁browser 면 ▁webhttp://localhost:<port>로컬 웹 앱에 액세스할 수 있는지 확인합니다.그렇지 않으면 로컬 서버 매개 변수에 문제가 있을 수 있습니다.
에뮬레이터에서 서버에 액세스할 수 있는지 확인합니다.
브라우저를 브저를열다가리다니킵음을라고우를 가리킵니다.http://10.0.2.2:<port>, (genymotion의 경우)로 합니다.http://10.0.3.2:<port>웹 웹 앱이 나타나면 좋습니다. 완료되었습니다.그렇지 않은 경우 아래의 다른 단계를 테스트하여 근본 문제를 정확히 파악합니다.
다른 서버로 테스트
에뮬레이터 내부가 아닌 호스트 컴퓨터에서 웹 앱에 액세스할 수 있는 경우 근본 원인은 로컬 서버가 보안상의 이유로 일부 인터페이스에 대한 액세스를 제한하고 있기 때문일 수 있습니다.
다른 . , " 이확인려보사다십오시용서해버른를면를하▁server"와 같은 간단한 HTTP 서버만 . 다음과 같은 간단한 HTTP 서버만 사용할 수 있습니다.http-server와 함께nodejs또는python -m http.server 8000Python 3을 사용합니다.
그런 다음 에뮬레이터의 크롬 브라우저에서 이 간단한 서버에 액세스해 보십시오.http://10.0.2.2:8000작동할 경우 로컬 서버가 일부 인터페이스에 대한 액세스를 제한하고 있음을 확인합니다.권한을 확장하려면 로컬 서버의 설명서를 읽어야 합니다.
를 들어, 제 는 예를들, 제버는, 서제경였습니다.angular-cli(角)기본적으로 로컬 호스트에 대한 서비스만 제한합니다.작동하기 위해서, 나는 사용해야 했습니다.ng serve --disable-host-check --host 0.0.0.0단순한 의대에 ng serve이 다른 질문에서 제안된 바와 같이.--host 0.0.0.0은 웹 서버에 모든 인터페이스를 제공하도록 지시합니다.대부분의 웹 서버에 유사한 인수를 제공할 수 있습니다.
사용하지 않는 일부 어댑터, 특히 VPN과 같은 가상 어댑터를 사용하지 않도록 설정하는 방법도 있습니다.
Android 앱에서 텍스트를 지울 수 있는 권한
에서 웹 앱에 수 , 은 에뮬레이터 내부에서 수 있습니다.http://10.0.2.2:<port> 수 을 추가하는 이며, 특히 웹되어 있지 웹의 가장 가능성이 - 10.0.▁if▁check▁the▁if▁just▁forserver퍼것▁app,며이추▁your▁to▁ofthe▁last▁to▁add는▁puzzle하즐가▁is▁develop권▁perm을있▁-▁10art▁web▁theissions▁in▁certific▁cle▁piecepeciallyserver의▁webmentext▁es▁scenario 특히 로컬 웹 서버가 SSL 인증서를 갖추고 있지 않은 경우에는 일반 텍스트를 사용할 수 있습니다(로컬 개발 웹 서버의 가장 가능성이 높은 시나리오).https://localhost:<port>일을 하든 말든http://localhost:<port>호스트 시스템에서).이렇게 하면 Chrome과 마찬가지로 Android 앱이 로컬 웹 서버에 액세스할 수 있습니다.
text (▁(추▁perm,http://Android 9(API 28) 이상에서는 Android 앱에서 )가 필요합니다.이 권한을 추가하도록 Android 앱을 구성하는 여러 가지 방법이 있습니다. https://stackoverflow.com/a/50834600/1121352 을 참조하십시오.
결론
Android 에뮬레이터에서 호스트에 액세스하는 것은 까다로울 수 있지만 신중한 단계별 디버깅을 통해 대부분의 경우 문제를 해결할 수 있습니다.
이 튜토리얼에서는 Android 에뮬레이터 내부에서 호스트 컴퓨터의 로컬 웹 서버에 액세스/접속하는 문제만 다루지만, 일단 이 문제가 해결되면 웹 앱에 도달하더라도 작동하지 않을 수 있습니다.한 가지 예는 무한 부하 루프를 경험하는 것입니다.되면 추가 도달가능해결면추문가디다면다있사수습니용할을 할 수 .chrome://inspectChrome Browser에서 Android 에뮬레이터 내부의 Android WebView에 연결하여 컴퓨터에 렌더링된 것처럼 라이브 디버그할 수 있습니다.
아마도 더 빠른 마지막 대안은 ngrok와 같은 서비스에 대한 유료 구독을 얻는 것이지만 무료 버전은 Android 앱의 웹 보기 외부의 웹 브라우저에서 웹 앱을 열어야 하기 때문에 쓸모가 없습니다.
받아들여진 답은 맞지만, 제 경우에는 효과가 없었습니다.호스트 시스템에서 회사 VPN-client를 끈 상태에서 가상 디바이스를 생성해야 했습니다.많은 회사 네트워크가 10(개인 네트워크 범위)으로 시작하는 주소를 사용하므로 특수 주소 10.0.2.2를 방해할 수 있으므로 이는 상당히 이해할 수 있습니다.
만약 당신이 윈도우에 있다면, 당신은 심볼 시스템으로 가서 ipconfig를 쓰고 당신의 기계에 어떤 IP가 할당되어 있는지 확인할 수 있습니다.
로컬 IIS 서버(ASP.NET)에 접속하려는 모든 사용자용
저는 수락된 답변만으로는 충분하지 않았습니다.ASP.NET 솔루션의 루트에 있는 applicationhost.config에 127.0.0.1에 대한 바인딩을 추가해야 했습니다.
잘 모르겠습니다. 이 주제는 이미 해결되었을 수도 있지만, 최근에 Windows 기계에서 이 작업을 시도했을 때 많은 어려움에 직면했습니다.그래서 제 해결책은 정말 간단했습니다.저는 포트 포워딩을 만드는 방법에 대한 그들의 지시에 따라 이 소프트 http://www.lenzg.net/rinetd/rinetd.html 을 다운로드했고, 안드로이드 기기를 성공적으로 연결하여 asp.net localhost 프로젝트를 만들고 중단했습니다.
my rinetd.conf 파일:
10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82
여기서 10.1.1.20은 로컬 호스트 IP, 82 및 1234 포트입니다. 또한 쉬운 삶을 위해 bathfile.bat이라는 이름의 bath 파일을 생성했습니다. 그 파일을 rine 폴더에 넣습니다.내 목욕 파일:
rinetd.exe -c rinetd.conf
이 소프트를 시작한 후 aps.net 서버를 시작하고 안드로이드 장치 또는 로컬 네트워크의 장치(예: 컴퓨터 ABC가 퍼티를 시작함)에서 액세스하려고 하면 모든 것이 작동하는 것을 볼 수 있습니다.라우터 설정으로 이동하거나 다른 복잡한 작업을 수행할 필요가 없습니다.이것이 당신에게 도움이 되기를 바랍니다.즐거운 시간 되세요.
2023년 답변:
과 localhost:5001에서 .my-real-api.com그래서 나는 사용합니다.
// BASE_URL.js
import Constants from "expo-constants";
const { manifest } = Constants;
const PORT=5001
export const BASE_URL =
(typeof manifest?.packagerOpts === `object` &&
!!manifest.debuggerHost &&
manifest.packagerOpts.dev)
// dev server
? `http://${manifest.debuggerHost.split(`:`).shift()}:${PORT}` +
// production server
: "https://my-real-api.com";
그리고 다른 모든 곳에서:
import { BASE_URL } from "../BASE_URL"
import axios from "axios"
const my_data = await axios.get(BASE_URL+"/some/path")
또 다른 해결 방법은 no-ip.org 에서 무료 도메인을 가져와 로컬 IP 주소를 지정하는 것입니다.그다에음을 하는 대신에 는대신에하사용대에▁then신는.http://localhost/yourwebservice해볼 수 있습니다http://yourdomain.no-ip.org/yourwebservice
오래된 버전이지만 10.0.2.2가 컴퓨터 IP로 작동하지 않는 경우 다음 지침에 따라 파일을 찾습니다.
언급URL : https://stackoverflow.com/questions/5806220/how-to-connect-to-my-http-localhost-web-server-from-android-emulator
'programing' 카테고리의 다른 글
| Mac OS X에서 정적 라이브러리(.a)의 대상 아키텍처를 어떻게 결정합니까? (0) | 2023.06.01 |
|---|---|
| HttpContext가 있는 웹 메서드입니다.현재의.사용자. 신원.Azure에서 비활성화 후 인증된 작업 중지 (0) | 2023.06.01 |
| Apple 개발자 프로그램이나 탈옥 없이 기기에서 iOS 앱 테스트 (0) | 2023.05.27 |
| 웹 드라이버를 사용하여 요소로 스크롤하시겠습니까? (0) | 2023.05.27 |
| Excel 행을 랜덤화하는 방법 (0) | 2023.05.27 |





