Android app 로컬 서버 접속 방법

안드로이드 에뮬레이터에서 localhost 접속하기 (Android emulator (AVD)에서 localhost access하는 방법)

보통 PC에서 웹서버를 동작하게 하면, 웹 브라우져에서 "http://localhost:8080"로 접속하게 된다.

하지만 안드로이드 에뮬레이터에서는 "http://10.0.2.2:8080"로 접속을 해야 localhost에 접속이 가능하다.

로컬에서 모바일웹과 앱에서 테스트를 할 경우가 있다. 앱일 경우 로컬에서 테스트를 어떻게 할까? 다양한 방법이 있지만, 서버 개발자인 나는 다음과 같은 환경에서 테스트를 진행하였다.

개발환경 : 맥북, Charles, 안드로이드 폰, intelliJ

그리고 다음과 같이 진행하였다.

1. intelliJ 에서 프로젝트 띄우기

   로컬에서 테스트할 프로젝트를 띄운다. (아파치 설정은 생략) 

2. Charles proxy 설정하기

    Charles는 Proxy 서버이다. 도메인을 매핑하려면 PC에서 Proxy 서버를 실행해야 한다. Proxy 서버의 예로 Charles, Fiddler 등이 있다. 다음과 같이 Proxy 서버인 Charles에서 포트 전달을 위한 설정을 한다. 간단히 말해, 포트 설정을 해준다.

    - 위치 : Charles - Setting - Proxy Setting 

Android app 로컬 서버 접속 방법
Proxy Settings
Android app 로컬 서버 접속 방법
Proxy Settings

    Port를 적어주고 Enable transparent HTTP proxing 을 체크한다.

3. 안드로이드 폰 설정하기

     안드로이드 폰에서 (Proxy 서버인) Charles를 통해 네트워킹을 하기 위해서는 PC와 안드로이드 단말기가 같은 Wi-Fi에 붙어야 한다.

    - 위치 : 설정 – Wi-Fi - 현재 연결된 wifi 꾹 누르기 - 네트워크 설정 관리 - 프록시 수동 설정

    - 프록시 호스트 이름 : PC IP주소값 (맥북은 '네트워크'에서 IP주소를 볼 수 있다)

    - 프록시 포트 : Charles에서 설정한 프록시 포트

이제 안드로이드 폰에서 테스트할 앱(App)을 실행하면 로컬에 붙은 테스트 화면을 볼 수 있을 것이다. 물론 Proxy 서버인 Charles를 종료하면 안드로이드 단말기는 더 이상 통신이 불가능하다. 그나저나 Charles가 왜케 잘 끊기지..

참조 글 : https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server?hl=ko

로컬 서버 액세스  |  Tools for Web Developers  |  Google Developers

개발용 컴퓨터 웹 서버에서 사이트를 호스팅한 다음 Android 기기에서 콘텐츠에 액세스합니다.

developers.google.com

Android app 로컬 서버 접속 방법

현재 내 컴퓨터에서 돌리고 있는 로컬 서버에 접속하려면 어떻게 해야할까요?!

(저는 장고로 API 개발중이여서 장고 서버를 기준으로 한 글입니다.)

우선 시뮬레이터(iOS), 에뮬레이터(안드로이드)도 하나의 OS이기 때문에

여기서 localHost를 부르면 자기자신이 됩니다. (내 컴퓨터가 아니라) 

그래서 앱에서 api 콜을 해봐도 서버에 연결이 안된답니다,, 

Android Emulator 네트워킹 설정 을 보면 10.0.0.2.2라는 특수주소로 접근할 수 있다고합니다.

Android app 로컬 서버 접속 방법
Android app 로컬 서버 접속 방법

iOS Simulater는 또 다르게 해줘야하는데 (찾아본 여러 방법 다 안되서 적지 않을게요,,) 

귀찮으니까  여기를 보고  장고 서버가 다른 컴퓨터에서도 접속할 수 있게 해보겠습니다. 

< 장고에서 해야할 일 >

[1] 터미널에서 아래의 명령어로 현재 나의 컴퓨터(장고 서버를 돌리는 주체) IP를 알아내주세요..!

ipconfig getifaddr en0

[2] settings.py에 가셔서 ALLOWED_HOST에 해당 IP를 추가해주세요 

ALLOWED_HOST를 * (모두 허용) 으로 해놨다면 패쓰해도 됩니다. 

[3] 해당 IP로 runserver를 해주세요

python manage.py runserver 192.***.**.**:8000

<플러터에서 해야할일>

위에서 구한 IP로 url를 호출하도록 해주시고

Android app 로컬 서버 접속 방법

에뮬레이터와 시뮬레이터에서 돌려봅니다. 

둘다 장고 로컬 서버로 연결이 잘되어서 로그 잘찍힙니다..!! 

Android app 로컬 서버 접속 방법

Reference

eunjin3786.tistory.com/124?category=843118

[Django] 튜토리얼 part 1 (1) - 프로젝트 만들기

Writing your first Django app, part 1 를 따라해본 것을 기록합니다 :-) DjangoStudy라는 폴더를 하나 만들었고 이 폴더에 들어와서 아래 명령어를 입력해줍니다. django-admin startproject mysite 그리..

eunjin3786.tistory.com

Android app 로컬 서버 접속 방법

junlab.tistory.com/169

안드로이드 에뮬레이터 에서 localhost 접속하기 (장고 서버)(Invalid HTTP_HOST 에러)

안녕하세요. 장고 기반 프레임워크 서버를 띄어 놓고 앱 개발을 하고 있습니다. 안드로이드 에뮬레이터는 안드로이스 스튜디오를 통해서 구동하였습니다. 장고 서버를 구동하면 웹 환경에서는

junlab.tistory.com

Android app 로컬 서버 접속 방법

suyou.tistory.com/167

안드로이드 에뮬레이터 localhost 접속 문제.

요즘 flutter로 앱을 개발하고 있는데. 스프링부트로 서버쪽을 API로 만들고 flutter 에서 앱을 만들어 API와 통신하는 형식으로 구성하였다. 그런데 안드로이드 에뮬레이터에서 http://localhost:8080을 접

suyou.tistory.com

Android app 로컬 서버 접속 방법